{:dynadoc.common/static? true, :dynadoc.common/type :cljs, :dynadoc.common/nses ({:var-syms [->game compile render], :type :cljs, :sym play-cljc.gl.core} {:var-syms [->camera ->entity ->image-entity], :type :cljs, :sym play-cljc.gl.entities-2d} {:var-syms [->camera ->entity], :type :cljs, :sym play-cljc.gl.entities-3d} {:var-syms [advanced-vertex-shader f-3d texture-fragment-shader f-2d f-texcoords f-3d-colors texture-vertex-shader advanced-fragment-shader cube-texcoords cube], :type :cljs, :sym play-cljc.gl.example-data} {:var-syms [bitmaps font-height baked-fonts bitmap-size load-font-cljs load-font-clj], :type :clj, :sym play-cljc.gl.example-fonts} {:var-syms [textures listen-for-mouse get-size get-width cos resize-example get-image get-height PI init-example game-loop sin], :type :cljs, :sym play-cljc.gl.example-utils} {:var-syms [rand-rects-example image-example translation-example rotation-example scale-example rotation-multi-example], :type :cljs, :sym play-cljc.gl.examples-2d} {:var-syms [scale-3d-example perspective-texture-meta-3d-example perspective-texture-data-3d-example perspective-3d-example rotation-3d-example perspective-texture-3d-example perspective-camera-target-3d-example translation-3d-example perspective-camera-3d-example perspective-animation-3d-example], :type :cljs, :sym play-cljc.gl.examples-3d} {:var-syms [crescent-3d-init balls-3d planes-3d-init planes-3d disc-3d-init advanced-render cubes-3d-init cubes-3d cylinder-3d torus-3d crescent-3d balls-3d-init shape-entity cylinder-3d-init disc-3d torus-3d-init], :type :cljs, :sym play-cljc.gl.examples-advanced} {:var-syms [load-roboto init], :type :cljs, :sym play-cljc.gl.examples-text} {:var-syms [->font-entity ->text-entity], :type :cljs, :sym play-cljc.gl.text} {:var-syms [create-buffer float-size create-program merge-attribute-opts set-array-buffer get-attribute-type default-opts get-uniform-type type->attribute-opts dissoc-instance-attr get-attribute-names assoc-instance-attr set-index-buffer], :type :cljs, :sym play-cljc.gl.utils} {:var-syms [->instanced-entity IInstance assoc dissoc IInstanced], :type :cljs, :sym play-cljc.instances} {:var-syms [mul-mat-fn inv-mat-fn], :type :clj, :sym play-cljc.macros-common} {:var-syms [math transform gl], :type :clj, :sym play-cljc.macros-java} {:var-syms [math transform gl], :type :clj, :sym play-cljc.macros-js} {:var-syms [inverse-matrix identity-matrix vector->array deg->rad transform-vector x-rotation-matrix-3d perspective-matrix-3d scaling-matrix z-rotation-matrix-3d rotation-matrix translation-matrix translation-matrix-3d projection-matrix multiply-matrices-3d inverse-matrix-3d vector->2d-array look-at-matrix multiply-matrices ortho-matrix-3d look-at-matrix-3d y-rotation-matrix-3d scaling-matrix-3d transpose-matrix-3d], :type :cljs, :sym play-cljc.math} {:var-syms [rect], :type :cljs, :sym play-cljc.primitives-2d} {:var-syms [plane sphere cube-face-indices cube cylinder crescent torus disc], :type :cljs, :sym play-cljc.primitives-3d} {:var-syms [->baked-font ->bitmap bitmap->data-uri], :type :clj, :sym play-cljc.text} {:var-syms [IRotate crop IInvert invert look-at ICamera transform color IScale scale IProject IColor ICrop project ITranslate parse rotate transform-entity camera translate ILookAt], :type :cljs, :sym play-cljc.transforms}), :dynadoc.common/vars [{:sym ITranslate, :meta {:doc nil}, :methods (translate)}], :dynadoc.common/ns-meta nil, :dynadoc.common/ns-sym play-cljc.transforms, :dynadoc.common/rel-path "../../", :dynadoc.common/hide-badge? true, :dynadoc.common/cljs-nses-and-vars {eval-soup.core ({:sym code->results, :meta {:doc "Evaluates each form, providing the results in a callback.\n  If any of the forms are strings, it will read them first.", :arglists [[forms cb] [forms cb {:keys [*current-ns *state custom-load timeout disable-timeout?], :or {*current-ns (atom (quote cljs.user)), *state *cljs-state, custom-load custom-load!, timeout 4000, disable-timeout? false}, :as opts}]]}, :source "(defn\n code->results\n \"Evaluates each form, providing the results in a callback.\\n  If any of the forms are strings, it will read them first.\"\n ([forms cb] (code->results forms cb {}))\n ([forms\n   cb\n   {:keys [*current-ns *state custom-load timeout disable-timeout?],\n    :or\n    {*current-ns (atom 'cljs.user),\n     *state *cljs-state,\n     custom-load custom-load!,\n     timeout 4000,\n     disable-timeout? false},\n    :as opts}]\n  (let\n   [forms\n    (mapv\n     (fn*\n      [p1__45469#]\n      (if\n       (string? p1__45469#)\n       (str->form @*current-ns p1__45469#)\n       p1__45469#))\n     forms)\n    init-forms\n    (vec\n     (concat\n      ['(ns cljs.user)]\n      (when-not\n       disable-timeout?\n       ['(def ps-last-time (atom 0))\n        '(defn\n          ps-reset-timeout!\n          []\n          (reset! ps-last-time (.getTime (js/Date.))))\n        '(defn\n          ps-check-for-timeout!\n          [timeout]\n          (when\n           (> (- (.getTime (js/Date.)) @ps-last-time) timeout)\n           (throw (js/Error. \"Execution timed out.\"))))])\n      ['(set! *print-err-fn* (fn [_])) (list 'ns @*current-ns)]))\n    timeout-cb\n    (fn\n     [results]\n     (eval-forms\n      (add-timeouts-if-necessary timeout forms results)\n      cb\n      *state\n      *current-ns\n      custom-load))\n    init-cb\n    (fn\n     [results]\n     (eval-forms\n      (if disable-timeout? forms (map wrap-macroexpand forms))\n      (if disable-timeout? cb timeout-cb)\n      *state\n      *current-ns\n      custom-load))]\n   (eval-forms init-forms init-cb *state *current-ns custom-load))))\n"}), cljs.compiler ({:sym protocol-prefix, :meta {:doc nil, :arglists ([psym])}, :source "(defn\n protocol-prefix\n [psym]\n (symbol\n  (str\n   (->\n    (str psym)\n    (.replace #?(:clj \\. :cljs (js/RegExp. \"\\\\.\" \"g\")) \\$)\n    (.replace \\/ \\$))\n   \"$\")))\n"} {:sym emit-arguments-to-array, :meta {:doc "Emit code that copies function arguments into an array starting at an index.\n  Returns name of var holding the array.", :arglists ([startslice])}, :source "(defn\n emit-arguments-to-array\n \"Emit code that copies function arguments into an array starting at an index.\\n  Returns name of var holding the array.\"\n [startslice]\n (assert (and (>= startslice 0) (integer? startslice)))\n (let\n  [mname (munge (gensym)) i (str mname \"__i\") a (str mname \"__a\")]\n  (emitln\n   \"var \"\n   i\n   \" = 0, \"\n   a\n   \" = new Array(arguments.length -  \"\n   startslice\n   \");\")\n  (emitln\n   \"while (\"\n   i\n   \" < \"\n   a\n   \".length) {\"\n   a\n   \"[\"\n   i\n   \"] = arguments[\"\n   i\n   \" + \"\n   startslice\n   \"]; ++\"\n   i\n   \";}\")\n  a))\n"} {:sym emit-js-object, :meta {:doc nil, :arglists ([items emit-js-object-val])}, :source "(defn\n emit-js-object\n [items emit-js-object-val]\n (emits \"({\")\n (when-let\n  [items (seq items)]\n  (let\n   [[[k v] & r] items]\n   (emits \"\\\"\" (name k) \"\\\": \" (emit-js-object-val v))\n   (doseq\n    [[k v] r]\n    (emits \", \\\"\" (name k) \"\\\": \" (emit-js-object-val v)))))\n (emits \"})\"))\n"} {:sym distinct-keys?, :meta {:doc nil, :arglists ([keys])}, :source "(defn\n distinct-keys?\n [keys]\n (let\n  [keys (map ana/unwrap-quote keys)]\n  (and\n   (every? (fn* [p1__45269#] (= (:op p1__45269#) :const)) keys)\n   (= (count (into #{} keys)) (count keys)))))\n"} {:sym munge, :meta {:doc nil, :arglists [[s] [s reserved]]}, :source "(defn\n munge\n ([s] (munge s js-reserved))\n ([s reserved]\n  (if\n   #?(:clj (map? s) :cljs (ana.impl/cljs-map? s))\n   (let\n    [name-var\n     s\n     name\n     (:name name-var)\n     field\n     (:field name-var)\n     info\n     (:info name-var)]\n    (if-not\n     (nil? (:fn-self-name info))\n     (fn-self-name s)\n     (let\n      [depth\n       (shadow-depth s)\n       code\n       (hash-scope s)\n       renamed\n       (get *lexical-renames* code)\n       name\n       (cond\n        (true? field)\n        (str \"self__.\" name)\n        (not (nil? renamed))\n        renamed\n        :else\n        name)\n       munged-name\n       (munge name reserved)]\n      (if\n       (or (true? field) (zero? depth))\n       munged-name\n       (symbol (str munged-name \"__$\" depth))))))\n   (let\n    [ss\n     (string/replace (str s) \"..\" \"_DOT__DOT_\")\n     ss\n     (string/replace\n      ss\n      #?(:clj #\"\\/(.)\" :cljs (js/RegExp. \"\\\\/(.)\"))\n      \".$1\")\n     rf\n     (munge-reserved reserved)\n     ss\n     (map rf (string/split ss #\"\\.\"))\n     ss\n     (string/join \".\" ss)\n     ms\n     #?(:clj (clojure.lang.Compiler/munge ss) :cljs ((var cljs.core/munge-str) ss))]\n    (if (symbol? s) (symbol ms) ms)))))\n"} {:sym get-define, :meta {:doc nil, :arglists ([mname jsdoc])}, :source "(defn\n get-define\n [mname jsdoc]\n (let\n  [opts (get @env/*compiler* :options)]\n  (and\n   (some\n    #?(:clj (fn* [p1__45274#] (.startsWith p1__45274# \"@define\")) :cljs (fn* [p1__45275#] (gstring/startsWith p1__45275# \"@define\")))\n    jsdoc)\n   opts\n   (= (:optimizations opts) :none)\n   (let\n    [define (get-in opts [:closure-defines (str mname)])]\n    (when (valid-define-value? define) (pr-str define))))))\n"} {:sym valid-define-value?, :meta {:doc nil, :arglists ([x])}, :source "(defn\n valid-define-value?\n [x]\n (or (string? x) (true? x) (false? x) (number? x)))\n"} {:sym emit-set, :meta {:doc nil, :arglists ([items comma-sep distinct-constants?])}, :source "(defn\n emit-set\n [items comma-sep distinct-constants?]\n (cond\n  (empty? items)\n  (emits \"cljs.core.PersistentHashSet.EMPTY\")\n  (distinct-constants? items)\n  (emits\n   \"new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, \"\n   (count items)\n   \", [\"\n   (comma-sep (interleave items (repeat \"null\")))\n   \"], null), null)\")\n  :else\n  (emits\n   \"cljs.core.PersistentHashSet.createAsIfByAssoc([\"\n   (comma-sep items)\n   \"])\")))\n"} {:sym emits-keyword, :meta {:doc nil, :arglists ([kw])}, :source "(defn\n emits-keyword\n [kw]\n (let\n  [ns (namespace kw) name (name kw)]\n  (emits \"new cljs.core.Keyword(\")\n  (emit-constant ns)\n  (emits \",\")\n  (emit-constant name)\n  (emits \",\")\n  (emit-constant (if ns (str ns \"/\" name) name))\n  (emits \",\")\n  (emit-constant (hash kw))\n  (emits \")\")))\n"} {:sym *lexical-renames*, :meta {}, :source "(def *lexical-renames* {})\n"} {:sym emit-let, :meta {:doc nil, :arglists ([{expr :body, :keys [bindings env]} is-loop])}, :source "(defn\n emit-let\n [{expr :body, :keys [bindings env]} is-loop]\n (let\n  [context (:context env)]\n  (when (= :expr context) (emits \"(function (){\"))\n  (binding\n   [*lexical-renames*\n    (into\n     *lexical-renames*\n     (when\n      (= :statement context)\n      (map\n       (fn\n        [binding]\n        (let\n         [name (:name binding)]\n         (vector (hash-scope binding) (gensym (str name \"-\")))))\n       bindings)))]\n   (doseq\n    [{:keys [init], :as binding} bindings]\n    (emits \"var \")\n    (emit binding)\n    (emitln \" = \" init \";\"))\n   (when is-loop (emitln \"while(true){\"))\n   (emits expr)\n   (when is-loop (emitln \"break;\") (emitln \"}\")))\n  (when (= :expr context) (emits \"})()\"))))\n"} {:sym sublib-select, :meta {:doc nil, :arglists ([sublib])}, :source "(defn\n sublib-select\n [sublib]\n (when\n  sublib\n  (let\n   [xs (string/split sublib #\"\\.\")]\n   (apply str (map (fn* [p1__45281#] (str \"['\" p1__45281# \"']\")) xs)))))\n"} {:sym all-distinct?, :meta {:doc nil, :arglists ([xs])}, :source "(defn all-distinct? [xs] (apply distinct? xs))\n"} {:sym cljs-reserved-file-names, :meta {}, :source "(def cljs-reserved-file-names #{\"deps.cljs\"})\n"} {:sym base-types, :meta {}, :source "(def\n base-types\n #{\"boolean\"\n   \"object\"\n   \"*\"\n   \"string\"\n   \"Object\"\n   \"Number\"\n   \"null\"\n   \"Date\"\n   \"number\"\n   \"String\"\n   \"RegExp\"\n   \"...*\"\n   \"Array\"\n   \"array\"\n   \"Boolean\"})\n"} {:sym resolve-type, :meta {:doc nil, :arglists ([env t])}, :source "(defn\n resolve-type\n [env t]\n (cond\n  (get base-types t)\n  t\n  (get mapped-types t)\n  (get mapped-types t)\n  #?(:clj (.startsWith t \"!\") :cljs (gstring/startsWith t \"!\"))\n  (str \"!\" (resolve-type env (subs t 1)))\n  #?(:clj (.startsWith t \"{\") :cljs (gstring/startsWith t \"{\"))\n  t\n  #?(:clj (.startsWith t \"function\") :cljs (gstring/startsWith t \"function\"))\n  (let\n   [idx\n    (.lastIndexOf t \":\")\n    [fstr rstr]\n    (if-not\n     (== -1 idx)\n     [(subs t 0 idx) (subs t (inc idx) (count t))]\n     [t nil])\n    ret-t\n    (when rstr (resolve-type env rstr))\n    axstr\n    (subs fstr 9 (dec (count fstr)))\n    args-ts\n    (when-not\n     (string/blank? axstr)\n     (map\n      (comp\n       (fn* [p1__45271#] (resolve-type env p1__45271#))\n       string/trim)\n      (string/split axstr #\",\")))]\n   (cond->\n    (str \"function(\" (string/join \",\" args-ts) \")\")\n    ret-t\n    (str \":\" ret-t)))\n  #?(:clj (.endsWith t \"=\") :cljs (gstring/endsWith t \"=\"))\n  (str (resolve-type env (subs t 0 (dec (count t)))) \"=\")\n  :else\n  (munge (str (:name (ana/resolve-var env (symbol t)))))))\n"} {:sym *source-map-data-gen-col*, :meta {}, :source "(def *source-map-data-gen-col* nil)\n"} {:sym emit-with-meta, :meta {:doc nil, :arglists ([expr meta])}, :source "(defn\n emit-with-meta\n [expr meta]\n (emits \"cljs.core.with_meta(\" expr \",\" meta \")\"))\n"} {:sym emit-variadic-fn-method, :meta {:doc nil, :arglists ([{expr :body, max-fixed-arity :fixed-arity, variadic :variadic?, :keys [type name params env recurs], :as f}])}, :source "(defn\n emit-variadic-fn-method\n [{expr :body,\n   max-fixed-arity :fixed-arity,\n   variadic :variadic?,\n   :keys [type name params env recurs],\n   :as f}]\n (emit-wrap\n  env\n  (let\n   [name\n    (or name (gensym))\n    mname\n    (munge name)\n    delegate-name\n    (str mname \"__delegate\")]\n   (emitln \"(function() { \")\n   (emits \"var \" delegate-name \" = function (\")\n   (doseq\n    [param params]\n    (emit param)\n    (when-not (= param (last params)) (emits \",\")))\n   (emitln \"){\")\n   (when type (emitln \"var self__ = this;\"))\n   (when recurs (emitln \"while(true){\"))\n   (emits expr)\n   (when recurs (emitln \"break;\") (emitln \"}\"))\n   (emitln \"};\")\n   (emitln\n    \"var \"\n    mname\n    \" = function (\"\n    (comma-sep\n     (if variadic (concat (butlast params) ['var_args]) params))\n    \"){\")\n   (when type (emitln \"var self__ = this;\"))\n   (when\n    variadic\n    (emits \"var \")\n    (emit (last params))\n    (emitln \" = null;\")\n    (emitln \"if (arguments.length > \" (dec (count params)) \") {\")\n    (let\n     [a (emit-arguments-to-array (dec (count params)))]\n     (emitln\n      \"  \"\n      (last params)\n      \" = new cljs.core.IndexedSeq(\"\n      a\n      \",0,null);\"))\n    (emitln \"} \"))\n   (emits \"return \" delegate-name \".call(this,\")\n   (doseq\n    [param params]\n    (emit param)\n    (when-not (= param (last params)) (emits \",\")))\n   (emits \");\")\n   (emitln \"};\")\n   (emitln mname \".cljs$lang$maxFixedArity = \" max-fixed-arity \";\")\n   (emits mname \".cljs$lang$applyTo = \")\n   (emit-apply-to (assoc f :name name))\n   (emitln \";\")\n   (emitln\n    mname\n    \".cljs$core$IFn$_invoke$arity$variadic = \"\n    delegate-name\n    \";\")\n   (emitln \"return \" mname \";\")\n   (emitln \"})()\"))))\n"} {:sym js-reserved, :meta {}, :source "(def js-reserved ana/js-reserved)\n"} {:sym *recompiled*, :meta {}, :source "(def *recompiled* nil)\n"} {:sym emits, :meta {:doc nil, :arglists [[] [a] [a b] [a b c] [a b c d] [a b c d e] [a b c d e & xs]]}, :source "(defn\n emits\n ([])\n ([a]\n  (cond\n   (nil? a)\n   nil\n   #?(:clj (map? a) :cljs (ana.impl/cljs-map? a))\n   (emit a)\n   #?(:clj (seq? a) :cljs (ana.impl/cljs-seq? a))\n   (apply emits a)\n   #?(:clj (fn? a) :cljs (js-fn? a))\n   (a)\n   :else\n   (let\n    [s (cond-> a (not (string? a)) .toString)]\n    #?(:clj (when-some [gen-col *source-map-data-gen-col*] (.addAndGet gen-col (.length s))) :cljs (when-some [sm-data *source-map-data*] (swap! sm-data update :gen-col (fn* [p1__45266#] (+ p1__45266# (.-length s))))))\n    #?(:clj (.write *out* s) :cljs (print s))))\n  nil)\n ([a b] (emits a) (emits b))\n ([a b c] (emits a) (emits b) (emits c))\n ([a b c d] (emits a) (emits b) (emits c) (emits d))\n ([a b c d e] (emits a) (emits b) (emits c) (emits d) (emits e))\n ([a b c d e & xs]\n  (emits a)\n  (emits b)\n  (emits c)\n  (emits d)\n  (emits e)\n  (doseq [x xs] (emits x))))\n"} {:sym emit-constant, :meta {:doc nil, :arglists ([v])}, :source "(defn\n emit-constant\n [v]\n (let\n  [m (ana/elide-irrelevant-meta (meta v))]\n  (if\n   (some? (seq m))\n   (emit-with-meta\n    (fn* [] (emit-constant-no-meta v))\n    (fn* [] (emit-constant-no-meta m)))\n   (emit-constant-no-meta v))))\n"} {:sym emit-dot, :meta {:doc nil, :arglists ([{:keys [target field method args env]}])}, :source "(defn\n emit-dot\n [{:keys [target field method args env]}]\n (emit-wrap\n  env\n  (if\n   field\n   (emits target \".\" (munge field #{}))\n   (emits target \".\" (munge method #{}) \"(\" (comma-sep args) \")\"))))\n"} {:sym emit-constants-table, :meta {:doc nil, :arglists ([table])}, :source "(defn\n emit-constants-table\n [table]\n (emitln \"goog.provide('\" (munge ana/constants-ns-sym) \"');\")\n (emitln \"goog.require('cljs.core');\")\n (doseq\n  [[sym value] table]\n  (let\n   [ns (namespace sym) name (name sym)]\n   (emits \"cljs.core.\" value \" = \")\n   (cond\n    (keyword? sym)\n    (emits-keyword sym)\n    (symbol? sym)\n    (emits-symbol sym)\n    :else\n    (throw\n     (ex-info\n      (str \"Cannot emit constant for type \" (type sym))\n      {:error :invalid-constant-type,\n       :clojure.error/phase :compilation})))\n   (emits \";\\n\"))))\n"} {:sym emit-list, :meta {:doc nil, :arglists ([items comma-sep])}, :source "(defn\n emit-list\n [items comma-sep]\n (if\n  (empty? items)\n  (emits \"cljs.core.List.EMPTY\")\n  (emits \"cljs.core.list(\" (comma-sep items) \")\")))\n"} {:sym get-first-ns-segment, :meta {:doc "Gets the part up to the first `.` of a namespace.\n   Returns the empty string for nil.\n   Returns the entire string if no `.` in namespace", :arglists ([ns])}, :source "(defn\n get-first-ns-segment\n \"Gets the part up to the first `.` of a namespace.\\n   Returns the empty string for nil.\\n   Returns the entire string if no `.` in namespace\"\n [ns]\n (let\n  [ns (str ns) idx (.indexOf ns \".\")]\n  (if (== -1 idx) ns (subs ns 0 idx))))\n"} {:sym emit-fn-params, :meta {:doc nil, :arglists ([params])}, :source "(defn\n emit-fn-params\n [params]\n (doseq\n  [param params]\n  (emit param)\n  (when-not (= param (last params)) (emits \",\"))))\n"} {:sym munge-reserved, :meta {:doc nil, :arglists ([reserved])}, :source "(defn\n munge-reserved\n [reserved]\n (fn [s] (if-not (nil? (get reserved s)) (str s \"$\") s)))\n"} {:sym fn-self-name, :meta {:doc nil, :arglists ([{:keys [name info], :as name-var}])}, :source "(defn\n fn-self-name\n [{:keys [name info], :as name-var}]\n (let\n  [name\n   (string/replace (str name) \"..\" \"_DOT__DOT_\")\n   {:keys [ns fn-scope]}\n   info\n   scoped-name\n   (apply\n    str\n    (interpose \"_$_\" (concat (map (comp str :name) fn-scope) [name])))]\n  (symbol\n   (munge (str (string/replace (str ns) \".\" \"$\") \"$\" scoped-name)))))\n"} {:sym load-libs, :meta {:doc nil, :arglists ([libs seen reloads deps ns-name])}, :source "(defn\n load-libs\n [libs seen reloads deps ns-name]\n (let\n  [{:keys [options js-dependency-index]}\n   @env/*compiler*\n   {:keys [target nodejs-rt optimizations]}\n   options\n   loaded-libs\n   (munge 'cljs.core.*loaded-libs*)\n   loaded-libs-temp\n   (munge (gensym 'cljs.core.*loaded-libs*))\n   [node-libs libs-to-load]\n   (let\n    [libs (remove (set (vals seen)) (filter (set (vals libs)) deps))]\n    (if\n     (= :nodejs target)\n     (let\n      [{node-libs true, libs-to-load false}\n       (group-by ana/node-module-dep? libs)]\n      [node-libs libs-to-load])\n     [nil libs]))\n   [goog-modules libs-to-load]\n   (let\n    [{goog-modules true, libs-to-load false}\n     (group-by ana/goog-module-dep? libs-to-load)]\n    [goog-modules libs-to-load])\n   global-exports-libs\n   (filter ana/dep-has-global-exports? libs-to-load)]\n  (when\n   (-> libs meta :reload-all)\n   (emitln\n    \"if(!COMPILED) \"\n    loaded-libs-temp\n    \" = \"\n    loaded-libs\n    \" || cljs.core.set([\\\"cljs.core\\\"]);\")\n   (emitln\n    \"if(!COMPILED) \"\n    loaded-libs\n    \" = cljs.core.set([\\\"cljs.core\\\"]);\"))\n  (doseq\n   [lib libs-to-load]\n   (cond\n    #?@(:clj [(ana/foreign-dep? lib) (when (and (= :none optimizations) (not (contains? options :modules))) (let [[lib _] (ana/lib&sublib lib)] (if nodejs-rt (let [ijs (get js-dependency-index (name lib))] (emitln \"cljs.core.load_file(\" (-> (io/file (util/output-directory options) (or (deps/-relative-path ijs) (util/relative-name (:url ijs)))) str escape-string wrap-in-double-quotes) \");\")) (emitln \"goog.require('\" (munge lib) \"');\"))))] :cljs [(and (ana/foreign-dep? lib) (not (keyword-identical? optimizations :none))) nil])\n    (or (-> libs meta :reload) (= (get reloads lib) :reload))\n    (emitln \"goog.require('\" (munge lib) \"', 'reload');\")\n    (or (-> libs meta :reload-all) (= (get reloads lib) :reload-all))\n    (emitln \"goog.require('\" (munge lib) \"', 'reload-all');\")\n    :else\n    (when-not\n     (= lib 'goog)\n     (emitln \"goog.require('\" (munge lib) \"');\"))))\n  (doseq\n   [lib node-libs]\n   (let\n    [[lib' sublib] (ana/lib&sublib lib)]\n    (emitln\n     (munge ns-name)\n     \".\"\n     (ana/munge-node-lib lib)\n     \" = require('\"\n     lib'\n     \"')\"\n     (sublib-select sublib)\n     \";\")))\n  (doseq\n   [lib goog-modules]\n   (let\n    [[lib' sublib] (ana/lib&sublib lib)]\n    (emitln \"goog.require('\" lib' \"');\")\n    (emitln \"goog.scope(function(){\")\n    (emitln\n     (munge ns-name)\n     \".\"\n     (ana/munge-goog-module-lib lib)\n     \" = goog.module.get('\"\n     lib'\n     \"')\"\n     (sublib-select sublib)\n     \";\")\n    (emitln \"});\")))\n  (doseq\n   [lib global-exports-libs]\n   (let\n    [{:keys [global-exports]}\n     (get js-dependency-index (name (-> lib ana/lib&sublib first)))]\n    (emit-global-export ns-name global-exports lib)))\n  (when\n   (-> libs meta :reload-all)\n   (emitln\n    \"if(!COMPILED) \"\n    loaded-libs\n    \" = cljs.core.into(\"\n    loaded-libs-temp\n    \", \"\n    loaded-libs\n    \");\"))))\n"} {:sym munge-param-return, :meta {:doc nil, :arglists ([env line])}, :source "(defn\n munge-param-return\n [env line]\n (cond\n  (re-find #\"@param\" line)\n  (let\n   [[p ts n & xs]\n    (map string/trim (string/split (string/trim line) #\" \"))]\n   (if\n    (and\n     (= \"@param\" p)\n     ts\n     #?(:clj (.startsWith ts \"{\") :cljs (gstring/startsWith ts \"{\")))\n    (string/join \" \" (concat [p (resolve-types env ts) (munge n)] xs))\n    line))\n  (re-find #\"@return\" line)\n  (let\n   [[p ts & xs]\n    (map string/trim (string/split (string/trim line) #\" \"))]\n   (if\n    (and\n     (= \"@return\" p)\n     ts\n     #?(:clj (.startsWith ts \"{\") :cljs (gstring/startsWith ts \"{\")))\n    (string/join \" \" (concat [p (resolve-types env ts)] xs))\n    line))\n  :else\n  line))\n"} {:sym emit-js-array, :meta {:doc nil, :arglists ([items comma-sep])}, :source "(defn emit-js-array [items comma-sep] (emits \"[\" (comma-sep items) \"]\"))\n"} {:sym find-ns-starts-with, :meta {:doc nil, :arglists ([needle])}, :source "(defn\n find-ns-starts-with\n [needle]\n (reduce-kv\n  (fn\n   [xs ns _]\n   (when (= needle (get-first-ns-segment ns)) (reduced needle)))\n  nil\n  (:cljs.analyzer/namespaces @env/*compiler*)))\n"} {:sym checking-types?, :meta {:doc nil, :arglists ([])}, :source "(defn\n checking-types?\n []\n (#{:warning :error}\n  (get-in @env/*compiler* [:options :closure-warnings :check-types])))\n"} {:sym emit-fn-method, :meta {:doc nil, :arglists ([{expr :body, :keys [type name params env recurs]}])}, :source "(defn\n emit-fn-method\n [{expr :body, :keys [type name params env recurs]}]\n (emit-wrap\n  env\n  (emits \"(function \" (munge name) \"(\")\n  (emit-fn-params params)\n  (emitln \"){\")\n  (when type (emitln \"var self__ = this;\"))\n  (when recurs (emitln \"while(true){\"))\n  (emits expr)\n  (when recurs (emitln \"break;\") (emitln \"}\"))\n  (emits \"})\")))\n"} {:sym emit-comment, :meta {:doc "Emit a nicely formatted comment string.", :arglists [[doc jsdoc] [env doc jsdoc]]}, :source "(defn\n emit-comment\n \"Emit a nicely formatted comment string.\"\n ([doc jsdoc] (emit-comment nil doc jsdoc))\n ([env doc jsdoc]\n  (let\n   [docs\n    (when doc [doc])\n    docs\n    (if jsdoc (concat docs jsdoc) docs)\n    docs\n    (remove nil? docs)]\n   (letfn\n    [(print-comment-lines\n      [e]\n      (let\n       [[x & ys]\n        (map\n         (fn*\n          [p1__45273#]\n          (if\n           (checking-types?)\n           (munge-param-return env p1__45273#)\n           p1__45273#))\n         (string/split-lines e))]\n       (emitln \" * \" (string/replace x \"*/\" \"* /\"))\n       (doseq\n        [next-line ys]\n        (emitln\n         \" * \"\n         (->\n          next-line\n          (string/replace #\"^   \" \"\")\n          (string/replace \"*/\" \"* /\"))))))]\n    (when\n     (seq docs)\n     (emitln \"/**\")\n     (doseq [e docs] (when e (print-comment-lines e)))\n     (emitln \" */\"))))))\n"} {:sym hash-scope, :meta {:doc nil, :arglists ([s])}, :source "(defn\n hash-scope\n [s]\n (hash-combine\n  #?(:clj (hash (:name s)) :cljs (-hash (:name s)))\n  (shadow-depth s)))\n"} {:sym emit-apply-to, :meta {:doc nil, :arglists ([{:keys [name params env]}])}, :source "(defn\n emit-apply-to\n [{:keys [name params env]}]\n (let\n  [arglist\n   (gensym \"arglist__\")\n   delegate-name\n   (str (munge name) \"__delegate\")]\n  (emitln \"(function (\" arglist \"){\")\n  (doseq\n   [[i param] (map-indexed vector (drop-last 2 params))]\n   (emits \"var \")\n   (emit param)\n   (emits \" = cljs.core.first(\")\n   (emitln arglist \");\")\n   (emitln arglist \" = cljs.core.next(\" arglist \");\"))\n  (if\n   (< 1 (count params))\n   (do\n    (emits \"var \")\n    (emit (last (butlast params)))\n    (emitln \" = cljs.core.first(\" arglist \");\")\n    (emits \"var \")\n    (emit (last params))\n    (emitln \" = cljs.core.rest(\" arglist \");\")\n    (emits \"return \" delegate-name \"(\")\n    (doseq\n     [param params]\n     (emit param)\n     (when-not (= param (last params)) (emits \",\")))\n    (emitln \");\"))\n   (do\n    (emits \"var \")\n    (emit (last params))\n    (emitln \" = cljs.core.seq(\" arglist \");\")\n    (emits \"return \" delegate-name \"(\")\n    (doseq\n     [param params]\n     (emit param)\n     (when-not (= param (last params)) (emits \",\")))\n    (emitln \");\")))\n  (emits \"})\")))\n"} {:sym emits-symbol, :meta {:doc nil, :arglists ([sym])}, :source "(defn\n emits-symbol\n [sym]\n (let\n  [ns\n   (namespace sym)\n   name\n   (name sym)\n   symstr\n   (if-not (nil? ns) (str ns \"/\" name) name)]\n  (emits \"new cljs.core.Symbol(\")\n  (emit-constant ns)\n  (emits \",\")\n  (emit-constant name)\n  (emits \",\")\n  (emit-constant symstr)\n  (emits \",\")\n  (emit-constant (hash sym))\n  (emits \",\")\n  (emit-constant nil)\n  (emits \")\")))\n"} {:sym falsey-constant?, :meta {:doc nil, :arglists ([expr])}, :source "(defn\n falsey-constant?\n [expr]\n (let\n  [{:keys [op form const-expr]} (ana/unwrap-quote expr)]\n  (or\n   (and (= op :const) (or (false? form) (nil? form)))\n   (and (some? const-expr) (falsey-constant? const-expr)))))\n"} {:sym emit-constants-comma-sep, :meta {:doc nil, :arglists ([cs])}, :source "(defn\n emit-constants-comma-sep\n [cs]\n (fn\n  []\n  (doall\n   (map-indexed\n    (fn [i m] (if (even? i) (emit-constant m) (emits m)))\n    (comma-sep cs)))))\n"} {:sym *source-map-data*, :meta {}, :source "(def *source-map-data* nil)\n"} {:sym emit-record-value, :meta {:doc nil, :arglists ([ns name items])}, :source "(defn\n emit-record-value\n [ns name items]\n (emits ns \".map__GT_\" name \"(\" items \")\"))\n"} {:sym emit-var, :meta {:doc nil, :arglists ([{:keys [info env form], :as ast}])}, :source "(defn\n emit-var\n [{:keys [info env form], :as ast}]\n (if-let\n  [const-expr (:const-expr ast)]\n  (emit (assoc const-expr :env env))\n  (let\n   [{:keys [options], :as cenv}\n    @env/*compiler*\n    var-name\n    (:name info)\n    info\n    (if\n     (= (namespace var-name) \"js\")\n     (let\n      [js-module-name\n       (get-in cenv [:js-module-index (name var-name) :name])]\n      (or js-module-name (name var-name)))\n     info)]\n   (if\n    (:binding-form? ast)\n    (emits (munge ast))\n    (when-not\n     (= :statement (:context env))\n     (let\n      [reserved\n       (cond->\n        js-reserved\n        (and\n         (es5>= (:language-out options))\n         (some? (namespace var-name)))\n        (set/difference ana/es5-allowed))\n       js-module\n       (get-in\n        cenv\n        [:js-namespaces (or (namespace var-name) (name var-name))])\n       info\n       (cond-> info (not= form 'js/-Infinity) (munge reserved))]\n      (emit-wrap\n       env\n       (case\n        (:module-type js-module)\n        :commonjs\n        (if\n         (namespace var-name)\n         (emits\n          (munge (namespace var-name) reserved)\n          \"[\\\"default\\\"].\"\n          (munge (name var-name) reserved))\n         (emits (munge (name var-name) reserved) \"[\\\"default\\\"]\"))\n        :es6\n        (if\n         (and (namespace var-name) (= \"default\" (name var-name)))\n         (emits (munge (namespace var-name) reserved) \"[\\\"default\\\"]\")\n         (emits info))\n        (emits info)))))))))\n"} {:sym mapped-types, :meta {}, :source "(def mapped-types {\"nil\" \"null\"})\n"} {:sym resolve-types, :meta {:doc nil, :arglists ([env ts])}, :source "(defn\n resolve-types\n [env ts]\n (let\n  [ts\n   (-> ts string/trim (subs 1 (dec (count ts))))\n   xs\n   (string/split ts #\"\\|\")]\n  (str\n   \"{\"\n   (string/join\n    \"|\"\n    (map (fn* [p1__45272#] (resolve-type env p1__45272#)) xs))\n   \"}\")))\n"} {:sym *inputs*, :meta {}, :source "(def *inputs* nil)\n"} {:sym emit-str, :meta {:doc nil, :arglists ([expr])}, :source "(defn emit-str [expr] (with-out-str (emit expr)))\n"} {:sym emit-map, :meta {:doc nil, :arglists ([keys vals comma-sep distinct-keys?])}, :source "(defn\n emit-map\n [keys vals comma-sep distinct-keys?]\n (cond\n  (zero? (count keys))\n  (emits \"cljs.core.PersistentArrayMap.EMPTY\")\n  (<= (count keys) array-map-threshold)\n  (if\n   (distinct-keys? keys)\n   (emits\n    \"new cljs.core.PersistentArrayMap(null, \"\n    (count keys)\n    \", [\"\n    (comma-sep (interleave keys vals))\n    \"], null)\")\n   (emits\n    \"cljs.core.PersistentArrayMap.createAsIfByAssoc([\"\n    (comma-sep (interleave keys vals))\n    \"])\"))\n  :else\n  (emits\n   \"cljs.core.PersistentHashMap.fromArrays([\"\n   (comma-sep keys)\n   \"],[\"\n   (comma-sep vals)\n   \"])\")))\n"} {:sym emit-vector, :meta {:doc nil, :arglists ([items comma-sep])}, :source "(defn\n emit-vector\n [items comma-sep]\n (if\n  (empty? items)\n  (emits \"cljs.core.PersistentVector.EMPTY\")\n  (let\n   [cnt (count items)]\n   (if\n    (< cnt 32)\n    (emits\n     \"new cljs.core.PersistentVector(null, \"\n     cnt\n     \", 5, cljs.core.PersistentVector.EMPTY_NODE, [\"\n     (comma-sep items)\n     \"], null)\")\n    (emits\n     \"cljs.core.PersistentVector.fromArray([\"\n     (comma-sep items)\n     \"], true)\")))))\n"} {:sym truthy-constant?, :meta {:doc nil, :arglists ([expr])}, :source "(defn\n truthy-constant?\n [expr]\n (let\n  [{:keys [op form const-expr]} (ana/unwrap-quote expr)]\n  (or\n   (and\n    (= op :const)\n    form\n    (not\n     (or\n      (and (string? form) (= form \"\"))\n      (and (number? form) (zero? form)))))\n   (and (some? const-expr) (truthy-constant? const-expr)))))\n"} {:sym emitln, :meta {:doc nil, :arglists [[] [a] [a b] [a b c] [a b c d] [a b c d e] [a b c d e & xs]]}, :source "(defn\n emitln\n ([] (_emitln))\n ([a] (emits a) (_emitln))\n ([a b] (emits a) (emits b) (_emitln))\n ([a b c] (emits a) (emits b) (emits c) (_emitln))\n ([a b c d] (emits a) (emits b) (emits c) (emits d) (_emitln))\n ([a b c d e]\n  (emits a)\n  (emits b)\n  (emits c)\n  (emits d)\n  (emits e)\n  (_emitln))\n ([a b c d e & xs]\n  (emits a)\n  (emits b)\n  (emits c)\n  (emits d)\n  (emits e)\n  (doseq [x xs] (emits x))\n  (_emitln)))\n"} {:sym emit, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n emit\n [ast]\n (when\n  *source-map-data*\n  (let\n   [{:keys [env]} ast]\n   (when\n    (:line env)\n    (let\n     [{:keys [line column]} env]\n     (swap!\n      *source-map-data*\n      (fn\n       [m]\n       (let\n        [minfo\n         (cond->\n          {:gcol\n           #?(:clj (.get *source-map-data-gen-col*) :cljs (:gen-col m)),\n           :gline (:gen-line m)}\n          (#{:binding :var :js-var :local} (:op ast))\n          (assoc :name (str (-> ast :info :name))))]\n        (update-in\n         m\n         [:source-map (dec line)]\n         (fnil\n          (fn\n           [line]\n           (update-in\n            line\n            [(if column (dec column) 0)]\n            (fnil (fn [column] (conj column minfo)) [])))\n          (sorted-map))))))))))\n (emit* ast))\n"} {:sym safe-test?, :meta {:doc nil, :arglists ([env e])}, :source "(defn\n safe-test?\n [env e]\n (let\n  [tag (ana/infer-tag env e)]\n  (or (#{'seq 'boolean} tag) (truthy-constant? e))))\n"} {:sym emit-externs, :meta {:doc nil, :arglists [[externs] [prefix externs top-level known-externs]]}, :source "(defn\n emit-externs\n ([externs]\n  (emit-externs\n   []\n   externs\n   (atom #{})\n   (when env/*compiler* (ana/get-externs))))\n ([prefix externs top-level known-externs]\n  (loop\n   [ks (seq (keys externs))]\n   (when\n    ks\n    (let\n     [k (first ks) [top :as prefix'] (conj prefix k)]\n     (when\n      (and (not= 'prototype k) (nil? (get-in known-externs prefix')))\n      (if-not\n       (or (contains? @top-level top) (contains? known-externs top))\n       (do\n        (emitln \"var \" (string/join \".\" (map munge prefix')) \";\")\n        (swap! top-level conj top))\n       (emitln (string/join \".\" (map munge prefix')) \";\")))\n     (let\n      [m (get externs k)]\n      (when-not\n       (empty? m)\n       (emit-externs prefix' m top-level known-externs))))\n    (recur (next ks))))))\n"} {:sym emit-global-export, :meta {:doc nil, :arglists ([ns-name global-exports lib])}, :source "(defn\n emit-global-export\n [ns-name global-exports lib]\n (let\n  [[lib' sublib] (ana/lib&sublib lib)]\n  (emitln\n   (munge ns-name)\n   \".\"\n   (ana/munge-global-export lib)\n   \" = goog.global\"\n   (->>\n    (string/split\n     (name\n      (or\n       (get global-exports (symbol lib'))\n       (get global-exports (name lib'))))\n     #\"\\.\")\n    (map (fn [prop] (str \"[\\\"\" prop \"\\\"]\")))\n    (apply str))\n   (sublib-select sublib)\n   \";\")))\n"} {:sym distinct-constants?, :meta {:doc nil, :arglists ([items])}, :source "(defn\n distinct-constants?\n [items]\n (let\n  [items (map ana/unwrap-quote items)]\n  (and\n   (every? (fn* [p1__45270#] (= (:op p1__45270#) :const)) items)\n   (= (count (into #{} items)) (count items)))))\n"} {:sym shadow-depth, :meta {:doc nil, :arglists ([s])}, :source "(defn\n shadow-depth\n [s]\n (let\n  [{:keys [name info]} s]\n  (loop\n   [d 0 {:keys [shadow]} info]\n   (cond\n    shadow\n    (recur (inc d) shadow)\n    (find-ns-starts-with (str name))\n    (inc d)\n    :else\n    d))))\n"}), cljs.source-map.base64 ({:sym chars64, :meta {}, :source "(def\n chars64\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\")\n"} {:sym char->int, :meta {}, :source "(def char->int (zipmap chars64 (range 0 64)))\n"} {:sym int->char, :meta {}, :source "(def int->char (zipmap (range 0 64) chars64))\n"} {:sym encode, :meta {:doc nil, :arglists ([n])}, :source "(defn\n encode\n [n]\n (let\n  [e (find int->char n)]\n  (if\n   e\n   (second e)\n   (throw (js/Error. (str \"Must be between 0 and 63: \" n))))))\n"} {:sym decode, :meta {:doc nil, :arglists ([c])}, :source "(defn\n decode\n [c]\n (let\n  [e (find char->int c)]\n  (if\n   e\n   (second e)\n   (throw (js/Error. (str \"Not a valid base 64 digit: \" c))))))\n"}), oakcljs.tools.reader.impl.utils ({:sym reader-conditional, :meta {:doc "Construct a data representation of a reader conditional.\n  If true, splicing? indicates read-cond-splicing.", :arglists ([form splicing?])}, :source "(defn\n reader-conditional\n \"Construct a data representation of a reader conditional.\\n  If true, splicing? indicates read-cond-splicing.\"\n [form splicing?]\n (ReaderConditional. splicing? form))\n"} {:sym whitespace?, :meta {:doc "Checks whether a given character is whitespace", :arglists ([ch])}, :source "(defn\n whitespace?\n \"Checks whether a given character is whitespace\"\n [ch]\n (when-not (nil? ch) (if (identical? ch \\,) true (.test ws-rx ch))))\n"} {:sym char-code, :meta {:doc nil, :arglists ([ch base])}, :source "(defn\n char-code\n [ch base]\n (let [code (js/parseInt ch base)] (if (js/isNaN code) -1 code)))\n"} {:sym last-id, :meta {}, :source "(def last-id (atom 0))\n"} {:sym char, :meta {:doc nil, :arglists ([x])}, :source "(defn char [x] (when-not (nil? x) (cljs.core/char x)))\n"} {:sym numeric?, :meta {:doc "Checks whether a given character is numeric", :arglists ([ch])}, :source "(defn\n numeric?\n \"Checks whether a given character is numeric\"\n [ch]\n (when-not (nil? ch) (gstring/isNumeric ch)))\n"} {:sym second', :meta {:doc nil, :arglists ([[a b]])}, :source "(defn second' [[a b]] (when-not a b))\n"} {:sym desugar-meta, :meta {:doc "Resolves syntactical sugar in metadata", :arglists ([f])}, :source "(defn\n desugar-meta\n \"Resolves syntactical sugar in metadata\"\n [f]\n (cond\n  (keyword? f)\n  {f true}\n  (symbol? f)\n  {:tag f}\n  (string? f)\n  {:tag f}\n  :else\n  f))\n"} {:sym next-id, :meta {:doc nil, :arglists ([])}, :source "(defn next-id [] (swap! last-id inc))\n"} {:sym ex-info?, :meta {:doc nil, :arglists ([ex])}, :source "(defn ex-info? [ex] (instance? cljs.core.ExceptionInfo ex))\n"} {:sym reader-conditional?, :meta {:doc "Return true if the value is the data representation of a reader conditional", :arglists ([value])}, :source "(defn\n reader-conditional?\n \"Return true if the value is the data representation of a reader conditional\"\n [value]\n (instance? ReaderConditional value))\n"} {:sym newline?, :meta {:doc "Checks whether the character is a newline", :arglists ([c])}, :source "(defn\n newline?\n \"Checks whether the character is a newline\"\n [c]\n (or (identical? \\newline c) (identical? \"\\n\" c) (nil? c)))\n"} {:sym namespace-keys, :meta {:doc nil, :arglists ([ns keys])}, :source "(defn\n namespace-keys\n [ns keys]\n (for\n  [key keys]\n  (if\n   (or (symbol? key) (keyword? key))\n   (let\n    [[key-ns key-name]\n     ((juxt namespace name) key)\n     ->key\n     (if (symbol? key) symbol keyword)]\n    (cond\n     (nil? key-ns)\n     (->key ns key-name)\n     (= \"_\" key-ns)\n     (->key key-name)\n     :else\n     key))\n   key)))\n"} {:sym ws-rx, :meta {}, :source "(def ws-rx #\"[\\s]\")\n"}), cljs.core.async.impl.channels ({:sym box, :meta {:doc nil, :arglists ([val])}, :source "(defn box [val] (reify cljs.core/IDeref (-deref [_] val)))\n"} {:sym put-active?, :meta {:doc nil, :arglists ([box])}, :source "(defn put-active? [box] (impl/active? (.-handler box)))\n"} {:sym MAX_DIRTY, :meta {}, :source "(def MAX_DIRTY 64)\n"} {:sym abort, :meta {:doc nil, :arglists ([this])}, :protocol MMC} {:sym MMC, :meta {:doc nil}, :methods (abort)} {:sym chan, :meta {:doc nil, :arglists [[buf] [buf xform] [buf xform exh]]}, :source "(defn\n chan\n ([buf] (chan buf nil))\n ([buf xform] (chan buf xform nil))\n ([buf xform exh]\n  (ManyToManyChannel.\n   (buffers/ring-buffer 32)\n   0\n   (buffers/ring-buffer 32)\n   0\n   buf\n   false\n   (let\n    [add! (if xform (xform impl/add!) impl/add!)]\n    (fn\n     ([buf] (try (add! buf) (catch :default t (handle buf exh t))))\n     ([buf val]\n      (try (add! buf val) (catch :default t (handle buf exh t)))))))))\n"}), cljs.core.async.impl.dispatch ({:sym tasks, :meta {}, :source "(def tasks (buffers/ring-buffer 32))\n"} {:sym running?, :meta {}, :source "(def running? false)\n"} {:sym queued?, :meta {}, :source "(def queued? false)\n"} {:sym TASK_BATCH_SIZE, :meta {}, :source "(def TASK_BATCH_SIZE 1024)\n"} {:sym process-messages, :meta {:doc nil, :arglists ([])}, :source "(defn\n process-messages\n []\n (set! running? true)\n (set! queued? false)\n (loop\n  [count 0]\n  (let\n   [m (.pop tasks)]\n   (when-not\n    (nil? m)\n    (m)\n    (when (< count TASK_BATCH_SIZE) (recur (inc count))))))\n (set! running? false)\n (when (> (.-length tasks) 0) (queue-dispatcher)))\n"} {:sym queue-dispatcher, :meta {:doc nil, :arglists ([])}, :source "(defn\n queue-dispatcher\n []\n (when-not\n  (and queued? running?)\n  (set! queued? true)\n  (goog.async.nextTick process-messages)))\n"} {:sym run, :meta {:doc nil, :arglists ([f])}, :source "(defn run [f] (.unbounded-unshift tasks f) (queue-dispatcher))\n"} {:sym queue-delay, :meta {:doc nil, :arglists ([f delay])}, :source "(defn queue-delay [f delay] (js/setTimeout f delay))\n"}), paren-soup.core ({:sym can-undo, :meta {:doc nil, :arglists ([editor])}, :source "(defn can-undo [editor] (can-undo? editor))\n"} {:sym show-error-message!, :meta {:doc "Shows a popup with an error message.", :arglists ([parent-elem event])}, :source "(defn\n show-error-message!\n \"Shows a popup with an error message.\"\n [parent-elem event]\n (let\n  [elem\n   (.-target event)\n   x\n   (.-clientX event)\n   y\n   (.-clientY event)\n   popup\n   (.createElement js/document \"div\")]\n  (set! (.-textContent popup) (-> elem .-dataset .-message))\n  (set! (.-top (.-style popup)) (str y \"px\"))\n  (set! (.-left (.-style popup)) (str x \"px\"))\n  (set! (.-className popup) \"error-text\")\n  (.appendChild parent-elem popup)))\n"} {:sym focused-text, :meta {:doc nil, :arglists ([])}, :source "(defn focused-text [] (some-> (dom/get-focused-form) .-textContent))\n"} {:sym selected-text, :meta {:doc nil, :arglists ([])}, :source "(defn\n selected-text\n []\n (let\n  [s (-> js/window .getSelection .toString)]\n  (when-not (empty? s) s)))\n"} {:sym can-redo?, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym can-redo, :meta {:doc nil, :arglists ([editor])}, :source "(defn can-redo [editor] (can-redo? editor))\n"} {:sym rainbow-delimiters, :meta {:doc "Returns a map of elements and class names.", :arglists [[parent level] [parent level m]]}, :source "(defn\n rainbow-delimiters\n \"Returns a map of elements and class names.\"\n ([parent level]\n  (persistent! (rainbow-delimiters parent level (transient {}))))\n ([parent level m]\n  (reduce\n   (fn\n    [m elem]\n    (let\n     [classes (.-classList elem)]\n     (cond\n      (.contains classes \"delimiter\")\n      (assoc! m elem (str \"rainbow-\" (mod level rainbow-count)))\n      (.contains classes \"collection\")\n      (rainbow-delimiters elem (inc level) m)\n      :else\n      m)))\n   m\n   (-> parent .-children array-seq))))\n"} {:sym up!, :meta {:doc nil, :arglists ([this alt?])}, :protocol Editor} {:sym refresh!, :meta {:doc nil, :arglists ([this state])}, :protocol Editor} {:sym undo!, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym refresh-cursor-position!, :meta {:doc nil, :arglists ([content {:keys [cropped-state], :as state}])}, :source "(defn\n refresh-cursor-position!\n [content {:keys [cropped-state], :as state}]\n (if\n  (some->> cropped-state :element (.contains content))\n  (some->\n   cropped-state\n   :element\n   (dom/set-cursor-position! (:cursor-position cropped-state)))\n  (if\n   (and (:selection-change? state) (:original-cursor-position state))\n   (dom/set-cursor-position! content (:original-cursor-position state))\n   (dom/set-cursor-position! content (:cursor-position state)))))\n"} {:sym key-name?, :meta {:doc "Returns true if the supplied key event involves the key(s) described by key-name.", :arglists ([event key-name])}, :source "(defn\n key-name?\n \"Returns true if the supplied key event involves the key(s) described by key-name.\"\n [event key-name]\n (let\n  [code (key-code event)]\n  (case\n   key-name\n   :undo-or-redo\n   (and (or (.-metaKey event) (.-ctrlKey event)) (= code 90))\n   :tab\n   (= code 9)\n   :enter\n   (= code 13)\n   :arrows\n   (contains? #{39 40 38 37} code)\n   :up-arrow\n   (= code 38)\n   :down-arrow\n   (= code 40)\n   :general\n   (not\n    (or\n     (contains? #{0 91 93 17 16 18} code)\n     (.-ctrlKey event)\n     (.-metaKey event)))\n   false)))\n"} {:sym eval, :meta {:doc nil, :arglists ([editor form callback])}, :source "(defn eval [editor form callback] (eval! editor form callback))\n"} {:sym channel?, :meta {}, :source "(def\n channel?\n (fn*\n  [p1__45034#]\n  (instance?\n   cljs.core.async.impl.channels.ManyToManyChannel\n   p1__45034#)))\n"} {:sym create-editor, :meta {:doc nil, :arglists ([ps content events-chan {:keys [history-limit append-limit compiler-fn console-callback disable-clj? edit-history focus? fix-indent-on-init?], :or {history-limit 100, append-limit 5000, focus? false}, :as opts}])}, :source "(defn\n create-editor\n [ps\n  content\n  events-chan\n  {:keys\n   [history-limit\n    append-limit\n    compiler-fn\n    console-callback\n    disable-clj?\n    edit-history\n    focus?\n    fix-indent-on-init?],\n   :or {history-limit 100, append-limit 5000, focus? false},\n   :as opts}]\n (let\n  [clj?\n   (not disable-clj?)\n   editor?\n   (not console-callback)\n   compiler-fn\n   (or compiler-fn (ir/create-compiler-fn opts))\n   *edit-history\n   (doto\n    (or edit-history (mwm/create-edit-history))\n    (swap! assoc :limit history-limit))\n   refresh-instarepl-with-delay!\n   (debounce refresh-instarepl! 300)\n   *console-history\n   (console/create-console-history)\n   *last-highlight-elem\n   (atom nil)\n   *allow-tab?\n   (atom false)\n   *first-refresh?\n   (atom true)]\n  (when-not\n   editor?\n   (set-validator!\n    *edit-history\n    (fn\n     [{:keys [current-state states]}]\n     (if-let\n      [state (get states current-state)]\n      (->\n       state\n       :cursor-position\n       first\n       (>= (console/get-console-start *console-history)))\n      true))))\n  (reify\n   Editor\n   (undo!\n    [this]\n    (some->> *edit-history mwm/undo! (refresh! this))\n    (dom/scroll-to-nearest-elem))\n   (redo!\n    [this]\n    (some->> *edit-history mwm/redo! (refresh! this))\n    (dom/scroll-to-nearest-elem))\n   (can-undo? [this] (mwm/can-undo? *edit-history))\n   (can-redo? [this] (mwm/can-redo? *edit-history))\n   (update-cursor-position!\n    [this position]\n    (try\n     (mwm/update-cursor-position! *edit-history position)\n     (catch\n      js/Error\n      _\n      (when\n       (apply = position)\n       (let\n        [start (console/get-console-start *console-history)]\n        (dom/set-cursor-position! content [start start])\n        (mwm/update-cursor-position! *edit-history [start start])))))\n    (update-highlight! content *last-highlight-elem))\n   (reset-edit-history!\n    [this start]\n    (console/update-console-start! *console-history start)\n    (dom/set-cursor-position! content [start start])\n    (let\n     [*new-edit-history\n      (mwm/create-edit-history)\n      state\n      {:cursor-position [start start], :text (.-textContent content)}]\n     (update-edit-history! *new-edit-history state)\n     (reset! *edit-history @*new-edit-history)))\n   (append-text!\n    [this text]\n    (let\n     [node\n      (.createTextNode js/document text)\n      _\n      (.appendChild content node)\n      all-text\n      (.-textContent content)\n      char-count\n      (max 0 (- (count all-text) append-limit))\n      new-all-text\n      (subs all-text char-count)\n      char-count\n      (if\n       (.endsWith new-all-text \"\\n\")\n       (dec (count new-all-text))\n       (count new-all-text))]\n     (when\n      (not= all-text new-all-text)\n      (set! (.-textContent content) new-all-text))\n     (reset-edit-history! this char-count)))\n   (enter!\n    [this]\n    (if\n     editor?\n     (.execCommand js/document \"insertHTML\" false \"\\n\")\n     (let\n      [text\n       (trimr (.-textContent content))\n       post-text\n       (subs text (console/get-console-start *console-history))]\n      (reset-edit-history! this (count text))\n      (console/update-console-history! *console-history post-text)\n      (console-callback post-text))))\n   (up!\n    [this alt?]\n    (if\n     alt?\n     (when-let\n      [elem (dom/get-focused-form)]\n      (when-let\n       [state (mwm/get-current-state *edit-history)]\n       (when-let\n        [elem\n         (if\n          (and\n           (:selection-change? state)\n           (= elem (some-> state :cropped-state :element)))\n          (dom/get-parent elem \"collection\")\n          elem)]\n        (let\n         [text (.-textContent elem) pos [0 (count text)]]\n         (dom/set-cursor-position! elem pos)\n         (update-edit-history!\n          *edit-history\n          (assoc\n           state\n           :selection-change?\n           true\n           :cropped-state\n           {:cursor-position pos, :text text, :element elem}))\n         (update-highlight! content *last-highlight-elem)))))\n     (when-not\n      editor?\n      (let\n       [text\n        (.-textContent content)\n        start\n        (console/get-console-start *console-history)\n        pre-text\n        (subs text 0 (console/get-console-start *console-history))\n        line\n        (or (console/up! *console-history) \"\")\n        state\n        {:cursor-position [start start],\n         :text (str pre-text line \\newline)}]\n       (->>\n        state\n        (update-edit-history! *edit-history)\n        (refresh! this))))))\n   (down!\n    [this alt?]\n    (if\n     alt?\n     (when\n      (:selection-change? (mwm/get-current-state *edit-history))\n      (undo! this))\n     (when-not\n      editor?\n      (let\n       [text\n        (.-textContent content)\n        start\n        (console/get-console-start *console-history)\n        pre-text\n        (subs text 0 start)\n        line\n        (or (console/down! *console-history) \"\")\n        state\n        {:cursor-position [start start],\n         :text (str pre-text line \\newline)}]\n       (->>\n        state\n        (update-edit-history! *edit-history)\n        (refresh! this))))))\n   (tab! [this] (when editor? (reset! *allow-tab? true)))\n   (refresh!\n    [this state]\n    (let\n     [state\n      (cond\n       (:selection-change? state)\n       state\n       editor?\n       (refresh-content! content state clj?)\n       :else\n       (refresh-console-content!\n        content\n        state\n        (console/get-console-start *console-history)\n        clj?))]\n     (when\n      (or focus? (not @*first-refresh?))\n      (refresh-cursor-position! content state))\n     (when clj? (refresh-errors-and-delimiters! content events-chan))\n     (when\n      editor?\n      (some->\n       (.querySelector ps \".numbers\")\n       (refresh-numbers! (count (re-seq #\"\\n\" (:text state)))))\n      (when\n       clj?\n       (when-let\n        [elem (.querySelector ps \".instarepl\")]\n        (when-not\n         (-> elem .-style .-display (= \"none\"))\n         (refresh-instarepl-with-delay!\n          elem\n          content\n          compiler-fn\n          append-limit)))))\n     (update-highlight! content *last-highlight-elem)))\n   (edit-and-refresh!\n    [this state]\n    (as->\n     state\n     $\n     (add-newline $)\n     (if\n      clj?\n      (add-parinfer\n       $\n       (console/get-console-start *console-history)\n       (if fix-indent-on-init? @*first-refresh? false))\n      $)\n     (update-edit-history! *edit-history $)\n     (refresh! this $)))\n   (initialize!\n    [this]\n    (when\n     editor?\n     (->> (init-state content false false) (edit-and-refresh! this)))\n    (reset! *first-refresh? false))\n   (refresh-after-key-event!\n    [this event]\n    (let\n     [tab?\n      (key-name? event :tab)\n      state\n      (init-state content editor? tab?)]\n     (when-not\n      (and tab? (not @*allow-tab?))\n      (edit-and-refresh!\n       this\n       (case\n        (key-code event)\n        13\n        (assoc state :indent-type :return)\n        9\n        (assoc\n         state\n         :indent-type\n         (if (.-shiftKey event) :back :forward))\n        (assoc state :indent-type :normal))))\n     (when tab? (reset! *allow-tab? false))))\n   (refresh-after-cut-paste!\n    [this]\n    (edit-and-refresh!\n     this\n     (assoc (init-state content false false) :indent-type :normal)))\n   (eval!\n    [this form callback]\n    (compiler-fn\n     [form]\n     (fn* [p1__45043#] (callback (first p1__45043#))))))))\n"} {:sym key-code, :meta {:doc nil, :arglists ([event])}, :source "(defn\n key-code\n [event]\n (let [code (.-keyCode event)] (if (pos? code) code (.-which event))))\n"} {:sym redo!, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym tab!, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym transient-map?, :meta {}, :source "(def\n transient-map?\n (fn*\n  [p1__45035#]\n  (or\n   (instance? cljs.core/TransientArrayMap p1__45035#)\n   (instance? cljs.core/TransientHashMap p1__45035#))))\n"} {:sym refresh-content-element!, :meta {:doc "Replaces a single node in the content, and siblings if necessary.", :arglists ([{:keys [element text], :as cropped-state}])}, :source "(defn\n refresh-content-element!\n \"Replaces a single node in the content, and siblings if necessary.\"\n [{:keys [element text], :as cropped-state}]\n (let\n  [parent\n   (.-parentElement element)\n   last-elem\n   (.-lastChild parent)\n   last-error\n   (loop\n    [current-elem last-elem]\n    (cond\n     (dom/error-node? current-elem)\n     current-elem\n     (or (nil? current-elem) (= element current-elem))\n     nil\n     :else\n     (recur (.-previousSibling current-elem))))\n   last-elem-to-refresh\n   (when\n    last-error\n    (loop\n     [current-elem last-error]\n     (if-let\n      [sibling (.-nextSibling current-elem)]\n      (if (dom/coll-node? sibling) current-elem (recur sibling))\n      current-elem)))\n   old-elems\n   (loop\n    [elems [element] current-elem element]\n    (cond\n     (= last-elem-to-refresh current-elem)\n     elems\n     (or (some? last-elem-to-refresh) (dom/text-node? current-elem))\n     (if-let\n      [sibling (.-nextSibling current-elem)]\n      (recur (conj elems sibling) sibling)\n      elems)\n     :else\n     elems))\n   _\n   (set! (.-textContent element) text)\n   text\n   (join (map (fn* [p1__45041#] (.-textContent p1__45041#)) old-elems))\n   temp-elem\n   (.createElement js/document \"span\")\n   _\n   (set! (.-innerHTML temp-elem) (hs/code->html text))\n   new-elems\n   (doall\n    (for\n     [i (range (-> temp-elem .-childNodes .-length))]\n     (-> temp-elem .-childNodes (.item i))))]\n  (doseq [new-elem new-elems] (.insertBefore parent new-elem element))\n  (doseq [old-elem old-elems] (.removeChild parent old-elem))\n  (assoc cropped-state :element (first new-elems))))\n"} {:sym elem?, :meta {}, :source "(def elem? (fn* [p1__45036#] (instance? js/Element p1__45036#)))\n"} {:sym enter!, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym append-text!, :meta {:doc nil, :arglists ([this text])}, :protocol Editor} {:sym line-numbers, :meta {:doc "Adds line numbers to the numbers.", :arglists ([line-count])}, :source "(defn\n line-numbers\n \"Adds line numbers to the numbers.\"\n [line-count]\n (join (for [i (range line-count)] (str \"<div>\" (inc i) \"</div>\"))))\n"} {:sym update-highlight!, :meta {:doc nil, :arglists ([content *last-elem])}, :source "(defn\n update-highlight!\n [content *last-elem]\n (when-let\n  [elem @*last-elem]\n  (set! (.-backgroundColor (.-style elem)) nil)\n  (reset! *last-elem nil))\n (when-let\n  [elem (dom/get-focused-form)]\n  (when-let\n   [color\n    (.getPropertyValue\n     (.getComputedStyle js/window (.-firstChild elem))\n     \"color\")]\n   (let\n    [new-color (-> color (replace #\"rgb\\(\" \"\") (replace #\"\\)\" \"\"))]\n    (set!\n     (.-backgroundColor (.-style elem))\n     (str \"rgba(\" new-color \", 0.1)\"))\n    (reset! *last-elem elem)))))\n"} {:sym init, :meta {:doc nil, :arglists ([ps opts])}, :source "(defn\n init\n [ps opts]\n (.init js/rangy)\n (let\n  [opts\n   (js->clj opts :keywordize-keys true)\n   content\n   (.querySelector ps \".content\")\n   events-chan\n   (chan)\n   editor\n   (create-editor ps content events-chan opts)]\n  (set! (.-spellcheck ps) false)\n  (when-not\n   content\n   (throw (js/Error. \"Can't find a div with class 'content'\")))\n  (initialize! editor)\n  (add-event-listeners! content events-chan opts)\n  (go\n   (while\n    true\n    (let\n     [event (<! events-chan)]\n     (when-not\n      (some->\n       opts\n       :before-change-callback\n       ((fn* [p1__45048#] (p1__45048# event))))\n      (case\n       (.-type event)\n       \"keydown\"\n       (cond\n        (and\n         (key-name? event :undo-or-redo)\n         (-> opts :disable-undo-redo? not))\n        (if (.-shiftKey event) (redo! editor) (undo! editor))\n        (key-name? event :enter)\n        (enter! editor)\n        (key-name? event :up-arrow)\n        (up! editor (.-altKey event))\n        (key-name? event :down-arrow)\n        (down! editor (.-altKey event))\n        (key-name? event :tab)\n        (tab! editor))\n       \"keyup\"\n       (cond\n        (key-name? event :arrows)\n        (update-cursor-position!\n         editor\n         (dom/get-cursor-position content false))\n        (key-name? event :general)\n        (refresh-after-key-event! editor event))\n       \"cut\"\n       (refresh-after-cut-paste! editor)\n       \"paste\"\n       (refresh-after-cut-paste! editor)\n       \"mouseup\"\n       (update-cursor-position!\n        editor\n        (dom/get-cursor-position\n         content\n         (some? (:console-callback opts))))\n       \"mouseenter\"\n       (show-error-message! ps event)\n       \"mouseleave\"\n       (hide-error-messages! ps)\n       nil)\n      (some->\n       opts\n       :change-callback\n       ((fn* [p1__45049#] (p1__45049# event))))))))\n  editor))\n"} {:sym can-undo?, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym refresh-content!, :meta {:doc nil, :arglists ([content state clj?])}, :source "(defn\n refresh-content!\n [content state clj?]\n (if-not\n  clj?\n  (do\n   (set! (.-innerHTML content) (hs/escape-html-str (:text state)))\n   state)\n  (if-let\n   [crop (some-> state :cropped-state refresh-content-element!)]\n   (if\n    (not= (:text state) (.-textContent content))\n    (refresh-content! content (dissoc state :cropped-state) clj?)\n    (assoc state :cropped-state crop))\n   (do\n    (set! (.-innerHTML content) (hs/code->html (:text state)))\n    (dissoc state :cropped-state)))))\n"} {:sym redo, :meta {:doc nil, :arglists ([editor])}, :source "(defn redo [editor] (redo! editor))\n"} {:sym debounce-function, :meta {:doc nil, :arglists ([f millis])}, :source "(defn debounce-function [f millis] (debounce f millis))\n"} {:sym refresh-instarepl!, :meta {:doc "Refreshes the InstaREPL.", :arglists ([instarepl content compiler-fn limit])}, :source "(defn\n refresh-instarepl!\n \"Refreshes the InstaREPL.\"\n [instarepl content compiler-fn limit]\n (let\n  [elems\n   (ir/get-collections content)\n   locations\n   (ir/elems->locations elems (.-offsetTop instarepl))\n   forms\n   (->>\n    elems\n    (map ir/collection->content)\n    (map (fn* [p1__45038#] (replace p1__45038# \\  \" \"))))]\n  (compiler-fn\n   forms\n   (fn\n    [results]\n    (when\n     (.-parentElement instarepl)\n     (set!\n      (.-innerHTML instarepl)\n      (ir/results->html results locations limit)))))))\n"} {:sym edit-and-refresh!, :meta {:doc nil, :arglists ([this state])}, :protocol Editor} {:sym rainbow-count, :meta {}, :source "(def rainbow-count 5)\n"} {:sym update-cursor-position!, :meta {:doc nil, :arglists ([this position])}, :protocol Editor} {:sym init-state, :meta {:doc "Returns the editor's state. If full-selection? is true, it will try to save\nthe entire selection rather than just the cursor position.", :arglists ([content crop? full-selection?])}, :source "(defn\n init-state\n \"Returns the editor's state. If full-selection? is true, it will try to save\\nthe entire selection rather than just the cursor position.\"\n [content crop? full-selection?]\n (let\n  [selection\n   (.getSelection js/rangy)\n   anchor\n   (.-anchorNode selection)\n   focus\n   (.-focusNode selection)\n   parent\n   (when (and anchor focus) (dom/common-ancestor anchor focus))\n   state\n   {:cursor-position\n    (-> content (dom/get-selection full-selection?) :cursor-position),\n    :text (.-textContent content)}]\n  (if-let\n   [cropped-selection (some-> parent (dom/get-selection false))]\n   (if\n    crop?\n    (assoc\n     state\n     :cropped-state\n     (assoc cropped-selection :text (.-textContent parent)))\n    state)\n   state)))\n"} {:sym eval!, :meta {:doc nil, :arglists ([this form callback])}, :protocol Editor} {:sym add-parinfer-after-console-start, :meta {:doc nil, :arglists ([state console-start-num])}, :source "(defn\n add-parinfer-after-console-start\n [state console-start-num]\n (let\n  [pre-text\n   (subs (:text state) 0 console-start-num)\n   post-text\n   (subs (:text state) console-start-num)\n   cleared-text\n   (str (replace pre-text #\"[^\\r^\\n]\" \" \") post-text)\n   temp-state\n   (assoc state :text cleared-text)\n   temp-state\n   (cp/add-parinfer :both temp-state)\n   new-text\n   (str pre-text (subs (:text temp-state) console-start-num))]\n  (assoc state :text new-text)))\n"} {:sym refresh-numbers!, :meta {:doc "Refreshes the line numbers.", :arglists ([numbers line-count])}, :source "(defn\n refresh-numbers!\n \"Refreshes the line numbers.\"\n [numbers line-count]\n (set! (.-innerHTML numbers) (line-numbers line-count)))\n"} {:sym refresh-after-cut-paste!, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym refresh-after-key-event!, :meta {:doc nil, :arglists ([this event])}, :protocol Editor} {:sym add-newline, :meta {:doc nil, :arglists ([{:keys [text], :as state}])}, :source "(defn\n add-newline\n [{:keys [text], :as state}]\n (if-not\n  (= \\newline (last text))\n  (assoc state :text (str text \\newline))\n  state))\n"} {:sym update-edit-history!, :meta {:doc nil, :arglists ([*edit-history state])}, :source "(defn\n update-edit-history!\n [*edit-history state]\n (try\n  (mwm/update-edit-history!\n   *edit-history\n   (if (:selection-change? state) state (dissoc state :cropped-state)))\n  state\n  (catch js/Error _ (mwm/get-current-state *edit-history))))\n"} {:sym refresh-console-content!, :meta {:doc nil, :arglists ([content state console-start-num clj?])}, :source "(defn\n refresh-console-content!\n [content state console-start-num clj?]\n (set!\n  (.-innerHTML content)\n  (if\n   clj?\n   (let\n    [pre-text\n     (subs (:text state) 0 console-start-num)\n     post-text\n     (subs (:text state) console-start-num)]\n    (str (hs/escape-html-str pre-text) (hs/code->html post-text)))\n   (hs/escape-html-str (:text state))))\n state)\n"} {:sym refresh-errors-and-delimiters!, :meta {:doc nil, :arglists ([content events-chan])}, :source "(defn\n refresh-errors-and-delimiters!\n [content events-chan]\n (hide-error-messages! (.-parentElement content))\n (doseq\n  [elem (-> content (.querySelectorAll \".error\") array-seq)]\n  (let\n   [show-error-icon!\n    (fn [elem] (set! (.-display (.-style elem)) \"inline-block\"))\n    show-error-icon!\n    (debounce show-error-icon! 1000)]\n   (show-error-icon! elem))\n  (events/listen\n   elem\n   \"mouseenter\"\n   (fn* [p1__45039#] (put! events-chan p1__45039#)))\n  (events/listen\n   elem\n   \"mouseleave\"\n   (fn* [p1__45040#] (put! events-chan p1__45040#))))\n (doseq\n  [[elem class-name] (rainbow-delimiters content -1)]\n  (.add (.-classList elem) class-name)))\n"} {:sym append-text, :meta {:doc nil, :arglists ([editor text])}, :source "(defn append-text [editor text] (append-text! editor text))\n"} {:sym prevent-default?, :meta {:doc nil, :arglists ([event opts])}, :source "(defn\n prevent-default?\n [event opts]\n (boolean\n  (or\n   (key-name? event :undo-or-redo)\n   (key-name? event :tab)\n   (key-name? event :enter)\n   (and\n    (or (:console-callback opts) (.-altKey event))\n    (or (key-name? event :up-arrow) (key-name? event :down-arrow))))))\n"} {:sym initialize!, :meta {:doc nil, :arglists ([this])}, :protocol Editor} {:sym init-all, :meta {:doc nil, :arglists ([& [opts]])}, :source "(defn\n init-all\n [& [opts]]\n (doseq\n  [ps (-> js/document (.querySelectorAll \".paren-soup\") array-seq)]\n  (init ps (or opts #js {}))))\n"} {:sym add-parinfer, :meta {:doc nil, :arglists ([state console-start-num fix-indent?])}, :source "(defn\n add-parinfer\n [state console-start-num fix-indent?]\n (let\n  [cropped-state\n   (:cropped-state state)\n   state\n   (cond->\n    state\n    fix-indent?\n    (assoc :indent-type :normal :cursor-position [0 0]))\n   indent-type\n   (:indent-type state)\n   state\n   (cond\n    (pos? console-start-num)\n    (add-parinfer-after-console-start state console-start-num)\n    indent-type\n    (cp/add-indent state)\n    :else\n    (cp/add-parinfer :paren state))]\n  (if\n   (and cropped-state indent-type)\n   (assoc\n    state\n    :cropped-state\n    (merge\n     cropped-state\n     (cp/add-indent (assoc cropped-state :indent-type indent-type))))\n   state)))\n"} {:sym undo, :meta {:doc nil, :arglists ([editor])}, :source "(defn undo [editor] (undo! editor))\n"} {:sym obj?, :meta {}, :source "(def obj? (fn* [p1__45037#] (instance? js/Object p1__45037#)))\n"} {:sym down!, :meta {:doc nil, :arglists ([this alt?])}, :protocol Editor} {:sym add-event-listeners!, :meta {:doc nil, :arglists ([content events-chan opts])}, :source "(defn\n add-event-listeners!\n [content events-chan opts]\n (doto\n  content\n  (events/removeAll)\n  (events/listen\n   \"keydown\"\n   (fn\n    [e]\n    (when (prevent-default? e opts) (.preventDefault e))\n    (put! events-chan e)))\n  (events/listen\n   \"keyup\"\n   (fn* [p1__45044#] (put! events-chan p1__45044#)))\n  (events/listen\n   \"cut\"\n   (fn* [p1__45045#] (put! events-chan p1__45045#)))\n  (events/listen\n   \"paste\"\n   (fn* [p1__45046#] (put! events-chan p1__45046#)))\n  (events/listen\n   \"mouseup\"\n   (fn* [p1__45047#] (put! events-chan p1__45047#)))))\n"} {:sym reset-edit-history!, :meta {:doc nil, :arglists ([this start])}, :protocol Editor} {:sym hide-error-messages!, :meta {:doc "Hides all error popups.", :arglists ([parent-elem])}, :source "(defn\n hide-error-messages!\n \"Hides all error popups.\"\n [parent-elem]\n (doseq\n  [elem (-> parent-elem (.querySelectorAll \".error-text\") array-seq)]\n  (.removeChild parent-elem elem)))\n"} {:sym Editor, :meta {:doc nil}, :methods (append-text! can-redo? can-undo? down! edit-and-refresh! enter! eval! initialize! redo! refresh! refresh-after-cut-paste! refresh-after-key-event! reset-edit-history! tab! undo! up! update-cursor-position!)}), cljs.tools.reader.impl.commons ({:sym match-number, :meta {:doc nil, :arglists ([s])}, :source "(defn\n match-number\n [s]\n (if\n  (matches? int-pattern s)\n  (match-int s)\n  (if\n   (matches? float-pattern s)\n   (match-float s)\n   (when (matches? ratio-pattern s) (match-ratio s)))))\n"} {:sym skip-line, :meta {:doc "Advances the reader to the end of a line. Returns the reader", :arglists ([reader])}, :source "(defn\n skip-line\n \"Advances the reader to the end of a line. Returns the reader\"\n [reader]\n (loop [] (when-not (newline? (read-char reader)) (recur)))\n reader)\n"} {:sym int-pattern, :meta {}, :source "(def\n int-pattern\n #\"^([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)(N)?$\")\n"} {:sym read-comment, :meta {:doc nil, :arglists ([rdr & _])}, :source "(defn read-comment [rdr & _] (skip-line rdr))\n"} {:sym parse-symbol, :meta {:doc "Parses a string into a vector of the namespace and symbol", :arglists ([token])}, :source "(defn\n parse-symbol\n \"Parses a string into a vector of the namespace and symbol\"\n [token]\n (when-not\n  (or\n   (identical? \"\" token)\n   (true? (.test #\":$\" token))\n   (true? (.test #\"^::\" token)))\n  (let\n   [ns-idx\n    (.indexOf token \"/\")\n    ns\n    (when (pos? ns-idx) (subs token 0 ns-idx))]\n   (if-not\n    (nil? ns)\n    (let\n     [ns-idx (inc ns-idx)]\n     (when-not\n      (== ns-idx (count token))\n      (let\n       [sym (subs token ns-idx)]\n       (when\n        (and\n         (not (numeric? (nth sym 0)))\n         (not (identical? \"\" sym))\n         (false? (.test #\":$\" ns))\n         (or (identical? sym \"/\") (== -1 (.indexOf sym \"/\"))))\n        [ns sym]))))\n    (when\n     (or (identical? token \"/\") (== -1 (.indexOf token \"/\")))\n     [nil token])))))\n"} {:sym number-literal?, :meta {:doc "Checks whether the reader is at the start of a number literal", :arglists ([reader initch])}, :source "(defn\n number-literal?\n \"Checks whether the reader is at the start of a number literal\"\n [reader initch]\n (or\n  (numeric? initch)\n  (and\n   (or (identical? \\+ initch) (identical? \\- initch))\n   (numeric? (peek-char reader)))))\n"} {:sym read-past, :meta {:doc "Read until first character that doesn't match pred, returning\n   char.", :arglists ([pred rdr])}, :source "(defn\n read-past\n \"Read until first character that doesn't match pred, returning\\n   char.\"\n [pred rdr]\n (loop [ch (read-char rdr)] (if (pred ch) (recur (read-char rdr)) ch)))\n"} {:sym float-pattern, :meta {}, :source "(def float-pattern #\"([-+]?[0-9]+(\\.[0-9]*)?([eE][-+]?[0-9]+)?)(M)?\")\n"} {:sym matches?, :meta {:doc nil, :arglists ([pattern s])}, :source "(defn\n matches?\n [pattern s]\n (let [[match] (re-find pattern s)] (identical? match s)))\n"} {:sym throwing-reader, :meta {:doc nil, :arglists ([msg])}, :source "(defn throwing-reader [msg] (fn [rdr & _] (reader-error rdr msg)))\n"} {:sym ratio-pattern, :meta {}, :source "(def ratio-pattern #\"([-+]?[0-9]+)/([0-9]+)\")\n"}), play-cljc.instances ({:sym ->instanced-entity, :meta {:doc "Returns an instanced version of the given entity.", :arglists ([entity])}, :protocol IInstance} {:sym IInstance, :meta {:doc nil}, :methods (->instanced-entity)} {:sym assoc, :meta {:doc "Adds an entity to the instanced entity at the given index.", :arglists ([instanced-entity i entity])}, :protocol IInstanced} {:sym dissoc, :meta {:doc "Removes an entity from the instanced entity at the given index.", :arglists ([instanced-entity i])}, :protocol IInstanced} {:sym IInstanced, :meta {:doc nil}, :methods (assoc dissoc)}), cljs.tools.reader.edn ({:sym read, :meta {:doc "Reads the first object from an IPushbackReader.\n   Returns the object read. If EOF, throws if eof-error? is true otherwise returns eof.\n   If no reader is provided, *in* will be used.\n\n   Reads data in the edn format (subset of Clojure data):\n   http://edn-format.org\n\n   cljs.tools.reader.edn/read doesn't depend on dynamic Vars, all configuration\n   is done by passing an opt map.\n\n   opts is a map that can include the following keys:\n   :eof - value to return on end-of-file. When not supplied, eof throws an exception.\n   :readers  - a map of tag symbols to data-reader functions to be considered before default-data-readers.\n              When not supplied, only the default-data-readers will be used.\n   :default - A function of two args, that will, if present and no reader is found for a tag,\n              be called with the tag and the value.", :arglists [[reader] [{:keys [eof], :as opts} reader] [reader eof-error? eof opts]]}, :source "(defn\n read\n \"Reads the first object from an IPushbackReader.\\n   Returns the object read. If EOF, throws if eof-error? is true otherwise returns eof.\\n   If no reader is provided, *in* will be used.\\n\\n   Reads data in the edn format (subset of Clojure data):\\n   http://edn-format.org\\n\\n   cljs.tools.reader.edn/read doesn't depend on dynamic Vars, all configuration\\n   is done by passing an opt map.\\n\\n   opts is a map that can include the following keys:\\n   :eof - value to return on end-of-file. When not supplied, eof throws an exception.\\n   :readers  - a map of tag symbols to data-reader functions to be considered before default-data-readers.\\n              When not supplied, only the default-data-readers will be used.\\n   :default - A function of two args, that will, if present and no reader is found for a tag,\\n              be called with the tag and the value.\"\n ([reader] (read {} reader))\n ([{:keys [eof], :as opts} reader]\n  (let\n   [eof-error? (not (contains? opts :eof))]\n   (read reader eof-error? eof opts)))\n ([reader eof-error? eof opts]\n  (try\n   (loop\n    []\n    (let\n     [ch (read-char reader)]\n     (cond\n      (whitespace? ch)\n      (recur)\n      (nil? ch)\n      (if eof-error? (err/throw-eof-error reader nil) eof)\n      (number-literal? reader ch)\n      (read-number reader ch opts)\n      :else\n      (let\n       [f (macros ch)]\n       (if\n        f\n        (let\n         [res (f reader ch opts)]\n         (if (identical? res reader) (recur) res))\n        (read-symbol reader ch))))))\n   (catch\n    js/Error\n    e\n    (if\n     (ex-info? e)\n     (let\n      [d (ex-data e)]\n      (if\n       (= :reader-exception (:type d))\n       (throw e)\n       (throw\n        (ex-info\n         (.-message e)\n         (merge\n          {:type :reader-exception}\n          d\n          (if\n           (indexing-reader? reader)\n           {:line (get-line-number reader),\n            :column (get-column-number reader),\n            :file (get-file-name reader)}))\n         e))))\n     (throw\n      (ex-info\n       (.-message e)\n       (merge\n        {:type :reader-exception}\n        (if\n         (indexing-reader? reader)\n         {:line (get-line-number reader),\n          :column (get-column-number reader),\n          :file (get-file-name reader)}))\n       e)))))))\n"} {:sym read-string, :meta {:doc "Reads one object from the string s.\n   Returns nil when s is nil or empty.\n\n   Reads data in the edn format (subset of Clojure data):\n   http://edn-format.org\n\n   opts is a map as per cljs.tools.reader.edn/read", :arglists [[s] [opts s]]}, :source "(defn\n read-string\n \"Reads one object from the string s.\\n   Returns nil when s is nil or empty.\\n\\n   Reads data in the edn format (subset of Clojure data):\\n   http://edn-format.org\\n\\n   opts is a map as per cljs.tools.reader.edn/read\"\n ([s] (read-string {:eof nil} s))\n ([opts s]\n  (when (and s (not= s \"\")) (read opts (string-push-back-reader s)))))\n"}), cljs.source-map.base64-vlq ({:sym encode-val, :meta {:doc nil, :arglists ([n])}, :source "(defn\n encode-val\n [n]\n (let\n  [sb (StringBuffer.) vlq (to-vlq-signed n)]\n  (loop\n   [digit\n    (bit-and vlq vlq-base-mask)\n    vlq\n    (bit-shift-right-zero-fill vlq vlq-base-shift)]\n   (if\n    (pos? vlq)\n    (let\n     [digit (bit-or digit vlq-continuation-bit)]\n     (.append sb (base64/encode digit))\n     (recur\n      (bit-and vlq vlq-base-mask)\n      (bit-shift-right-zero-fill vlq vlq-base-shift)))\n    (.append sb (base64/encode digit))))\n  (str sb)))\n"} {:sym encode, :meta {:doc nil, :arglists ([v])}, :source "(defn encode [v] (apply str (map encode-val v)))\n"} {:sym vlq-continuation-bit, :meta {}, :source "(def vlq-continuation-bit vlq-base)\n"} {:sym vlq-base-mask, :meta {}, :source "(def vlq-base-mask (dec vlq-base))\n"} {:sym decode, :meta {:doc nil, :arglists ([s])}, :source "(defn\n decode\n [s]\n (let\n  [l (.-length s)]\n  (loop\n   [i 0 result 0 shift 0]\n   (when\n    (>= i l)\n    (throw (js/Error. \"Expected more digits in base 64 VLQ value.\")))\n   (let\n    [digit (base64/decode (.charAt s i))]\n    (let\n     [i\n      (inc i)\n      continuation?\n      (pos? (bit-and digit vlq-continuation-bit))\n      digit\n      (bit-and digit vlq-base-mask)\n      result\n      (+ result (bit-shift-left digit shift))\n      shift\n      (+ shift vlq-base-shift)]\n     (if\n      continuation?\n      (recur i result shift)\n      (lazy-seq\n       (cons\n        (from-vlq-signed result)\n        (let\n         [s (.substring s i)]\n         (when-not (string/blank? s) (decode s)))))))))))\n"} {:sym vlq-base-shift, :meta {}, :source "(def vlq-base-shift 5)\n"} {:sym from-vlq-signed, :meta {:doc nil, :arglists ([v])}, :source "(defn\n from-vlq-signed\n [v]\n (let\n  [neg? (= (bit-and v 1) 1) shifted (bit-shift-right v 1)]\n  (if neg? (- shifted) shifted)))\n"} {:sym to-vlq-signed, :meta {:doc nil, :arglists ([v])}, :source "(defn\n to-vlq-signed\n [v]\n (if\n  (neg? v)\n  (inc (bit-shift-left (- v) 1))\n  (+ (bit-shift-left v 1) 0)))\n"} {:sym vlq-base, :meta {}, :source "(def vlq-base (bit-shift-left 1 vlq-base-shift))\n"}), expound.ansi ({:sym *print-styles*, :meta {}, :source "(def\n *print-styles*\n {:good-key [:green],\n  :warning-key [:bold],\n  :correct-key [:green],\n  :highlight [:bold],\n  :focus-path [:magenta],\n  :bad-value [:red],\n  :footer [:cyan],\n  :header [:cyan],\n  :good-pred [:green],\n  :good [:green],\n  :focus-key [:bold],\n  :pointer [:magenta],\n  :bad [:red],\n  :error-key [:red],\n  :none [:none],\n  :message [:magenta]})\n"} {:sym *enable-color*, :meta {}, :source "(def *enable-color* false)\n"} {:sym sgr-code, :meta {}, :source "(def\n sgr-code\n \"Map of symbols to numeric SGR (select graphic rendition) codes.\"\n {:bold 1,\n  :blink 5,\n  :white 37,\n  :yellow 33,\n  :bg-red 41,\n  :bg-cyan 46,\n  :green 32,\n  :bg-green 42,\n  :fg-reset 39,\n  :cyan 36,\n  :bg-black 40,\n  :fg-256 38,\n  :underline 3,\n  :bg-magenta 45,\n  :strike 9,\n  :bg-yellow 43,\n  :hidden 8,\n  :red 31,\n  :blue 34,\n  :bg-white 47,\n  :bg-256 48,\n  :magenta 35,\n  :bg-blue 44,\n  :bg-reset 49,\n  :none 0,\n  :reverse 7,\n  :black 30})\n"} {:sym escape, :meta {:doc "Returns an ANSI escope string which will enact the given SGR codes.", :arglists ([& codes])}, :source "(defn\n escape\n \"Returns an ANSI escope string which will enact the given SGR codes.\"\n [& codes]\n (esc codes))\n"} {:sym color, :meta {:doc nil, :arglists ([s & styles])}, :source "(defn\n color\n [s & styles]\n (if *enable-color* (apply sgr s (resolve-styles styles)) s))\n"} {:sym esc, :meta {:doc "Returns an ANSI escope string which will apply the given collection of SGR\n  codes.", :arglists ([codes])}, :source "(defn\n esc\n \"Returns an ANSI escope string which will apply the given collection of SGR\\n  codes.\"\n [codes]\n (let\n  [codes (map sgr-code codes codes) codes (string/join \\; codes)]\n  (str \\ \\[ codes \\m)))\n"} {:sym sgr, :meta {:doc "Wraps the given string with SGR escapes to apply the given codes, then reset\n  the graphics.", :arglists ([string & codes])}, :source "(defn\n sgr\n \"Wraps the given string with SGR escapes to apply the given codes, then reset\\n  the graphics.\"\n [string & codes]\n (str (esc codes) string (escape :none)))\n"} {:sym ansi-code?, :meta {}, :source "(def ansi-code? sgr-code)\n"} {:sym strip, :meta {:doc "Removes color codes from the given string.", :arglists ([string])}, :source "(defn\n strip\n \"Removes color codes from the given string.\"\n [string]\n (string/replace string #\"\\u001b\\[[0-9;]*[mK]\" \"\"))\n"} {:sym resolve-styles, :meta {:doc nil, :arglists ([styles])}, :source "(defn\n resolve-styles\n [styles]\n (if-let\n  [res\n   (not-empty\n    (mapcat\n     (fn*\n      [p1__45021#]\n      (or\n       (when-let [res (*print-styles* p1__45021#)] res)\n       [p1__45021#]))\n     styles))]\n  res\n  [:bold]))\n"}), expound.printer ({:sym missing-key, :meta {:doc nil, :arglists ([form])}, :source "(defn\n missing-key\n [form]\n (let\n  [[branch match]\n   (s/conform :expound.spec/contains-key-pred (nth form 2))]\n  (case\n   branch\n   :simple\n   (:kw match)\n   :compound\n   (summarize-key-clause [branch match]))))\n"} {:sym indent-level, :meta {}, :source "(def indent-level 2)\n"} {:sym max-spec-str-width, :meta {}, :source "(def max-spec-str-width 100)\n"} {:sym anon-fn-str, :meta {}, :source "(def anon-fn-str \"<anonymous function>\")\n"} {:sym print-spec-keys, :meta {:doc nil, :arglists ([problems])}, :source "(defn\n print-spec-keys\n [problems]\n (let\n  [keys\n   (keywords\n    (map\n     (fn* [p1__45017#] (missing-key (:pred p1__45017#)))\n     problems))]\n  (if\n   (and\n    (empty? (:expound/via (first problems)))\n    (some simple-keyword? keys))\n   nil\n   (->>\n    (key->spec keys problems)\n    (map (fn [[k v]] {\"key\" k, \"spec\" (simple-spec-or-name v)}))\n    (sort-by (fn* [p1__45018#] (get p1__45018# \"key\")))\n    (pprint/print-table [\"key\" \"spec\"])\n    with-out-str\n    string/trim))))\n"} {:sym singleton?, :meta {:doc nil, :arglists ([xs])}, :source "(defn singleton? [xs] (= 1 (count xs)))\n"} {:sym indent, :meta {:doc "Given an potentially multi-line string, returns that string indented by\n   'indent-level' spaces. Optionally, can indent first line and other lines\n   different amounts.", :arglists [[s] [indent-level s] [first-line-indent rest-lines-indent s]]}, :source "(defn\n indent\n \"Given an potentially multi-line string, returns that string indented by\\n   'indent-level' spaces. Optionally, can indent first line and other lines\\n   different amounts.\"\n ([s] (indent indent-level s))\n ([indent-level s] (indent indent-level indent-level s))\n ([first-line-indent rest-lines-indent s]\n  (let\n   [[line & lines] (string/split-lines (str s))]\n   (->>\n    lines\n    (map\n     (fn*\n      [p1__45020#]\n      (str (apply str (repeat rest-lines-indent \" \")) p1__45020#)))\n    (into [(str (apply str (repeat first-line-indent \" \")) line)])\n    (string/join \"\\n\")))))\n"} {:sym simple-spec-or-name, :meta {:doc nil, :arglists ([spec-name])}, :source "(defn\n simple-spec-or-name\n [spec-name]\n (let\n  [spec-str\n   (elide-spec-ns (elide-core-ns (pr-str (expand-spec spec-name))))]\n  (if\n   (or\n    (< max-spec-str-width (count spec-str))\n    (string/includes? spec-str \"\\n\"))\n   spec-name\n   spec-str)))\n"} {:sym specs-from-form, :meta {:doc nil, :arglists ([via])}, :source "(defn\n specs-from-form\n [via]\n (let\n  [form\n   (some-> via last s/form)\n   conformed\n   (s/conform :expound.spec/key-spec form)]\n  (if\n   (and form (not= :clojure.spec.alpha/invalid conformed))\n   (->>\n    (:clauses conformed)\n    (map :specs)\n    (tree-seq coll? seq)\n    (filter (fn [x] (and (vector? x) (= :kw (first x)))))\n    (map second)\n    set)\n   #{})))\n"} {:sym elide-spec-ns, :meta {:doc nil, :arglists ([s])}, :source "(defn\n elide-spec-ns\n [s]\n #?(:cljs (-> s (string/replace \"cljs.spec.alpha/\" \"\") (string/replace \"cljs/spec/alpha\" \"\")) :clj (string/replace s \"clojure.spec.alpha/\" \"\")))\n"} {:sym key->spec, :meta {:doc nil, :arglists ([keys problems])}, :source "(defn\n key->spec\n [keys problems]\n (doseq\n  [p problems]\n  (assert (some? (:expound/via p)) util/assert-message))\n (let\n  [vias\n   (map :expound/via problems)\n   specs\n   (if\n    (every? qualified-keyword? keys)\n    keys\n    (if-let\n     [specs (apply set/union (map specs-from-form vias))]\n     specs\n     keys))]\n  (reduce\n   (fn\n    [m k]\n    (assoc\n     m\n     k\n     (if\n      (qualified-keyword? k)\n      k\n      (->>\n       specs\n       (filter (fn* [p1__45016#] (= (name k) (name p1__45016#))))\n       first))))\n   {}\n   keys)))\n"} {:sym elide-core-ns, :meta {:doc nil, :arglists ([s])}, :source "(defn\n elide-core-ns\n [s]\n #?(:cljs (-> s (string/replace \"cljs.core/\" \"\") (string/replace \"cljs/core/\" \"\")) :clj (string/replace s \"clojure.core/\" \"\")))\n"} {:sym print-missing-keys, :meta {:doc nil, :arglists ([problems])}, :source "(defn\n print-missing-keys\n [problems]\n (let\n  [keys-clauses (distinct (map (comp missing-key :pred) problems))]\n  (if\n   (every? keyword? keys-clauses)\n   (string/join\n    \", \"\n    (map\n     (fn* [p1__45019#] (ansi/color p1__45019# :correct-key))\n     (sort keys-clauses)))\n   (str\n    \"\\n\\n\"\n    (ansi/color\n     (pprint-str\n      (if\n       (singleton? keys-clauses)\n       (first keys-clauses)\n       (apply list 'and keys-clauses)))\n     :correct-key)))))\n"} {:sym expand-spec, :meta {:doc nil, :arglists ([spec])}, :source "(defn\n expand-spec\n [spec]\n (let\n  [!seen-specs (atom #{})]\n  (walk/prewalk\n   (fn\n    [x]\n    (if-not\n     (qualified-keyword? x)\n     x\n     (if-let\n      [sp (s/get-spec x)]\n      (if-not\n       (contains? @!seen-specs x)\n       (do (swap! !seen-specs conj x) (s/form sp))\n       x)\n      x)))\n   (if (s/get-spec spec) (s/form spec) spec))))\n"} {:sym keywords, :meta {:doc nil, :arglists ([form])}, :source "(defn keywords [form] (->> form (tree-seq coll? seq) (filter keyword?)))\n"} {:sym no-trailing-whitespace, :meta {:doc "Given an potentially multi-line string, returns that string with all\n  trailing whitespace removed.", :arglists ([s])}, :source "(defn\n no-trailing-whitespace\n \"Given an potentially multi-line string, returns that string with all\\n  trailing whitespace removed.\"\n [s]\n (let\n  [s' (->> s string/split-lines (map string/trimr) (string/join \"\\n\"))]\n  (if (= \\newline (last s)) (str s' \"\\n\") s')))\n"} {:sym pprint-str, :meta {:doc "Returns the pretty-printed string", :arglists ([x])}, :source "(defn\n pprint-str\n \"Returns the pretty-printed string\"\n [x]\n (if (fn? x) (pprint-fn x) (pprint/write x :stream nil)))\n"} {:sym summarize-key-clause, :meta {:doc nil, :arglists ([[branch match]])}, :source "(defn\n summarize-key-clause\n [[branch match]]\n (case\n  branch\n  :simple\n  (:kw match)\n  :compound\n  (apply\n   list\n   (symbol (name (:op match)))\n   (map summarize-key-clause (:clauses match)))))\n"} {:sym pprint-fn, :meta {:doc nil, :arglists ([f])}, :source "(defn\n pprint-fn\n [f]\n (->\n  #?(:clj (let [[_ ns-n f-n] (re-matches #\"(.*)\\$(.*?)(__[0-9]+)?\" (str f))] (if (re-matches #\"^fn__\\d+\\@.*$\" f-n) anon-fn-str (str (main/demunge ns-n) \"/\" (main/demunge f-n)))) :cljs (let [fn-parts (string/split (second (re-find #\"object\\[([^\\( \\]]+).*(\\n|\\])?\" (pr-str f))) #\"\\$\") ns-n (string/join \".\" (butlast fn-parts)) fn-n (last fn-parts)] (if (empty? ns-n) anon-fn-str (str (demunge-str ns-n) \"/\" (demunge-str fn-n)))))\n  (elide-core-ns)\n  (string/replace #\"--\\d+\" \"\")\n  (string/replace #\"@[a-zA-Z0-9]+\" \"\")))\n"}), html-soup.core ({:sym line->segments, :meta {:doc "Splits a line into segments where tags are supposed to appear.", :arglists ([line tags-for-line escape?])}, :source "(defn\n line->segments\n \"Splits a line into segments where tags are supposed to appear.\"\n [line tags-for-line escape?]\n (let\n  [columns\n   (set (map :column tags-for-line))\n   escape-html-char\n   (if escape? escape-html-char identity)]\n  (loop\n   [i 0 segments (transient []) current-segment (transient [])]\n   (if-let\n    [c (some-> line (get i) escape-html-char)]\n    (if\n     (contains? columns (inc i))\n     (recur\n      (inc i)\n      (conj! segments (persistent! current-segment))\n      (transient [c]))\n     (recur (inc i) segments (conj! current-segment c)))\n    (->>\n     (persistent! current-segment)\n     (conj! segments)\n     persistent!\n     (map str/join))))))\n"} {:sym tag->hiccup, :meta {:doc "Returns a Hiccup-compatible data structure for the given tag description.", :arglists ([tag])}, :source "(defn\n tag->hiccup\n \"Returns a Hiccup-compatible data structure for the given tag description.\"\n [tag]\n (cond\n  (:delimiter? tag)\n  [:span {:class \"delimiter\"}]\n  (:error? tag)\n  [:span {:class \"error\", :data-message (:message tag)}]\n  (:begin? tag)\n  (let\n   [value (:value tag)]\n   (cond\n    (symbol? value)\n    [:span {:class \"symbol\"}]\n    (list? value)\n    [:span {:class \"collection list\"}]\n    (vector? value)\n    [:span {:class \"collection vector\"}]\n    (map? value)\n    [:span {:class \"collection map\"}]\n    (set? value)\n    [:span {:class \"collection set\"}]\n    (number? value)\n    [:span {:class \"number\"}]\n    (string? value)\n    [:span {:class \"string\"}]\n    (keyword? value)\n    [:span {:class \"keyword\"}]\n    (nil? value)\n    [:span {:class \"nil\"}]\n    (contains? #{true false} value)\n    [:span {:class \"boolean\"}]\n    :else\n    [:span]))\n  (:end? tag)\n  nil))\n"} {:sym line->html, :meta {:doc "Returns the given line with html added.", :arglists ([line tags-for-line])}, :source "(defn\n line->html\n \"Returns the given line with html added.\"\n [line tags-for-line]\n (let\n  [html-per-column\n   (into [] tags-for-line->html (sort-by :column tags-for-line))\n   segments\n   (line->segments line tags-for-line true)]\n  (str/join\n   (interleave segments (concat html-per-column (repeat \"\"))))))\n"} {:sym code->hiccup, :meta {:doc "Returns the code in the given string with Hiccup-compatible data structures added.", :arglists ([code])}, :source "(defn\n code->hiccup\n \"Returns the code in the given string with Hiccup-compatible data structures added.\"\n [code]\n (let\n  [lines\n   (split-lines code)\n   tags\n   (ts/code->tags code)\n   hiccup\n   (parse-lines line->hiccup lines tags)\n   hiccup\n   (apply concat (interpose [\"\\n\"] hiccup))]\n  (structurize-hiccup hiccup)))\n"} {:sym split-lines, :meta {:doc "Splits the string into lines.", :arglists ([s])}, :source "(defn\n split-lines\n \"Splits the string into lines.\"\n [s]\n (vec (.split s \"\\n\" -1)))\n"} {:sym code->html, :meta {:doc "Returns the code in the given string with html added.", :arglists ([code])}, :source "(defn\n code->html\n \"Returns the code in the given string with html added.\"\n [code]\n (let\n  [lines\n   (split-lines code)\n   tags\n   (ts/code->tags code)\n   lines\n   (parse-lines line->html lines tags)]\n  (str/join \\newline lines)))\n"} {:sym line->hiccup, :meta {:doc "Returns the given line with Hiccup-compatible data structures added.", :arglists ([line tags-for-line])}, :source "(defn\n line->hiccup\n \"Returns the given line with Hiccup-compatible data structures added.\"\n [line tags-for-line]\n (let\n  [hiccup-per-column\n   (into [] tags-for-line->hiccup (sort-by :column tags-for-line))\n   segments\n   (map list (line->segments line tags-for-line false))]\n  (apply\n   concat\n   (interleave segments (concat hiccup-per-column (repeat nil))))))\n"} {:sym tags-for-line->hiccup, :meta {}, :source "(def\n tags-for-line->hiccup\n (comp\n  (partition-by :column)\n  (map (fn* [p1__45471#] (map tag->hiccup p1__45471#)))))\n"} {:sym tag->html, :meta {:doc "Returns an HTML string for the given tag description.", :arglists ([tag])}, :source "(defn\n tag->html\n \"Returns an HTML string for the given tag description.\"\n [tag]\n (cond\n  (:delimiter? tag)\n  \"<span class='delimiter'>\"\n  (:error? tag)\n  (format\n   \"<span class='error' data-message='%s'></span>\"\n   (some-> (:message tag) escape-html-str))\n  (:begin? tag)\n  (let\n   [value (:value tag)]\n   (cond\n    (symbol? value)\n    \"<span class='symbol'>\"\n    (list? value)\n    \"<span class='collection list'>\"\n    (vector? value)\n    \"<span class='collection vector'>\"\n    (map? value)\n    \"<span class='collection map'>\"\n    (set? value)\n    \"<span class='collection set'>\"\n    (number? value)\n    \"<span class='number'>\"\n    (string? value)\n    \"<span class='string'>\"\n    (keyword? value)\n    \"<span class='keyword'>\"\n    (nil? value)\n    \"<span class='nil'>\"\n    (contains? #{true false} value)\n    \"<span class='boolean'>\"\n    :else\n    \"<span>\"))\n  (:end? tag)\n  \"</span>\"))\n"} {:sym escape-html-str, :meta {:doc "Escapes an HTML string", :arglists ([s])}, :source "(defn\n escape-html-str\n \"Escapes an HTML string\"\n [s]\n (str/escape\n  s\n  {\\< \"&lt;\", \\> \"&gt;\", \\& \"&amp;\", \\\" \"&quot;\", \\' \"&apos;\"}))\n"} {:sym tags-for-line->html, :meta {}, :source "(def\n tags-for-line->html\n (comp\n  (partition-by :column)\n  (map (fn* [p1__45470#] (str/join (map tag->html p1__45470#))))))\n"} {:sym structurize-hiccup, :meta {:doc "Takes a flat list of Hiccup-compatible data and adds structure to it.", :arglists [[flat-hiccup] [flat-hiccup structured-hiccup]]}, :source "(defn\n structurize-hiccup\n \"Takes a flat list of Hiccup-compatible data and adds structure to it.\"\n ([flat-hiccup] (second (structurize-hiccup flat-hiccup [:span])))\n ([flat-hiccup structured-hiccup]\n  (loop\n   [flat-hiccup flat-hiccup structured-hiccup structured-hiccup]\n   (if-let\n    [token (first flat-hiccup)]\n    (cond\n     (string? token)\n     (recur (rest flat-hiccup) (conj structured-hiccup token))\n     (vector? token)\n     (let\n      [[flat structured] (structurize-hiccup (rest flat-hiccup) token)]\n      (recur flat (conj structured-hiccup structured))))\n    [(rest flat-hiccup) structured-hiccup]))))\n"} {:sym escape-html-char, :meta {:doc "Escapes an HTML character", :arglists ([s])}, :source "(defn\n escape-html-char\n \"Escapes an HTML character\"\n [s]\n (case s \\< \"&lt;\" \\> \"&gt;\" \\& \"&amp;\" \\\" \"&quot;\" \\' \"&apos;\" s))\n"} {:sym parse-lines, :meta {:doc "Returns the lines parsed with the given function.", :arglists ([parse-fn lines tags])}, :source "(defn\n parse-lines\n \"Returns the lines parsed with the given function.\"\n [parse-fn lines tags]\n (loop\n  [i 0 results (transient [])]\n  (if-let\n   [line (get lines i)]\n   (recur (inc i) (conj! results (parse-fn line (get tags (inc i)))))\n   (persistent! results))))\n"}), oakcljs.tools.reader ({:sym read+string, :meta {:doc "Like read, and taking the same args. reader must be a SourceLoggingPushbackReader.\n  Returns a vector containing the object read and the (whitespace-trimmed) string read.", :arglists [[stream] [stream eof-error? eof-value] [opts stream]]}, :source "(defn\n read+string\n \"Like read, and taking the same args. reader must be a SourceLoggingPushbackReader.\\n  Returns a vector containing the object read and the (whitespace-trimmed) string read.\"\n ([stream] (read+string stream true nil))\n ([stream eof-error? eof-value]\n  (let\n   [buf\n    (fn [reader] (str (:buffer @(.-frames stream))))\n    offset\n    (count (buf stream))\n    o\n    (log-source stream (read stream eof-error? eof-value))\n    s\n    (.trim (subs (buf stream) offset))]\n   [o s]))\n ([opts stream]\n  (let\n   [buf\n    (fn [reader] (str (:buffer @(.-frames stream))))\n    offset\n    (count (buf stream))\n    o\n    (log-source stream (read opts stream))\n    s\n    (.trim (subs (buf stream) offset))]\n   [o s])))\n"} {:sym bool?, :meta {:doc nil, :arglists ([x])}, :source "(defn bool? [x] (or (instance? js/Boolean x) (true? x) (false? x)))\n"} {:sym *suppress-read*, :meta {}, :source "(def *suppress-read* false)\n"} {:sym *default-data-reader-fn*, :meta {}, :source "(def\n *default-data-reader-fn*\n \"When no data reader is found for a tag and *default-data-reader-fn*\\n  is non-nil, it will be called with two arguments, the tag and the value.\\n  If *default-data-reader-fn* is nil (the default value), an exception\\n  will be thrown for the unknown tag.\"\n (fn [tag value]))\n"} {:sym read, :meta {:doc "Reads the first object from an IPushbackReader.\n   Returns the object read. If EOF, throws if eof-error? is true.\n   Otherwise returns sentinel. If no stream is provided, *in* will be used.\n\n   Opts is a persistent map with valid keys:\n    :read-cond - :allow to process reader conditionals, or\n                 :preserve to keep all branches\n    :features - persistent set of feature keywords for reader conditionals\n    :eof - on eof, return value unless :eofthrow, then throw.\n           if not specified, will throw\n\n   To read data structures only, use cljs.tools.reader.edn/read\n\n   Note that the function signature of cljs.tools.reader/read and\n   cljs.tools.reader.edn/read is not the same for eof-handling", :arglists [[reader] [{eof :eof, :as opts, :or {eof :eofthrow}} reader] [reader eof-error? sentinel]]}, :source "(defn\n read\n \"Reads the first object from an IPushbackReader.\\n   Returns the object read. If EOF, throws if eof-error? is true.\\n   Otherwise returns sentinel. If no stream is provided, *in* will be used.\\n\\n   Opts is a persistent map with valid keys:\\n    :read-cond - :allow to process reader conditionals, or\\n                 :preserve to keep all branches\\n    :features - persistent set of feature keywords for reader conditionals\\n    :eof - on eof, return value unless :eofthrow, then throw.\\n           if not specified, will throw\\n\\n   To read data structures only, use cljs.tools.reader.edn/read\\n\\n   Note that the function signature of cljs.tools.reader/read and\\n   cljs.tools.reader.edn/read is not the same for eof-handling\"\n {:arglists '([reader] [opts reader] [reader eof-error? eof-value])}\n ([reader] (read reader true nil))\n ([{eof :eof, :as opts, :or {eof :eofthrow}} reader]\n  (read* reader (= eof :eofthrow) eof nil opts (to-array [])))\n ([reader eof-error? sentinel]\n  (read* reader eof-error? sentinel nil {} (to-array []))))\n"} {:sym default-data-readers, :meta {}, :source "(def\n default-data-readers\n \"Default map of data reader functions provided by Clojure.\\n  May be overridden by binding *data-readers*\"\n {})\n"} {:sym *data-readers*, :meta {}, :source "(def\n *data-readers*\n \"Map from reader tag symbols to data reader Vars.\\n  Reader tags without namespace qualifiers are reserved for Clojure.\\n  This light version of tools.reader has no implementation for default\\n  reader tags such as #inst and #uuid.\"\n {})\n"} {:sym *read-delim*, :meta {}, :source "(def *read-delim* false)\n"} {:sym resolve-symbol, :meta {:doc "Resolve a symbol s into its fully qualified namespace version", :arglists ([s])}, :source "(defn\n resolve-symbol\n \"Resolve a symbol s into its fully qualified namespace version\"\n [s]\n s)\n"} {:sym *alias-map*, :meta {}, :source "(def\n *alias-map*\n \"Map from ns alias to ns, if non-nil, it will be used to resolve read-time\\n   ns aliases.\\n\\n   Defaults to nil\"\n nil)\n"} {:sym *wrap-value-and-add-metadata?*, :meta {}, :source "(def *wrap-value-and-add-metadata?* false)\n"} {:sym read-regex, :meta {:doc nil, :arglists ([rdr ch opts pending-forms])}, :source "(defn\n read-regex\n [rdr ch opts pending-forms]\n (let\n  [sb (StringBuffer.)]\n  (loop\n   [ch (read-char rdr)]\n   (if\n    (identical? \\\" ch)\n    (str sb)\n    (if\n     (nil? ch)\n     (err/throw-eof-reading rdr :regex sb)\n     (do\n      (.append sb ch)\n      (when\n       (identical? \\\\ ch)\n       (let\n        [ch (read-char rdr)]\n        (if (nil? ch) (err/throw-eof-reading rdr :regex sb))\n        (.append sb ch)))\n      (recur (read-char rdr))))))))\n"} {:sym sb, :meta {}, :source "(def sb (StringBuffer.))\n"} {:sym read-string, :meta {:doc "Reads one object from the string s.\n   Returns nil when s is nil or empty.\n\n   To read data structures only, use cljs.tools.reader.edn/read-string\n\n   Note that the function signature of cljs.tools.reader/read-string and\n   cljs.tools.reader.edn/read-string is not the same for eof-handling", :arglists [[s] [opts s]]}, :source "(defn\n read-string\n \"Reads one object from the string s.\\n   Returns nil when s is nil or empty.\\n\\n   To read data structures only, use cljs.tools.reader.edn/read-string\\n\\n   Note that the function signature of cljs.tools.reader/read-string and\\n   cljs.tools.reader.edn/read-string is not the same for eof-handling\"\n ([s] (read-string {} s))\n ([opts s]\n  (when\n   (and s (not (identical? s \"\")))\n   (read opts (string-push-back-reader s)))))\n"} {:sym map-func, :meta {:doc "Decide which map type to use, array-map if less than 16 elements", :arglists ([coll])}, :source "(defn\n map-func\n \"Decide which map type to use, array-map if less than 16 elements\"\n [coll]\n (if (>= (count coll) 16) 'cljs.core/hash-map 'cljs.core/array-map))\n"}), play-cljc.gl.core ({:sym ->game, :meta {:doc nil, :arglists ([context])}, :source "(defn ->game [context] {:tex-count (atom 0), :context context})\n"} {:sym compile, :meta {:doc "Initializes the provided entity, compiling the shaders and creating all the\n  necessary state for rendering.", :arglists ([game entity])}, :source "(defn\n compile\n \"Initializes the provided entity, compiling the shaders and creating all the\\n  necessary state for rendering.\"\n [game entity]\n (let\n  [{:keys [vertex fragment attributes uniforms indices]}\n   entity\n   vertex-source\n   (ig/iglu->glsl (merge {:version glsl-version} vertex))\n   fragment-source\n   (ig/iglu->glsl (merge {:version glsl-version} fragment))\n   previous-program\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game CURRENT_PROGRAM))\n   previous-vao\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game VERTEX_ARRAY_BINDING))\n   program\n   (u/create-program game vertex-source fragment-source)\n   _\n   (gl game useProgram program)\n   vao\n   (gl game #?(:clj genVertexArrays :cljs createVertexArray))\n   _\n   (gl game bindVertexArray vao)\n   attr-names\n   (u/get-attribute-names vertex)\n   entity\n   (cond->\n    entity\n    attr-names\n    (assoc\n     :attribute-buffers\n     (reduce\n      (fn [m attr-name] (assoc m attr-name (u/create-buffer game)))\n      {}\n      attr-names))\n    indices\n    (assoc :index-buffer (u/create-buffer game)))\n   entity\n   (set-buffers game entity program)\n   uniform-locations\n   (reduce\n    (fn\n     [m uniform]\n     (assoc\n      m\n      uniform\n      (gl game getUniformLocation program (name uniform))))\n    {}\n    (->\n     #{}\n     (into (-> vertex :uniforms keys))\n     (into (-> fragment :uniforms keys))))\n   entity\n   (merge\n    entity\n    {:vertex vertex,\n     :fragment fragment,\n     :vertex-source vertex-source,\n     :fragment-source fragment-source,\n     :program program,\n     :vao vao,\n     :uniform-locations uniform-locations,\n     :textures {}})\n   entity\n   (reduce (partial call-uniform game) entity uniforms)]\n  (some->>\n   entity\n   :render-to-texture\n   (render->texture game (:textures entity)))\n  (gl game useProgram previous-program)\n  (gl game bindVertexArray previous-vao)\n  (dissoc entity :uniforms :attributes :render-to-texture)))\n"} {:sym render, :meta {:doc "Renders the provided entity.", :arglists ([game entity])}, :source "(defn\n render\n \"Renders the provided entity.\"\n [game entity]\n (let\n  [{:keys\n    [program\n     vao\n     uniforms\n     indices\n     viewport\n     clear\n     render-to-texture\n     index-buffer]}\n   entity\n   previous-program\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game CURRENT_PROGRAM))\n   previous-vao\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game VERTEX_ARRAY_BINDING))\n   previous-index-buffer\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game ELEMENT_ARRAY_BUFFER_BINDING))]\n  (some->> program (gl game useProgram))\n  (some->> vao (gl game bindVertexArray))\n  (some->>\n   index-buffer\n   (gl game bindBuffer (gl game ELEMENT_ARRAY_BUFFER)))\n  (when\n   uniforms\n   (when-not\n    program\n    (throw (ex-info \"Only compiled entities can be rendered\" {})))\n   (let\n    [{:keys [textures]}\n     (reduce (partial call-uniform game) entity uniforms)]\n    (doseq\n     [{:keys [unit location]} (vals textures)]\n     (gl game uniform1i location unit))\n    (some->>\n     entity\n     :render-to-texture\n     (render->texture game textures))))\n  (some->> viewport (render-viewport game))\n  (some->> clear (render-clear game))\n  (let\n   [{:keys [draw-count instance-count]}\n    (set-buffers game entity program)]\n   (when\n    draw-count\n    (if-let\n     [{:keys [type]} indices]\n     (gl game drawElements (gl game TRIANGLES) draw-count type 0)\n     (if\n      instance-count\n      (gl\n       game\n       drawArraysInstanced\n       (gl game TRIANGLES)\n       0\n       draw-count\n       instance-count)\n      (gl game drawArrays (gl game TRIANGLES) 0 draw-count)))))\n  (gl game useProgram previous-program)\n  (gl game bindVertexArray previous-vao)\n  (gl\n   game\n   bindBuffer\n   (gl game ELEMENT_ARRAY_BUFFER)\n   previous-index-buffer)))\n"}), cljs.tools.reader ({:sym read+string, :meta {:doc "Like read, and taking the same args. reader must be a SourceLoggingPushbackReader.\n  Returns a vector containing the object read and the (whitespace-trimmed) string read.", :arglists [[stream] [stream eof-error? eof-value] [opts stream]]}, :source "(defn\n read+string\n \"Like read, and taking the same args. reader must be a SourceLoggingPushbackReader.\\n  Returns a vector containing the object read and the (whitespace-trimmed) string read.\"\n ([stream] (read+string stream true nil))\n ([stream eof-error? eof-value]\n  (let\n   [buf\n    (fn [reader] (str (:buffer @(.-frames stream))))\n    offset\n    (count (buf stream))\n    o\n    (log-source stream (read stream eof-error? eof-value))\n    s\n    (.trim (subs (buf stream) offset))]\n   [o s]))\n ([opts stream]\n  (let\n   [buf\n    (fn [reader] (str (:buffer @(.-frames stream))))\n    offset\n    (count (buf stream))\n    o\n    (log-source stream (read opts stream))\n    s\n    (.trim (subs (buf stream) offset))]\n   [o s])))\n"} {:sym bool?, :meta {:doc nil, :arglists ([x])}, :source "(defn bool? [x] (or (instance? js/Boolean x) (true? x) (false? x)))\n"} {:sym *suppress-read*, :meta {}, :source "(def *suppress-read* false)\n"} {:sym *default-data-reader-fn*, :meta {}, :source "(def\n *default-data-reader-fn*\n \"When no data reader is found for a tag and *default-data-reader-fn*\\n  is non-nil, it will be called with two arguments, the tag and the value.\\n  If *default-data-reader-fn* is nil (the default value), an exception\\n  will be thrown for the unknown tag.\"\n nil)\n"} {:sym read, :meta {:doc "Reads the first object from an IPushbackReader.\n   Returns the object read. If EOF, throws if eof-error? is true.\n   Otherwise returns sentinel. If no stream is provided, *in* will be used.\n\n   Opts is a persistent map with valid keys:\n    :read-cond - :allow to process reader conditionals, or\n                 :preserve to keep all branches\n    :features - persistent set of feature keywords for reader conditionals\n    :eof - on eof, return value unless :eofthrow, then throw.\n           if not specified, will throw\n\n   To read data structures only, use cljs.tools.reader.edn/read\n\n   Note that the function signature of cljs.tools.reader/read and\n   cljs.tools.reader.edn/read is not the same for eof-handling", :arglists [[reader] [{eof :eof, :as opts, :or {eof :eofthrow}} reader] [reader eof-error? sentinel]]}, :source "(defn\n read\n \"Reads the first object from an IPushbackReader.\\n   Returns the object read. If EOF, throws if eof-error? is true.\\n   Otherwise returns sentinel. If no stream is provided, *in* will be used.\\n\\n   Opts is a persistent map with valid keys:\\n    :read-cond - :allow to process reader conditionals, or\\n                 :preserve to keep all branches\\n    :features - persistent set of feature keywords for reader conditionals\\n    :eof - on eof, return value unless :eofthrow, then throw.\\n           if not specified, will throw\\n\\n   To read data structures only, use cljs.tools.reader.edn/read\\n\\n   Note that the function signature of cljs.tools.reader/read and\\n   cljs.tools.reader.edn/read is not the same for eof-handling\"\n {:arglists '([reader] [opts reader] [reader eof-error? eof-value])}\n ([reader] (read reader true nil))\n ([{eof :eof, :as opts, :or {eof :eofthrow}} reader]\n  (read* reader (= eof :eofthrow) eof nil opts (to-array [])))\n ([reader eof-error? sentinel]\n  (read* reader eof-error? sentinel nil {} (to-array []))))\n"} {:sym default-data-readers, :meta {}, :source "(def\n default-data-readers\n \"Default map of data reader functions provided by Clojure.\\n  May be overridden by binding *data-readers*\"\n {})\n"} {:sym *data-readers*, :meta {}, :source "(def\n *data-readers*\n \"Map from reader tag symbols to data reader Vars.\\n  Reader tags without namespace qualifiers are reserved for Clojure.\\n  This light version of tools.reader has no implementation for default\\n  reader tags such as #inst and #uuid.\"\n {})\n"} {:sym *read-delim*, :meta {}, :source "(def *read-delim* false)\n"} {:sym resolve-symbol, :meta {:doc "Resolve a symbol s into its fully qualified namespace version", :arglists ([s])}, :source "(defn\n resolve-symbol\n \"Resolve a symbol s into its fully qualified namespace version\"\n [s]\n (throw (ex-info \"resolve-symbol is not implemented\" {:sym s})))\n"} {:sym *alias-map*, :meta {}, :source "(def\n *alias-map*\n \"Map from ns alias to ns, if non-nil, it will be used to resolve read-time\\n   ns aliases.\\n\\n   Defaults to nil\"\n nil)\n"} {:sym read-regex, :meta {:doc nil, :arglists ([rdr ch opts pending-forms])}, :source "(defn\n read-regex\n [rdr ch opts pending-forms]\n (let\n  [sb (StringBuffer.)]\n  (loop\n   [ch (read-char rdr)]\n   (if\n    (identical? \\\" ch)\n    (re-pattern (str sb))\n    (if\n     (nil? ch)\n     (err/throw-eof-reading rdr :regex sb)\n     (do\n      (.append sb ch)\n      (when\n       (identical? \\\\ ch)\n       (let\n        [ch (read-char rdr)]\n        (if (nil? ch) (err/throw-eof-reading rdr :regex sb))\n        (.append sb ch)))\n      (recur (read-char rdr))))))))\n"} {:sym sb, :meta {}, :source "(def sb (StringBuffer.))\n"} {:sym read-string, :meta {:doc "Reads one object from the string s.\n   Returns nil when s is nil or empty.\n\n   To read data structures only, use cljs.tools.reader.edn/read-string\n\n   Note that the function signature of cljs.tools.reader/read-string and\n   cljs.tools.reader.edn/read-string is not the same for eof-handling", :arglists [[s] [opts s]]}, :source "(defn\n read-string\n \"Reads one object from the string s.\\n   Returns nil when s is nil or empty.\\n\\n   To read data structures only, use cljs.tools.reader.edn/read-string\\n\\n   Note that the function signature of cljs.tools.reader/read-string and\\n   cljs.tools.reader.edn/read-string is not the same for eof-handling\"\n ([s] (read-string {} s))\n ([opts s]\n  (when\n   (and s (not (identical? s \"\")))\n   (read opts (string-push-back-reader s)))))\n"} {:sym map-func, :meta {:doc "Decide which map type to use, array-map if less than 16 elements", :arglists ([coll])}, :source "(defn\n map-func\n \"Decide which map type to use, array-map if less than 16 elements\"\n [coll]\n (if (>= (count coll) 16) 'cljs.core/hash-map 'cljs.core/array-map))\n"}), sablono.util ({:sym join-classes, :meta {:doc "Join the `classes` with a whitespace.", :arglists ([classes])}, :source "(defn\n join-classes\n \"Join the `classes` with a whitespace.\"\n [classes]\n (->>\n  classes\n  (into\n   []\n   (comp (mapcat (fn [x] (if (string? x) [x] (seq x)))) (remove nil?)))\n  (str/join \" \")))\n"} {:sym to-str, :meta {:doc "Convert a value into a string.", :arglists ([x])}, :protocol ToString} {:sym react-fn, :meta {:doc "Return the symbol of a fn that build a React element. ", :arglists ([type])}, :source "(defn\n react-fn\n \"Return the symbol of a fn that build a React element. \"\n [type]\n (if\n  (contains? #{:textarea :input :select} (keyword type))\n  'sablono.interpreter/create-element\n  'js/React.createElement))\n"} {:sym camel-case-keys, :meta {:doc "Recursively transforms all map keys into camel case.", :arglists ([m])}, :source "(defn\n camel-case-keys\n \"Recursively transforms all map keys into camel case.\"\n [m]\n (if\n  (map? m)\n  (let\n   [m (into {} (map (fn [[k v]] [(camel-case k) v])) m)]\n   (cond-> m (map? (:style m)) (update :style camel-case-keys)))\n  m))\n"} {:sym element?, :meta {:doc "Return true if `x` is an HTML element. True when `x` is a vector\n  and the first element is a keyword, e.g. `[:div]` or `[:div [:span \"x\"]`.", :arglists ([x])}, :source "(defn\n element?\n \"Return true if `x` is an HTML element. True when `x` is a vector\\n  and the first element is a keyword, e.g. `[:div]` or `[:div [:span \\\"x\\\"]`.\"\n [x]\n (and (vector? x) (keyword? (first x))))\n"} {:sym *base-url*, :meta {}, :source "(def *base-url* nil)\n"} {:sym as-str, :meta {:doc "Converts its arguments into a string using to-str.", :arglists ([& xs])}, :source "(defn\n as-str\n \"Converts its arguments into a string using to-str.\"\n [& xs]\n (str/join (map to-str xs)))\n"} {:sym html-to-dom-attrs, :meta {:doc "Converts all HTML attributes to their DOM equivalents.", :arglists ([attrs])}, :source "(defn\n html-to-dom-attrs\n \"Converts all HTML attributes to their DOM equivalents.\"\n [attrs]\n (rename-keys\n  (camel-case-keys attrs)\n  {:class :className, :for :htmlFor}))\n"} {:sym ToString, :meta {:doc nil}, :methods (to-str)} {:sym ToURI, :meta {:doc nil}, :methods (to-uri)} {:sym camel-case, :meta {:doc "Returns camel case version of the key, e.g. :http-equiv becomes :httpEquiv.", :arglists ([k])}, :source "(defn\n camel-case\n \"Returns camel case version of the key, e.g. :http-equiv becomes :httpEquiv.\"\n [k]\n (if\n  (or (keyword? k) (string? k) (symbol? k))\n  (let\n   [[first-word & words] (.split (name k) \"-\")]\n   (if\n    (or (empty? words) (= \"aria\" first-word) (= \"data\" first-word))\n    k\n    (->\n     (map str/capitalize words)\n     (conj first-word)\n     str/join\n     keyword)))\n  k))\n"} {:sym to-uri, :meta {:doc "Convert a value into a URI.", :arglists ([x])}, :protocol ToURI}), play-cljc.gl.utils ({:sym create-buffer, :meta {:doc nil, :arglists ([game])}, :source "(defn\n create-buffer\n [game]\n (gl game #?(:clj genBuffers :cljs createBuffer)))\n"} {:sym float-size, :meta {}, :source "(def float-size 4)\n"} {:sym create-program, :meta {:doc nil, :arglists ([game v-source f-source])}, :source "(defn\n create-program\n [game v-source f-source]\n (let\n  [vertex-shader\n   (create-shader game (gl game VERTEX_SHADER) v-source)\n   fragment-shader\n   (create-shader game (gl game FRAGMENT_SHADER) f-source)\n   program\n   (gl game createProgram)]\n  (gl game attachShader program vertex-shader)\n  (gl game attachShader program fragment-shader)\n  (gl game linkProgram program)\n  (gl game deleteShader vertex-shader)\n  (gl game deleteShader fragment-shader)\n  (if\n   #?(:clj (= (gl game TRUE) (gl game getProgrami program (gl game LINK_STATUS))) :cljs (gl game getProgramParameter program (gl game LINK_STATUS)))\n   program\n   (throw (ex-info (gl game getProgramInfoLog program) {})))))\n"} {:sym merge-attribute-opts, :meta {:doc nil, :arglists ([entity attr-name opts])}, :source "(defn\n merge-attribute-opts\n [entity attr-name opts]\n (let\n  [type-name (get-attribute-type entity attr-name)]\n  (merge default-opts (type->attribute-opts type-name) opts)))\n"} {:sym set-array-buffer, :meta {:doc nil, :arglists ([game program buffer attrib-name data {:keys [size type iter normalize stride offset divisor], :as opts}])}, :source "(defn\n set-array-buffer\n [game\n  program\n  buffer\n  attrib-name\n  data\n  {:keys [size type iter normalize stride offset divisor], :as opts}]\n (let\n  [attrib-location\n   (gl game getAttribLocation program attrib-name)\n   previous-buffer\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game ARRAY_BUFFER_BINDING))\n   total-size\n   (* size iter)]\n  (gl game bindBuffer (gl game ARRAY_BUFFER) buffer)\n  (gl\n   game\n   bufferData\n   (gl game ARRAY_BUFFER)\n   data\n   (gl game STATIC_DRAW))\n  (dotimes\n   [i iter]\n   (let\n    [loc (+ attrib-location i)]\n    (gl game enableVertexAttribArray loc)\n    (gl\n     game\n     vertexAttribPointer\n     loc\n     size\n     type\n     normalize\n     (* total-size float-size)\n     (* i size float-size))\n    (gl game vertexAttribDivisor loc divisor)))\n  (gl game bindBuffer (gl game ARRAY_BUFFER) previous-buffer)\n  (/ (#?(:clj count :cljs .-length) data) total-size)))\n"} {:sym get-attribute-type, :meta {:doc nil, :arglists ([{:keys [vertex]} attr-name])}, :source "(defn\n get-attribute-type\n [{:keys [vertex]} attr-name]\n (or\n  (get-in vertex [:inputs attr-name])\n  (get-in vertex [:attributes attr-name])\n  (throw\n   (ex-info\n    \"You must define the attribute in your vertex shader's :inputs\"\n    {:attribute-name attr-name}))))\n"} {:sym default-opts, :meta {}, :source "(def\n default-opts\n {:iter 1, :normalize false, :stride 0, :offset 0, :divisor 0})\n"} {:sym get-uniform-type, :meta {:doc nil, :arglists ([{:keys [vertex fragment]} uni-name])}, :source "(defn\n get-uniform-type\n [{:keys [vertex fragment]} uni-name]\n (or\n  (get-in vertex [:uniforms uni-name])\n  (get-in fragment [:uniforms uni-name])\n  (throw\n   (ex-info\n    \"You must define the uniform in your vertex or fragment shader's :uniforms\"\n    {:uniform-name uni-name}))))\n"} {:sym type->attribute-opts, :meta {}, :source "(def\n type->attribute-opts\n '{float {:size 1},\n   vec2 {:size 2},\n   vec3 {:size 3},\n   vec4 {:size 4},\n   mat2 {:size 4},\n   mat3 {:size 3, :iter 3},\n   mat4 {:size 4, :iter 4}})\n"} {:sym dissoc-instance-attr, :meta {:doc nil, :arglists ([index instanced-entity attr-name])}, :source "(defn\n dissoc-instance-attr\n [index instanced-entity attr-name]\n (update-in\n  instanced-entity\n  [:attributes attr-name]\n  (fn\n   [attr]\n   (let\n    [{:keys [size iter]}\n     (merge-attribute-opts instanced-entity attr-name attr)\n     data-len\n     (* size iter)\n     offset\n     (* index data-len)]\n    (update\n     attr\n     :data\n     (fn\n      [data]\n      (let\n       [v1 (subvec data 0 offset) v2 (subvec data (+ offset data-len))]\n       (into (into [] v1) v2))))))))\n"} {:sym get-attribute-names, :meta {:doc nil, :arglists ([vertex])}, :source "(defn\n get-attribute-names\n [vertex]\n (or (some-> vertex :inputs keys) (some-> vertex :attributes keys)))\n"} {:sym assoc-instance-attr, :meta {:doc nil, :arglists ([index entity instanced-entity attr-name uni-name])}, :source "(defn\n assoc-instance-attr\n [index entity instanced-entity attr-name uni-name]\n (when\n  (:program entity)\n  (throw\n   (ex-info\n    \"Only uncompiled entities can be assoc'ed to an instanced entity\"\n    {})))\n (let\n  [new-data\n   (get-in entity [:uniforms uni-name])\n   data-len\n   (count new-data)\n   offset\n   (* index data-len)]\n  (update-in\n   instanced-entity\n   [:attributes attr-name]\n   (fn\n    [attr]\n    (if\n     attr\n     (update\n      attr\n      :data\n      (fn\n       [old-data]\n       (persistent!\n        (reduce-kv\n         (fn [data i n] (assoc! data (+ offset i) n))\n         (transient old-data)\n         new-data))))\n     {:data (vec new-data), :divisor 1})))))\n"} {:sym set-index-buffer, :meta {:doc nil, :arglists ([game index-buffer indices])}, :source "(defn\n set-index-buffer\n [game index-buffer indices]\n (let\n  [previous-index-buffer\n   (gl\n    game\n    #?(:clj getInteger :cljs getParameter)\n    (gl game ELEMENT_ARRAY_BUFFER_BINDING))]\n  (gl game bindBuffer (gl game ELEMENT_ARRAY_BUFFER) index-buffer)\n  (gl\n   game\n   bufferData\n   (gl game ELEMENT_ARRAY_BUFFER)\n   indices\n   (gl game STATIC_DRAW))\n  (gl\n   game\n   bindBuffer\n   (gl game ELEMENT_ARRAY_BUFFER)\n   previous-index-buffer)\n  (#?(:clj count :cljs .-length) indices)))\n"}), dynadoc.common ({:sym var-sym->url, :meta {:doc nil, :arglists ([rel-path static? type ns-sym var-sym])}, :source "(defn\n var-sym->url\n [rel-path static? type ns-sym var-sym]\n (str\n  rel-path\n  (name type)\n  \"/\"\n  ns-sym\n  \"/\"\n  (if\n   static?\n   (->\n    (str var-sym)\n    (str/replace \"?\" \"'q'\")\n    (str/replace \"!\" \"'e'\")\n    (str/replace \"<\" \"'l'\")\n    (str/replace \">\" \"'g'\")\n    (str/replace \":\" \"'c'\")\n    (str/replace \"*\" \"'a'\")\n    (str/replace \"&\" \"'m'\"))\n   #?(:cljs (js/encodeURIComponent (str var-sym)) :clj (java.net.URLEncoder/encode (str var-sym) \"UTF-8\")))\n  (when static? \".html\")))\n"} {:sym init-editor, :meta {:doc nil, :arglists ([rum-state])}, :source "(defn\n init-editor\n [rum-state]\n (let\n  [[state] (:rum/args rum-state)]\n  (when-let\n   [init (:init-editor state)]\n   (init (rum/dom-node rum-state))))\n rum-state)\n"} {:sym ns-sym->url, :meta {:doc nil, :arglists ([rel-path static? type ns-sym])}, :source "(defn\n ns-sym->url\n [rel-path static? type ns-sym]\n (str rel-path (name type) \"/\" ns-sym (when static? \".html\")))\n"} {:sym *session, :meta {}, :source "(def *session (atom initial-session))\n"} {:sym get-state, :meta {:doc nil, :arglists ([])}, :source "(defn\n get-state\n []\n (->\n  @*session\n  (o/query-all :dynadoc.common/get-state)\n  first\n  (or (throw (ex-info \"State not found\" {})))))\n"} {:sym update-session, :meta {:doc nil, :arglists ([session id state])}, :source "(defn\n update-session\n [session id state]\n (o/fire-rules (o/insert session id state)))\n"} {:sym initial-session, :meta {}, :source "(def\n initial-session\n (->\n  (reduce o/add-rule (o/->session) (concat rules components))\n  (o/insert\n   :dynadoc.common/client\n   {:dynadoc.common/prod? false,\n    :dynadoc.common/export-filter \"\",\n    :dynadoc.common/cljs-started? false,\n    :dynadoc.common/exportable? false,\n    :dynadoc.common/init-editor nil,\n    :dynadoc.common/init-example-editor nil,\n    :dynadoc.common/watcher nil})\n  (o/insert\n   :dynadoc.common/server\n   {:dynadoc.common/ns-sym nil,\n    :dynadoc.common/var-sym nil,\n    :dynadoc.common/type nil,\n    :dynadoc.common/hide-sidebar? false})))\n"} {:sym rules, :meta {}, :source "(def\n rules\n (o/ruleset\n  {:dynadoc.common/get-state\n   [:what\n    [:dynadoc.common/server :dynadoc.common/ns-sym ns-sym]\n    [:dynadoc.common/server :dynadoc.common/var-sym var-sym]\n    [:dynadoc.common/server :dynadoc.common/type type]\n    [:dynadoc.common/client :dynadoc.common/watcher watcher]]}))\n"} {:sym components, :meta {}, :source "(def\n components\n (orum/ruleset\n  {app-root\n   [:what\n    [:dynadoc.common/server :dynadoc.common/ns-sym ns-sym]\n    [:dynadoc.common/server :dynadoc.common/ns-meta ns-meta]\n    [:dynadoc.common/server :dynadoc.common/var-sym var-sym]\n    [:dynadoc.common/server :dynadoc.common/vars vars]\n    [:dynadoc.common/client\n     :dynadoc.common/cljs-started?\n     cljs-started?]\n    [:dynadoc.common/client :dynadoc.common/prod? prod?]\n    [:dynadoc.common/server :dynadoc.common/static? static?]\n    [:dynadoc.common/server\n     :dynadoc.common/hide-sidebar?\n     hide-sidebar?]\n    :then\n    (let\n     [*session (orum/prop)]\n     [:div\n      (when-not hide-sidebar? (sidebar {}))\n      (conj\n       (if\n        ns-sym\n        (into\n         [:div\n          {:class \"vars\", :style {:left (if hide-sidebar? 0 300)}}\n          (export *session)\n          (when-not\n           var-sym\n           [:div\n            [:center [:h1 (str ns-sym)]]\n            (when-let\n             [doc (:doc ns-meta)]\n             [:div {:class \"section doc\"} doc])])]\n         (mapv var->html vars))\n        [:div {:class \"vars\"} (export *session)])\n       (cond\n        static?\n        [:div\n         {:class \"footer\"}\n         \"Generated by \"\n         [:a\n          {:href \"https://github.com/oakes/Dynadoc\", :target \"_blank\"}\n          \"Dynadoc\"]]\n        (and cljs-started? (not prod?))\n        [:div\n         {:class \"footer\"}\n         \"This is a custom build of \"\n         [:a\n          {:href \"https://github.com/oakes/Dynadoc\", :target \"_blank\"}\n          \"Dynadoc\"]]))])],\n   var->html\n   [:what\n    [:dynadoc.common/server :dynadoc.common/ns-sym ns-sym]\n    [:dynadoc.common/server :dynadoc.common/var-sym var-sym]\n    [:dynadoc.common/server :dynadoc.common/type type]\n    [:dynadoc.common/server :dynadoc.common/rel-path rel-path]\n    [:dynadoc.common/server :dynadoc.common/static? static?]\n    :then\n    (let\n     [{:keys [sym meta source spec examples methods protocol]}\n      (orum/prop)\n      {:keys [arglists doc]}\n      meta\n      url\n      (var-sym->url rel-path static? type ns-sym sym)]\n     [:div\n      {:class \"var-info\"}\n      (into\n       (if var-sym [:div] [:a {:href url}])\n       (if\n        arglists\n        (map\n         (fn [arglist] [:h2 (pr-str (apply list sym arglist))])\n         arglists)\n        [[:h2 (str sym)]]))\n      (when\n       methods\n       [:div\n        {:class \"section\"}\n        [:h3 \"Methods in this protocol\"]\n        (into\n         [:ul]\n         (for\n          [method-sym methods]\n          [:li\n           [:a\n            {:href\n             (var-sym->url rel-path static? type ns-sym method-sym)}\n            (str method-sym)]]))])\n      (when\n       protocol\n       [:div\n        {:class \"section\"}\n        [:h3\n         \"Part of the \"\n         [:a\n          {:href (var-sym->url rel-path static? type ns-sym protocol)}\n          (str protocol)]\n         \" protocol\"]])\n      (when doc [:div {:class \"section doc\"} doc])\n      (when\n       (seq examples)\n       (into\n        [:div\n         {:class \"section\"}\n         [:h2 (if (> (count examples) 1) \"Examples\" \"Example\")]]\n        (mapv example->html examples)))\n      (when\n       spec\n       (if\n        var-sym\n        [:div {:class \"section\"} [:h2 \"Spec\"] (spec->html spec)]\n        (expandable-section\n         {:label \"Spec\", :url url, :content (spec->html spec)})))\n      (when\n       source\n       (if\n        var-sym\n        [:div {:class \"section\"} [:h2 \"Source\"] (source->html source)]\n        (expandable-section\n         {:label \"Source\",\n          :url url,\n          :content (source->html source)})))])],\n   example->html\n   [:what\n    [:dynadoc.common/server :dynadoc.common/type type]\n    [:dynadoc.common/client :dynadoc.common/prod? prod?]\n    [:dynadoc.common/server :dynadoc.common/static? static?]\n    [:dynadoc.common/client\n     :dynadoc.common/init-example-editor\n     init-example-editor]\n    :then\n    (example->html* o/*match* (orum/prop))],\n   source->html\n   [:what\n    [:dynadoc.common/client :dynadoc.common/init-editor init-editor]\n    :then\n    (source->html* o/*match* (orum/prop))],\n   spec->html\n   [:what\n    [:dynadoc.common/client :dynadoc.common/init-editor init-editor]\n    :then\n    (spec->html* o/*match* (orum/prop))],\n   export\n   [:what\n    [:dynadoc.common/client\n     :dynadoc.common/cljs-started?\n     cljs-started?]\n    [:dynadoc.common/server :dynadoc.common/static? static?]\n    :then\n    (let\n     [*session (orum/prop)]\n     (when-not\n      static?\n      [:div\n       {:style {:min-height 75}}\n       (when\n        cljs-started?\n        [:div\n         {:class \"export\"}\n         (expandable-section\n          {:label \"Export\",\n           :url \"\",\n           :content (export-form *session),\n           :on-close\n           (fn*\n            []\n            (swap!\n             *session\n             (fn\n              [session]\n              (->\n               session\n               (o/insert\n                :dynadoc.common/client\n                :dynadoc.common/export-filter\n                \"\")\n               o/fire-rules))))})])\n       [:div {:style {:clear \"right\"}}]]))],\n   export-form\n   [:what\n    [:dynadoc.common/server :dynadoc.common/ns-sym ns-sym]\n    [:dynadoc.common/server :dynadoc.common/ns-meta ns-meta]\n    [:dynadoc.common/server :dynadoc.common/var-sym var-sym]\n    [:dynadoc.common/server :dynadoc.common/type type]\n    [:dynadoc.common/client :dynadoc.common/exportable? exportable?]\n    [:dynadoc.common/client\n     :dynadoc.common/export-filter\n     export-filter]\n    :then\n    (let\n     [*session\n      (orum/prop)\n      *options\n      (orum/atom {:pages (if ns-sym :single :multiple)})\n      {:keys [pages]}\n      @*options]\n     [:form\n      {:action \"/dynadoc-export.zip\",\n       :method :get,\n       :style {:text-align \"left\"}}\n      [:div\n       [:label\n        [:input\n         {:type \"radio\",\n          :name \"pages\",\n          :value \"single\",\n          :checked (= pages :single),\n          :on-click (fn* [] (swap! *options assoc :pages :single)),\n          :disabled (nil? ns-sym)}]\n        \"Only this page\"]]\n      [:div\n       [:label\n        [:input\n         {:type \"radio\",\n          :name \"pages\",\n          :value \"multiple\",\n          :checked (= pages :multiple),\n          :on-click (fn* [] (swap! *options assoc :pages :multiple))}]\n        \"Multiple pages\"]]\n      [:div\n       {:style {:margin 10, :font-size 14}}\n       (case\n        pages\n        :single\n        [:i\n         \"Only the current page will be exported\"\n         [:br]\n         \"and the sidebar will be hidden.\"]\n        :multiple\n        [:i\n         \"All the namespaces in the sidebar\"\n         [:br]\n         \"will be exported. You can narrow them\"\n         [:br]\n         \"down with the following regex:\"\n         [:div\n          [:input\n           {:type \"text\",\n            :value \"\",\n            :placeholder \"Export filter\",\n            :style {:margin 5, :font-size 14},\n            :on-change\n            (fn\n             [e]\n             (swap!\n              *session\n              (fn\n               [session]\n               (->\n                session\n                (o/insert\n                 :dynadoc.common/client\n                 :dynadoc.common/export-filter\n                 (-> e .-target .-value))\n                o/fire-rules))))}]]])]\n      [:input\n       {:type \"hidden\",\n        :name \"export-filter\",\n        :value (or export-filter \"\")}]\n      (when\n       type\n       [:input {:type \"hidden\", :name \"type\", :value (name type)}])\n      (when\n       ns-sym\n       [:input {:type \"hidden\", :name \"ns-sym\", :value (str ns-sym)}])\n      (when\n       var-sym\n       [:input\n        {:type \"hidden\", :name \"var-sym\", :value (str var-sym)}])\n      [:div\n       {:style {:text-align \"center\"}}\n       [:button\n        {:type \"submit\", :disabled (not exportable?)}\n        \"Download zip file\"]]\n      (when-not\n       exportable?\n       [:div\n        {:style {:margin 10, :font-size 14}}\n        [:div\n         [:b \"You built Dynadoc with :optimizations set to :none\"]]\n        [:div\n         [:b \"You must set it to :simple in order to export\"]]])])],\n   sidebar\n   [:what\n    [:dynadoc.common/server :dynadoc.common/nses nses]\n    [:dynadoc.common/client\n     :dynadoc.common/cljs-started?\n     cljs-started?]\n    [:dynadoc.common/server :dynadoc.common/rel-path rel-path]\n    [:dynadoc.common/server :dynadoc.common/static? static?]\n    [:dynadoc.common/server :dynadoc.common/hide-badge? hide-badge?]\n    [:dynadoc.common/client\n     :dynadoc.common/export-filter\n     export-filter]\n    :then\n    (let\n     [*search\n      (orum/atom \"\")\n      search\n      (or (not-empty export-filter) @*search)\n      search\n      (when\n       (seq search)\n       (try\n        (re-pattern search)\n        (catch #?(:clj Exception :cljs js/Error) e (println e))))]\n     [:div\n      (when\n       cljs-started?\n       [:input\n        {:class \"search\",\n         :on-change\n         (fn*\n          [p1__45472#]\n          (->> p1__45472# .-target .-value (reset! *search))),\n         :placeholder \"Search\"}])\n      (into\n       [:div\n        {:class \"nses\"}\n        (when (seq export-filter) [:i \"Pages to export:\"])]\n       (keep\n        (fn\n         [{:keys [sym type var-syms]}]\n         (let\n          [vars\n           (when\n            (and search (empty? export-filter))\n            (->>\n             var-syms\n             (filter\n              (fn* [p1__45473#] (re-find search (str p1__45473#))))\n             (mapv\n              (fn\n               [var-sym]\n               [:div\n                {:class \"var\"}\n                [:a\n                 {:href\n                  (var-sym->url rel-path static? type sym var-sym)}\n                 (str var-sym)]]))))]\n          (when\n           (or (nil? search) (re-find search (str sym)) (seq vars))\n           [:div\n            (when\n             (and (= type :cljs) (not hide-badge?))\n             [:div {:class \"tag\"} \"CLJS\"])\n            [:a\n             {:href (ns-sym->url rel-path static? type sym)}\n             (str sym)]\n            (when (seq vars) (into [:div] vars))])))\n        nses))])]}))\n"} {:sym init-example-editor, :meta {:doc nil, :arglists ([rum-state])}, :source "(defn\n init-example-editor\n [rum-state]\n (let\n  [[state example] (:rum/args rum-state)]\n  (when-let\n   [init (:init-example-editor state)]\n   (init (rum/dom-node rum-state) example)))\n rum-state)\n"}), paren-soup.dom ({:sym top-level?, :meta {:doc nil, :arglists ([node])}, :source "(defn\n top-level?\n [node]\n (boolean\n  (some-> node .-parentElement .-classList (.contains \"content\"))))\n"} {:sym get-selection, :meta {:doc "Returns the objects related to selection for the given element. If full-selection? is true,\nit will use rangy instead of the native selection API in order to get the beginning and ending\nof the selection (it is, however, much slower).", :arglists ([element full-selection?])}, :source "(defn\n get-selection\n \"Returns the objects related to selection for the given element. If full-selection? is true,\\nit will use rangy instead of the native selection API in order to get the beginning and ending\\nof the selection (it is, however, much slower).\"\n [element full-selection?]\n {:element element,\n  :cursor-position\n  (cond\n   full-selection?\n   (let\n    [selection\n     (.getSelection js/rangy)\n     ranges\n     (.saveCharacterRanges selection element)]\n    (if-let\n     [char-range (some-> ranges (aget 0) (gobj/get \"characterRange\"))]\n     [(gobj/get char-range \"start\") (gobj/get char-range \"end\")]\n     [0 0]))\n   (= 0 (.-rangeCount (.getSelection js/window)))\n   [0 0]\n   :else\n   (let\n    [selection\n     (.getSelection js/window)\n     range\n     (.getRangeAt selection 0)\n     pre-caret-range\n     (doto\n      (.cloneRange range)\n      (.selectNodeContents element)\n      (.setEnd (.-endContainer range) (.-endOffset range)))\n     pos\n     (-> pre-caret-range .toString (str/replace #\"\\r\" \"\") .-length)]\n    [pos pos]))})\n"} {:sym get-cursor-position, :meta {:doc "Returns the cursor position.", :arglists ([element full-selection?])}, :source "(defn\n get-cursor-position\n \"Returns the cursor position.\"\n [element full-selection?]\n (-> element (get-selection full-selection?) :cursor-position))\n"} {:sym text-node?, :meta {:doc nil, :arglists ([node])}, :source "(defn text-node? [node] (= 3 (.-nodeType node)))\n"} {:sym get-focused-form, :meta {}, :source "(def get-focused-form (fn* [] (get-focused-elem \"collection\")))\n"} {:sym get-focused-top-level, :meta {:doc nil, :arglists ([])}, :source "(defn\n get-focused-top-level\n []\n (when-let\n  [node (some-> js/rangy .getSelection .-anchorNode)]\n  (loop\n   [node node]\n   (if\n    (top-level? node)\n    node\n    (when-let [parent (.-parentElement node)] (recur parent))))))\n"} {:sym get-parent, :meta {:doc "Returns the nearest parent with the given class name.", :arglists ([node class-name])}, :source "(defn\n get-parent\n \"Returns the nearest parent with the given class name.\"\n [node class-name]\n (loop\n  [node node]\n  (when-let\n   [parent (.-parentElement node)]\n   (if\n    (.contains (.-classList parent) class-name)\n    parent\n    (recur parent)))))\n"} {:sym coll-node?, :meta {:doc nil, :arglists ([node])}, :source "(defn\n coll-node?\n [node]\n (boolean (some-> node .-classList (.contains \"collection\"))))\n"} {:sym get-nearest-ns, :meta {:doc nil, :arglists ([node])}, :source "(defn\n get-nearest-ns\n [node]\n (loop\n  [node node]\n  (if\n   (some-> node .-childNodes (.item 1) .-textContent (= \"ns\"))\n   (some-> node .-childNodes (.item 3) .-textContent symbol)\n   (when-let [sibling (.-previousSibling node)] (recur sibling)))))\n"} {:sym insert-text!, :meta {:doc nil, :arglists ([text])}, :source "(defn\n insert-text!\n [text]\n (let\n  [selection\n   (.getSelection js/window)\n   range\n   (.getRangeAt selection 0)\n   node\n   (.createTextNode js/document text)]\n  (doto\n   range\n   .deleteContents\n   (.insertNode node)\n   (.setStartAfter node)\n   (.setEndAfter node)\n   (.collapse false))))\n"} {:sym get-completion-info, :meta {:doc nil, :arglists ([])}, :source "(defn\n get-completion-info\n []\n (when-let\n  [prefix-elem (get-focused-elem \"symbol\")]\n  (let\n   [pos\n    (-> prefix-elem (get-cursor-position false) first)\n    text\n    (.-textContent prefix-elem)\n    prefix\n    (subs text 0 pos)]\n   (assoc\n    (get-completion-context (count text) (count prefix))\n    :text\n    text\n    :prefix\n    prefix))))\n"} {:sym set-cursor-position!, :meta {:doc "Moves the cursor to the specified position.", :arglists ([element position])}, :source "(defn\n set-cursor-position!\n \"Moves the cursor to the specified position.\"\n [element position]\n (let\n  [[start-pos end-pos]\n   position\n   max-length\n   (-> element .-textContent count)\n   selection\n   (.getSelection js/rangy)\n   char-range\n   #js {:start start-pos, :end end-pos}\n   range\n   #js {:characterRange char-range, :backward false, :characterOptions nil}\n   ranges\n   (array range)]\n  (.restoreCharacterRanges selection element ranges)))\n"} {:sym get-focused-elem, :meta {:doc nil, :arglists ([class-name])}, :source "(defn\n get-focused-elem\n [class-name]\n (some-> js/rangy .getSelection .-anchorNode (get-parent class-name)))\n"} {:sym error-node?, :meta {:doc nil, :arglists ([node])}, :source "(defn\n error-node?\n [node]\n (boolean (some-> node .-classList (.contains \"error\"))))\n"} {:sym get-completion-context, :meta {:doc nil, :arglists ([symbol-length cursor-offset])}, :source "(defn\n get-completion-context\n [symbol-length cursor-offset]\n (when-let\n  [top-level-elem (get-focused-top-level)]\n  (let\n   [pos\n    (-> top-level-elem (get-cursor-position false) first)\n    prefix-start\n    (- pos cursor-offset)\n    text\n    (.-textContent top-level-elem)]\n   {:ns (get-nearest-ns top-level-elem),\n    :context-before (subs text 0 prefix-start),\n    :context-after (subs text (+ prefix-start symbol-length)),\n    :start-position prefix-start})))\n"} {:sym common-ancestor, :meta {:doc "Returns the common ancestor of the given nodes.", :arglists ([first-node second-node])}, :source "(defn\n common-ancestor\n \"Returns the common ancestor of the given nodes.\"\n [first-node second-node]\n (let\n  [first-parent\n   (first (get-parents first-node \"collection\"))\n   second-parent\n   (first (get-parents second-node \"collection\"))]\n  (cond\n   (and first-parent second-parent (= first-parent second-parent))\n   first-parent\n   (and\n    (= first-node second-node)\n    (text-node? first-node)\n    (top-level? first-node))\n   first-node)))\n"} {:sym get-parents, :meta {:doc "Returns all the parents with the given class name.", :arglists ([node class-name])}, :source "(defn\n get-parents\n \"Returns all the parents with the given class name.\"\n [node class-name]\n (loop\n  [node node elems '()]\n  (if-let\n   [parent (get-parent node class-name)]\n   (recur parent (conj elems parent))\n   elems)))\n"} {:sym node?, :meta {}, :source "(def node? (fn* [p1__45031#] (instance? js/Node p1__45031#)))\n"} {:sym scroll-to-nearest-elem, :meta {:doc nil, :arglists ([])}, :source "(defn\n scroll-to-nearest-elem\n []\n (some->\n  js/rangy\n  .getSelection\n  .-anchorNode\n  .-parentElement\n  (.scrollIntoView\n   #js {:behavior \"auto\", :block \"nearest\", :inline \"nearest\"})))\n"}), oakcljs.tools.reader.impl.errors ({:sym throw-bad-dispatch, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-bad-dispatch\n [rdr ch]\n (reader-error rdr \"No dispatch macro for \" ch \".\"))\n"} {:sym throw-invalid-unicode-escape, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-invalid-unicode-escape\n [rdr ch]\n (reader-error rdr \"Invalid unicode escape: \\\\u\" ch \".\"))\n"} {:sym throw-dup-keys, :meta {:doc nil, :arglists ([rdr kind ks])}, :source "(defn\n throw-dup-keys\n [rdr kind ks]\n (reader-error\n  rdr\n  (duplicate-keys-error\n   (str (s/capitalize (name kind)) \" literal contains duplicate key\")\n   ks)))\n"} {:sym throw-bad-ns, :meta {:doc nil, :arglists ([rdr ns-name])}, :source "(defn\n throw-bad-ns\n [rdr ns-name]\n (reader-error\n  rdr\n  \"Invalid value used as namespace in namespaced map: \"\n  ns-name\n  \".\"))\n"} {:sym throw-unknown-reader-tag, :meta {:doc nil, :arglists ([rdr tag])}, :source "(defn\n throw-unknown-reader-tag\n [rdr tag]\n (reader-error rdr \"No reader function for tag \" (i/inspect tag) \".\"))\n"} {:sym throw-eof-at-dispatch, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-eof-at-dispatch\n [rdr]\n (eof-error rdr \"Unexpected EOF while reading dispatch character.\"))\n"} {:sym throw-bad-metadata-target, :meta {:doc nil, :arglists ([rdr target])}, :source "(defn\n throw-bad-metadata-target\n [rdr target]\n (reader-error\n  rdr\n  \"Metadata can not be applied to \"\n  (i/inspect target)\n  \". \"\n  \"Metadata can only be applied to IMetas.\"))\n"} {:sym throw-invalid-number, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-number\n [rdr token]\n (reader-error rdr \"Invalid number: \" token \".\"))\n"} {:sym reader-error, :meta {:doc "Throws an ExceptionInfo with the given message.\n   If rdr is an IndexingReader, additional information about column and line number is provided", :arglists ([rdr & msgs])}, :source "(defn\n reader-error\n \"Throws an ExceptionInfo with the given message.\\n   If rdr is an IndexingReader, additional information about column and line number is provided\"\n [rdr & msgs]\n (throw-ex rdr :reader-error (apply str msgs)))\n"} {:sym throw-invalid-unicode-literal, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-unicode-literal\n [rdr token]\n (throw\n  (illegal-arg-error rdr \"Invalid unicode literal: \\\\\" token \".\")))\n"} {:sym throw-ns-map-no-map, :meta {:doc nil, :arglists ([rdr ns-name])}, :source "(defn\n throw-ns-map-no-map\n [rdr ns-name]\n (reader-error\n  rdr\n  \"Namespaced map with namespace \"\n  ns-name\n  \" does not specify a map.\"))\n"} {:sym throw-unsupported-character, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-unsupported-character\n [rdr token]\n (reader-error rdr \"Unsupported character: \" token \".\"))\n"} {:sym throw-feature-not-keyword, :meta {:doc nil, :arglists ([rdr feature])}, :source "(defn\n throw-feature-not-keyword\n [rdr feature]\n (reader-error\n  rdr\n  \"Feature cannot be \"\n  (i/inspect feature)\n  \" Features must be keywords.\"))\n"} {:sym throw-eof-delimited, :meta {:doc nil, :arglists [[rdr kind column line] [rdr kind line column n]]}, :source "(defn\n throw-eof-delimited\n ([rdr kind column line]\n  (throw-eof-delimited rdr kind line column nil))\n ([rdr kind line column n]\n  (eof-error\n   rdr\n   \"Unexpected EOF while reading \"\n   (if n (str \"item \" n \" of \"))\n   (name kind)\n   (if line (str \", starting at line \" line \" and column \" column))\n   \".\")))\n"} {:sym throw-eof-in-character, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-eof-in-character\n [rdr]\n (eof-error rdr \"Unexpected EOF while reading character.\"))\n"} {:sym throw-bad-char, :meta {:doc nil, :arglists ([rdr kind ch])}, :source "(defn\n throw-bad-char\n [rdr kind ch]\n (reader-error\n  rdr\n  \"Invalid character: \"\n  ch\n  \" found while reading \"\n  (name kind)\n  \".\"))\n"} {:sym eof-error, :meta {:doc "Throws an ExceptionInfo with the given message.\n   If rdr is an IndexingReader, additional information about column and line number is provided", :arglists ([rdr & msgs])}, :source "(defn\n eof-error\n \"Throws an ExceptionInfo with the given message.\\n   If rdr is an IndexingReader, additional information about column and line number is provided\"\n [rdr & msgs]\n (throw-ex rdr :eof (apply str msgs)))\n"} {:sym throw-bad-metadata, :meta {:doc nil, :arglists ([rdr x])}, :source "(defn\n throw-bad-metadata\n [rdr x]\n (reader-error\n  rdr\n  \"Metadata cannot be \"\n  (i/inspect x)\n  \". Metadata must be a Symbol, Keyword, String or Map.\"))\n"} {:sym throw-eof-reading, :meta {:doc nil, :arglists ([rdr kind & start])}, :source "(defn\n throw-eof-reading\n [rdr kind & start]\n (let\n  [init (case kind :regex \"#\\\"\" :string \\\")]\n  (eof-error\n   rdr\n   \"Unexpected EOF reading \"\n   (name kind)\n   \" starting \"\n   (apply str init start)\n   \".\")))\n"} {:sym throw-eof-error, :meta {:doc nil, :arglists ([rdr line])}, :source "(defn\n throw-eof-error\n [rdr line]\n (if\n  line\n  (eof-error rdr \"EOF while reading, starting at line \" line \".\")\n  (eof-error rdr \"EOF while reading.\")))\n"} {:sym illegal-arg-error, :meta {:doc "Throws an ExceptionInfo with the given message.\n   If rdr is an IndexingReader, additional information about column and line number is provided", :arglists ([rdr & msgs])}, :source "(defn\n illegal-arg-error\n \"Throws an ExceptionInfo with the given message.\\n   If rdr is an IndexingReader, additional information about column and line number is provided\"\n [rdr & msgs]\n (throw-ex rdr :illegal-argument (apply str msgs)))\n"} {:sym throw-invalid-octal-len, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-octal-len\n [rdr token]\n (reader-error\n  rdr\n  \"Invalid octal escape sequence in a character literal:\"\n  token\n  \". Octal escape sequences must be 3 or fewer digits.\"))\n"} {:sym throw-invalid-unicode-digit, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-invalid-unicode-digit\n [rdr ch]\n (illegal-arg-error rdr \"Invalid digit \" ch \" in unicode character.\"))\n"} {:sym throw-invalid-unicode-digit-in-token, :meta {:doc nil, :arglists ([rdr ch token])}, :source "(defn\n throw-invalid-unicode-digit-in-token\n [rdr ch token]\n (illegal-arg-error\n  rdr\n  \"Invalid digit \"\n  ch\n  \" in unicode character \\\\\"\n  token\n  \".\"))\n"} {:sym throw-invalid-unicode-len, :meta {:doc nil, :arglists ([rdr actual expected])}, :source "(defn\n throw-invalid-unicode-len\n [rdr actual expected]\n (illegal-arg-error\n  rdr\n  \"Invalid unicode literal. Unicode literals should be \"\n  expected\n  \"characters long.  \"\n  \"value suppled is \"\n  actual\n  \"characters long.\"))\n"} {:sym throw-single-colon, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-single-colon\n [rdr]\n (reader-error rdr \"A single colon is not a valid keyword.\"))\n"} {:sym throw-odd-map, :meta {:doc nil, :arglists ([rdr line col elements])}, :source "(defn\n throw-odd-map\n [rdr line col elements]\n (reader-error\n  rdr\n  \"The map literal starting with \"\n  (i/inspect (first elements))\n  (if line (str \" on line \" line \" column \" col))\n  \" contains \"\n  (count elements)\n  \" form(s). Map literals must contain an even number of forms.\"))\n"} {:sym throw-bad-octal-number, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-bad-octal-number\n [rdr]\n (reader-error rdr \"Octal escape sequence must be in range [0, 377].\"))\n"} {:sym throw-bad-reader-tag, :meta {:doc nil, :arglists ([rdr tag])}, :source "(defn\n throw-bad-reader-tag\n [rdr tag]\n (reader-error\n  rdr\n  \"Invalid reader tag: \"\n  (i/inspect tag)\n  \". Reader tags must be symbols.\"))\n"} {:sym throw-unmatch-delimiter, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-unmatch-delimiter\n [rdr ch]\n (reader-error rdr \"Unmatched delimiter \" ch \".\"))\n"} {:sym throw-invalid-character-literal, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-character-literal\n [rdr token]\n (reader-error rdr \"Invalid character literal \\\\u\" token \".\"))\n"} {:sym throw-invalid-unicode-char, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-unicode-char\n [rdr token]\n (reader-error rdr \"Invalid unicode character \\\\\" token \".\"))\n"} {:sym throw-bad-escape-char, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-bad-escape-char\n [rdr ch]\n (reader-error rdr \"Unsupported escape character: \\\\\" ch \".\"))\n"} {:sym throw-no-dispatch, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn throw-no-dispatch [rdr ch] (throw-bad-dispatch rdr ch))\n"} {:sym throw-eof-at-start, :meta {:doc nil, :arglists ([rdr kind])}, :source "(defn\n throw-eof-at-start\n [rdr kind]\n (eof-error\n  rdr\n  \"Unexpected EOF while reading start of \"\n  (name kind)\n  \".\"))\n"} {:sym throw-invalid, :meta {:doc nil, :arglists ([rdr kind token])}, :source "(defn\n throw-invalid\n [rdr kind token]\n (reader-error rdr \"Invalid \" (name kind) \": \" token \".\"))\n"}), play-cljc.primitives-2d ({:sym rect, :meta {}, :source "(def rect [0 0 1 0 0 1 0 1 1 0 1 1])\n"}), dynadoc.core ({:sym clj-compiler-fn, :meta {:doc nil, :arglists ([example forms cb])}, :source "(defn\n clj-compiler-fn\n [example forms cb]\n (let\n  [ns-sym (:ns-sym (common/get-state))]\n  (try\n   (.send\n    XhrIo\n    \"/eval\"\n    (fn\n     [e]\n     (if\n      (.isSuccess (.-target e))\n      (->>\n       (.. e -target getResponseText)\n       read-string\n       rest\n       (mapv\n        (fn*\n         [p1__45474#]\n         (if (vector? p1__45474#) (into-array p1__45474#) p1__45474#)))\n       cb)\n      (cb [])))\n    \"POST\"\n    (pr-str\n     (into\n      [(list 'in-ns (list 'quote ns-sym))]\n      (mapv (partial transform (dissoc example :with-card)) forms))))\n   (catch js/Error _ (cb [])))))\n"} {:sym form->serializable, :meta {:doc "Converts the input to either a string or (if an error object) an array of data", :arglists ([form])}, :source "(defn\n form->serializable\n \"Converts the input to either a string or (if an error object) an array of data\"\n [form]\n (if\n  (instance? js/Error form)\n  (array\n   (or (some-> form .-cause .-message) (.-message form))\n   (.-fileName form)\n   (.-lineNumber form))\n  (pr-str form)))\n"} {:sym init-editor, :meta {:doc nil, :arglists ([elem])}, :source "(defn\n init-editor\n [elem]\n (when-let\n  [paren-soup (or (.querySelector elem \".paren-soup\") elem)]\n  (ps/init paren-soup (js->clj {:compiler-fn (fn [])}))))\n"} {:sym cljs-compiler-fn, :meta {:doc nil, :arglists ([example forms cb])}, :source "(defn\n cljs-compiler-fn\n [example forms cb]\n (let\n  [ns-sym (:ns-sym (common/get-state))]\n  (es/code->results\n   (into [(list 'ns ns-sym)] (mapv (partial transform example) forms))\n   (fn [results] (->> results rest (mapv form->serializable) cb))\n   {:custom-load (fn [opts cb] (cb {:lang :clj, :source \"\"})),\n    :disable-timeout? true})))\n"} {:sym transform, :meta {:doc nil, :arglists ([{:keys [with-focus with-card with-callback], :as ex} form-str])}, :source "(defn\n transform\n [{:keys [with-focus with-card with-callback], :as ex} form-str]\n (if\n  (or with-focus with-card with-callback)\n  (transform/transform ex (read-string form-str))\n  form-str))\n"} {:sym init, :meta {:doc nil, :arglists ([])}, :source "(defn\n init\n []\n (->>\n  (.querySelector js/document \"#initial-state\")\n  .-textContent\n  js/atob\n  read-string\n  (swap! common/*session common/update-session :dynadoc.common/server))\n (rum/hydrate\n  (common/app-root common/*session)\n  (.querySelector js/document \"#app\"))\n (let\n  [{:keys [var-sym watcher]} (common/get-state)]\n  (->>\n   {:dynadoc.common/cljs-started? true,\n    :dynadoc.common/exportable? js/COMPILED,\n    :dynadoc.common/init-editor (memoize init-editor),\n    :dynadoc.common/init-example-editor (memoize init-example-editor),\n    :dynadoc.common/watcher\n    (when-not js/COMPILED (or watcher (init-watcher!)))}\n   (swap!\n    common/*session\n    common/update-session\n    :dynadoc.common/client))\n  (when\n   var-sym\n   (doseq\n    [button (-> js/document (.querySelectorAll \".button\") array-seq)]\n    (set! (.-display (.-style button)) \"inline-block\")))))\n"} {:sym read-string, :meta {:doc nil, :arglists ([s])}, :source "(defn\n read-string\n [s]\n (binding\n  [r/*suppress-read* true]\n  (r/read-string {:read-cond :preserve, :eof nil} s)))\n"} {:sym init-example-editor, :meta {:doc nil, :arglists ([elem example])}, :source "(defn\n init-example-editor\n [elem example]\n (when-let\n  [paren-soup (or (.querySelector elem \".paren-soup\") elem)]\n  (when-let\n   [content (.querySelector paren-soup \".content\")]\n   (set! (.-contentEditable content) true))\n  (let\n   [type (:type (common/get-state))]\n   (ps/init\n    paren-soup\n    (js->clj\n     {:compiler-fn\n      (if\n       (= :clj type)\n       (partial clj-compiler-fn example)\n       (partial cljs-compiler-fn example)),\n      :fix-indent-on-init? true})))))\n"} {:sym init-watcher!, :meta {:doc nil, :arglists ([])}, :source "(defn\n init-watcher!\n []\n (let\n  [protocol\n   (if (= (.-protocol js/location) \"https:\") \"wss:\" \"ws:\")\n   host\n   (-> js/window .-location .-host)\n   sock\n   (js/WebSocket. (str protocol \"//\" host \"/watch\"))]\n  (set!\n   (.-onopen sock)\n   (fn [event] (.send sock js/window.location.pathname)))\n  (set!\n   (.-onmessage sock)\n   (fn\n    [event]\n    (->>\n     (.-data event)\n     read-string\n     (swap!\n      common/*session\n      common/update-session\n      :dynadoc.common/server))))\n  sock))\n"}), expound.alpha ({:sym error-message, :meta {:doc "Given a spec named `k`, return its human-readable error message.", :arglists ([k])}, :source "(defn\n error-message\n \"Given a spec named `k`, return its human-readable error message.\"\n [k]\n (get @registry-ref k))\n"} {:sym explain-result, :meta {:doc "Given a result from `clojure.spec.test.alpha/check`, prints a summary of the result.", :arglists ([check-result])}, :source "(defn\n explain-result\n \"Given a result from `clojure.spec.test.alpha/check`, prints a summary of the result.\"\n [check-result]\n (when\n  (= s/*explain-out* s/explain-printer)\n  (throw\n   (ex-info\n    \"Cannot print check results with default printer. Use 'set!' or 'binding' to use Expound printer.\"\n    {})))\n (s/*explain-out* check-result))\n"} {:sym custom-printer, :meta {:doc "Returns a printer.\n\n  Options:\n   - `:show-valid-values?` - if `false`, replaces valid values with \"...\"\n   - `:value-str-fn`       - function to print bad values\n   - `:print-specs?`       - if `true`, display \"Relevant specs\" section. Otherwise, omit that section.\n   - `:theme`               - enables color theme. Possible values: `:figwheel-theme`, `:none`", :arglists ([opts])}, :source "(defn\n custom-printer\n \"Returns a printer.\\n\\n  Options:\\n   - `:show-valid-values?` - if `false`, replaces valid values with \\\"...\\\"\\n   - `:value-str-fn`       - function to print bad values\\n   - `:print-specs?`       - if `true`, display \\\"Relevant specs\\\" section. Otherwise, omit that section.\\n   - `:theme`               - enables color theme. Possible values: `:figwheel-theme`, `:none`\"\n [opts]\n (fn [explain-data] (print (printer-str opts explain-data))))\n"} {:sym conformed-value, :meta {:doc nil, :arglists ([problems invalid-value])}, :source "(defn\n conformed-value\n [problems invalid-value]\n (let\n  [conformed-val (-> problems first :val)]\n  (if\n   (= conformed-val invalid-value)\n   \"\"\n   (printer/format\n    \"\\n\\nwhen conformed as\\n\\n%s\"\n    (printer/indent (ansi/color (pr-str conformed-val) :bad-value))))))\n"} {:sym printer, :meta {:doc "Prints `explain-data` in a human-readable format.", :arglists ([explain-data])}, :source "(defn\n printer\n \"Prints `explain-data` in a human-readable format.\"\n [explain-data]\n ((custom-printer {}) explain-data))\n"} {:sym explain-result-str, :meta {:doc "Given a result from `clojure.spec.test.alpha/check`, returns a string summarizing the result.", :arglists ([check-result])}, :source "(defn\n explain-result-str\n \"Given a result from `clojure.spec.test.alpha/check`, returns a string summarizing the result.\"\n [check-result]\n (with-out-str (explain-result check-result)))\n"} {:sym explain-results, :meta {:doc "Given a sequence of results from `clojure.spec.test.alpha/check`, prints a summary of the results.", :arglists ([check-results])}, :source "(defn\n explain-results\n \"Given a sequence of results from `clojure.spec.test.alpha/check`, prints a summary of the results.\"\n [check-results]\n (doseq\n  [check-result (butlast check-results)]\n  (explain-result check-result)\n  (print \"\\n\\n\"))\n (explain-result (last check-results)))\n"} {:sym expound-str, :meta {:doc "Given a `spec` and a `form`, either returns success message or a human-readable error message.", :arglists ([spec form])}, :source "(defn\n expound-str\n \"Given a `spec` and a `form`, either returns success message or a human-readable error message.\"\n [spec form]\n (let\n  [explain-data (s/explain-data spec form)]\n  (printer-str\n   {}\n   (if\n    explain-data\n    (assoc explain-data :clojure.spec.alpha/value form)\n    nil))))\n"} {:sym explain-results-str, :meta {:doc "Given a sequence of results from `clojure.spec.test.alpha/check`, returns a string summarizing the results.", :arglists ([check-results])}, :source "(defn\n explain-results-str\n \"Given a sequence of results from `clojure.spec.test.alpha/check`, returns a string summarizing the results.\"\n [check-results]\n (with-out-str (explain-results check-results)))\n"} {:sym expound, :meta {:doc "Given a `spec` and a `form`, either prints a success message or a human-readable error message.", :arglists ([spec form])}, :source "(defn\n expound\n \"Given a `spec` and a `form`, either prints a success message or a human-readable error message.\"\n [spec form]\n (print (expound-str spec form)))\n"} {:sym defmsg, :meta {:doc "Associates the spec named `k` with `error-message`.", :arglists ([k error-message])}, :source "(defn\n defmsg\n \"Associates the spec named `k` with `error-message`.\"\n [k error-message]\n (swap! registry-ref assoc k error-message)\n nil)\n"}), cljs.stacktrace ({:sym output-directory, :meta {:doc nil, :arglists ([opts])}, :source "(defn\n output-directory\n [opts]\n #?(:clj (util/output-directory opts) :cljs (or (:output-dir opts) \"out\")))\n"} {:sym ends-with?, :meta {:doc nil, :arglists ([s0 s1])}, :source "(defn\n ends-with?\n #?(:cljs {:tag boolean})\n [s0 s1]\n #?(:clj (.endsWith s0 s1) :cljs (gstring/endsWith s0 s1)))\n"} {:sym starts-with?, :meta {:doc nil, :arglists ([s0 s1])}, :source "(defn\n starts-with?\n #?(:cljs {:tag boolean})\n [s0 s1]\n #?(:clj (.startsWith s0 s1) :cljs (gstring/startsWith s0 s1)))\n"} {:sym remove-ext, :meta {:doc nil, :arglists ([file])}, :source "(defn\n remove-ext\n [file]\n (->\n  file\n  (string/replace #\"\\.js$\" \"\")\n  (string/replace #\"\\.cljs$\" \"\")\n  (string/replace #\"\\.cljc$\" \"\")\n  (string/replace #\"\\.clj$\" \"\")))\n"} {:sym string->regex, :meta {:doc nil, :arglists ([s])}, :source "(defn\n string->regex\n [s]\n #?(:clj (Pattern/compile s) :cljs (js/RegExp. s)))\n"} {:sym safari-st-el->frame, :meta {:doc nil, :arglists ([repl-env st-el opts])}, :source "(defn\n safari-st-el->frame\n [repl-env st-el opts]\n (let\n  [[function flc]\n   (if (re-find #\"@\" st-el) (string/split st-el #\"@\") [nil st-el])\n   [file line column]\n   (parse-file-line-column flc)]\n  (if\n   (and file function line column)\n   {:file (parse-file repl-env file opts),\n    :function (string/trim function),\n    :line line,\n    :column column}\n   (when-not\n    (string/blank? function)\n    {:file nil,\n     :function (string/trim function),\n     :line nil,\n     :column nil}))))\n"} {:sym mapped-frame, :meta {:doc "Given opts and a canonicalized JavaScript stacktrace frame, return the\n  ClojureScript frame.", :arglists ([{:keys [function file line column]} sms opts])}, :source "(defn\n mapped-frame\n \"Given opts and a canonicalized JavaScript stacktrace frame, return the\\n  ClojureScript frame.\"\n [{:keys [function file line column]} sms opts]\n (let\n  [no-source-file?\n   (if-not file true (starts-with? file \"<\"))\n   [line' column' call]\n   (if\n    no-source-file?\n    [line column nil]\n    (mapped-line-column-call sms file line column))\n   file'\n   (when-not\n    no-source-file?\n    (if\n     (ends-with? file \".js\")\n     (str (subs file 0 (- (count file) 3)) \".cljs\")\n     file))]\n  {:function function,\n   :call call,\n   :file\n   (if\n    no-source-file?\n    (str \"NO_SOURCE_FILE\" (when file (str \" \" file)))\n    file'),\n   :line line',\n   :column column'}))\n"} {:sym firefox-st-el->frame, :meta {:doc nil, :arglists ([repl-env st-el opts])}, :source "(defn\n firefox-st-el->frame\n [repl-env st-el opts]\n (let\n  [[function flc]\n   (if (re-find #\"@\" st-el) (string/split st-el #\"@\") [nil st-el])\n   [file line column]\n   (parse-file-line-column flc)]\n  (if\n   (and file function line column)\n   {:file (parse-file repl-env file opts),\n    :function (firefox-clean-function function),\n    :line line,\n    :column column}\n   (when-not\n    (string/blank? function)\n    {:file nil,\n     :function (firefox-clean-function function),\n     :line nil,\n     :column nil}))))\n"} {:sym firefox-clean-function, :meta {:doc nil, :arglists ([f])}, :source "(defn\n firefox-clean-function\n [f]\n (as->\n  f\n  f\n  (cond\n   (string/blank? f)\n   nil\n   (not= (.indexOf f \"</\") -1)\n   (let [idx (.indexOf f \"</\")] (.substring f (+ idx 2)))\n   :else\n   f)\n  (->\n   f\n   (string/replace #\"<\" \"\")\n   (string/replace #?(:clj #\"\\/\" :cljs (js/RegExp. \"\\\\/\")) \"\"))))\n"} {:sym chrome-st-el->frame, :meta {:doc nil, :arglists ([repl-env st-el opts])}, :source "(defn\n chrome-st-el->frame\n [repl-env st-el opts]\n (let\n  [xs\n   (-> st-el (string/replace #\"\\s+at\\s+\" \"\") (string/split #\"\\s+\"))\n   [function flc]\n   (if (== 1 (count xs)) [nil (first xs)] [(first xs) (last xs)])\n   [file line column]\n   (parse-file-line-column flc)]\n  (if\n   (and file function line column)\n   {:file (parse-file repl-env file opts),\n    :function (string/replace function #\"Object\\.\" \"\"),\n    :line line,\n    :column column}\n   (when-not\n    (string/blank? function)\n    {:file nil,\n     :function (string/replace function #\"Object\\.\" \"\"),\n     :line nil,\n     :column nil}))))\n"} {:sym mapped-line-column-call, :meta {:doc "Given a cljs.source-map source map data structure map a generated line\n   and column back to the original line, column, and function called.", :arglists ([sms file line column])}, :source "(defn\n mapped-line-column-call\n \"Given a cljs.source-map source map data structure map a generated line\\n   and column back to the original line, column, and function called.\"\n [sms file line column]\n (let\n  [source-map\n   (get sms (symbol (string/replace (remove-ext file) \"/\" \".\")))]\n  (letfn\n   [(get-best-column\n     [columns column]\n     (last\n      (or\n       (get\n        columns\n        (last\n         (filter\n          (fn* [p1__45460#] (<= p1__45460# (dec column)))\n          (sort (keys columns)))))\n       (second (first columns)))))\n    (adjust\n     [mapped]\n     (vec\n      (map\n       (fn* [p1__45461# p2__45462#] (p1__45461# p2__45462#))\n       [inc inc identity]\n       mapped)))]\n   (let\n    [default [line column nil]]\n    (if-let\n     [columns (get source-map (dec line))]\n     (adjust (map (get-best-column columns column) [:line :col :name]))\n     default)))))\n"} {:sym mapped-stacktrace-str, :meta {:doc "Given a vector representing the canonicalized JavaScript stacktrace and a map\n  of library names to decoded source maps, print the ClojureScript stacktrace .\n  See mapped-stacktrace.", :arglists [[stacktrace sms] [stacktrace sms opts]]}, :source "(defn\n mapped-stacktrace-str\n \"Given a vector representing the canonicalized JavaScript stacktrace and a map\\n  of library names to decoded source maps, print the ClojureScript stacktrace .\\n  See mapped-stacktrace.\"\n ([stacktrace sms] (mapped-stacktrace-str stacktrace sms nil))\n ([stacktrace sms opts]\n  (with-out-str\n   (doseq\n    [{:keys [function file line column]}\n     (mapped-stacktrace stacktrace sms opts)]\n    (println\n     \"\\t\"\n     (str\n      (when function (str function \" \"))\n      \"(\"\n      file\n      (when line (str \":\" line))\n      (when column (str \":\" column))\n      \")\"))))))\n"} {:sym mapped-stacktrace, :meta {:doc "Given a vector representing the canonicalized JavaScript stacktrace\n   return the ClojureScript stacktrace. The canonical stacktrace must be\n   in the form:\n\n    [{:file <string>\n      :function <string>\n      :line <integer>\n      :column <integer>}*]\n\n   :file must be a URL path (without protocol) relative to :output-dir or a\n   identifier delimited by angle brackets. The returned mapped stacktrace will\n   also contain :url entries to the original sources if it can be determined\n   from the classpath.", :arglists [[stacktrace sms] [stacktrace sms opts]]}, :source "(defn\n mapped-stacktrace\n \"Given a vector representing the canonicalized JavaScript stacktrace\\n   return the ClojureScript stacktrace. The canonical stacktrace must be\\n   in the form:\\n\\n    [{:file <string>\\n      :function <string>\\n      :line <integer>\\n      :column <integer>}*]\\n\\n   :file must be a URL path (without protocol) relative to :output-dir or a\\n   identifier delimited by angle brackets. The returned mapped stacktrace will\\n   also contain :url entries to the original sources if it can be determined\\n   from the classpath.\"\n ([stacktrace sms] (mapped-stacktrace stacktrace sms nil))\n ([stacktrace sms opts]\n  (letfn\n   [(call->function\n     [x]\n     (if (:call x) (hash-map :function (:call x)) {}))\n    (call-merge\n     [function call]\n     (merge-with\n      (fn\n       [munged-fn-name unmunged-call-name]\n       (if\n        (=\n         munged-fn-name\n         (string/replace (munge unmunged-call-name) \".\" \"$\"))\n        unmunged-call-name\n        munged-fn-name))\n      function\n      call))]\n   (let\n    [mapped-frames\n     (map\n      (memoize (fn* [p1__45463#] (mapped-frame p1__45463# sms opts)))\n      stacktrace)]\n    (vec\n     (map\n      call-merge\n      (map (fn* [p1__45464#] (dissoc p1__45464# :call)) mapped-frames)\n      (concat (rest (map call->function mapped-frames)) [{}])))))))\n"} {:sym parse-int, :meta {:doc nil, :arglists ([s])}, :source "(defn\n parse-int\n [s]\n #?(:clj (Long/parseLong s) :cljs (js/parseInt s 10)))\n"} {:sym parse-file, :meta {:doc "Given a browser file url convert it into a relative path that can be used\n   to locate the original source.", :arglists ([{:keys [host host-port port], :as repl-env} file {:keys [asset-path], :as opts}])}, :source "(defn\n parse-file\n \"Given a browser file url convert it into a relative path that can be used\\n   to locate the original source.\"\n [{:keys [host host-port port], :as repl-env}\n  file\n  {:keys [asset-path], :as opts}]\n (let\n  [urlpat\n   (if\n    host\n    (string->regex (str \"http://\" host \":\" (or host-port port) \"/\"))\n    \"\")\n   match\n   (if host (re-find urlpat file) (contains? opts :output-dir))]\n  (if\n   match\n   (->\n    file\n    (string/replace urlpat \"\")\n    (string/replace\n     (string->regex\n      (str\n       \"^\"\n       (or\n        (and asset-path (string/replace asset-path #\"^/\" \"\"))\n        (output-directory opts))\n       \"/\"))\n     \"\"))\n   (if-let\n    [asset-root (:asset-root opts)]\n    (string/replace file asset-root \"\")\n    (throw\n     (ex-info\n      (str \"Could not relativize URL \" file)\n      {:type :parse-stacktrace, :reason :relativize-url}))))))\n"} {:sym parse-file-line-column, :meta {:doc nil, :arglists ([flc])}, :source "(defn\n parse-file-line-column\n [flc]\n (if-not\n  (re-find #\":\" flc)\n  [flc nil nil]\n  (let\n   [xs\n    (string/split flc #\":\")\n    [pre [line column]]\n    (reduce\n     (fn\n      [[pre post] [x i]]\n      (if (<= i 2) [pre (conj post x)] [(conj pre x) post]))\n     [[] []]\n     (map vector xs (range (count xs) 0 -1)))\n    file\n    (string/join \":\" pre)]\n   [(cond-> file (starts-with? file \"(\") (string/replace \"(\" \"\"))\n    (parse-int\n     (cond-> line (ends-with? line \")\") (string/replace \")\" \"\")))\n    (parse-int\n     (cond->\n      column\n      (ends-with? column \")\")\n      (string/replace \")\" \"\")))])))\n"}), cljs.tools.reader.impl.errors ({:sym throw-invalid-unicode-escape, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-invalid-unicode-escape\n [rdr ch]\n (reader-error rdr \"Invalid unicode escape: \\\\u\" ch \".\"))\n"} {:sym throw-dup-keys, :meta {:doc nil, :arglists ([rdr kind ks])}, :source "(defn\n throw-dup-keys\n [rdr kind ks]\n (reader-error\n  rdr\n  (duplicate-keys-error\n   (str (s/capitalize (name kind)) \" literal contains duplicate key\")\n   ks)))\n"} {:sym throw-bad-ns, :meta {:doc nil, :arglists ([rdr ns-name])}, :source "(defn\n throw-bad-ns\n [rdr ns-name]\n (reader-error\n  rdr\n  \"Invalid value used as namespace in namespaced map: \"\n  ns-name\n  \".\"))\n"} {:sym throw-unknown-reader-tag, :meta {:doc nil, :arglists ([rdr tag])}, :source "(defn\n throw-unknown-reader-tag\n [rdr tag]\n (reader-error rdr \"No reader function for tag \" (i/inspect tag) \".\"))\n"} {:sym throw-eof-at-dispatch, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-eof-at-dispatch\n [rdr]\n (eof-error rdr \"Unexpected EOF while reading dispatch character.\"))\n"} {:sym throw-bad-metadata-target, :meta {:doc nil, :arglists ([rdr target])}, :source "(defn\n throw-bad-metadata-target\n [rdr target]\n (reader-error\n  rdr\n  \"Metadata can not be applied to \"\n  (i/inspect target)\n  \". \"\n  \"Metadata can only be applied to IMetas.\"))\n"} {:sym throw-invalid-number, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-number\n [rdr token]\n (reader-error rdr \"Invalid number: \" token \".\"))\n"} {:sym reader-error, :meta {:doc "Throws an ExceptionInfo with the given message.\n   If rdr is an IndexingReader, additional information about column and line number is provided", :arglists ([rdr & msgs])}, :source "(defn\n reader-error\n \"Throws an ExceptionInfo with the given message.\\n   If rdr is an IndexingReader, additional information about column and line number is provided\"\n [rdr & msgs]\n (throw-ex rdr :reader-error (apply str msgs)))\n"} {:sym throw-invalid-unicode-literal, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-unicode-literal\n [rdr token]\n (throw\n  (illegal-arg-error rdr \"Invalid unicode literal: \\\\\" token \".\")))\n"} {:sym throw-ns-map-no-map, :meta {:doc nil, :arglists ([rdr ns-name])}, :source "(defn\n throw-ns-map-no-map\n [rdr ns-name]\n (reader-error\n  rdr\n  \"Namespaced map with namespace \"\n  ns-name\n  \" does not specify a map.\"))\n"} {:sym throw-unsupported-character, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-unsupported-character\n [rdr token]\n (reader-error rdr \"Unsupported character: \" token \".\"))\n"} {:sym throw-feature-not-keyword, :meta {:doc nil, :arglists ([rdr feature])}, :source "(defn\n throw-feature-not-keyword\n [rdr feature]\n (reader-error\n  rdr\n  \"Feature cannot be \"\n  (i/inspect feature)\n  \" Features must be keywords.\"))\n"} {:sym throw-eof-delimited, :meta {:doc nil, :arglists [[rdr kind column line] [rdr kind line column n]]}, :source "(defn\n throw-eof-delimited\n ([rdr kind column line]\n  (throw-eof-delimited rdr kind line column nil))\n ([rdr kind line column n]\n  (eof-error\n   rdr\n   \"Unexpected EOF while reading \"\n   (if n (str \"item \" n \" of \"))\n   (name kind)\n   (if line (str \", starting at line \" line \" and column \" column))\n   \".\")))\n"} {:sym throw-eof-in-character, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-eof-in-character\n [rdr]\n (eof-error rdr \"Unexpected EOF while reading character.\"))\n"} {:sym throw-bad-char, :meta {:doc nil, :arglists ([rdr kind ch])}, :source "(defn\n throw-bad-char\n [rdr kind ch]\n (reader-error\n  rdr\n  \"Invalid character: \"\n  ch\n  \" found while reading \"\n  (name kind)\n  \".\"))\n"} {:sym eof-error, :meta {:doc "Throws an ExceptionInfo with the given message.\n   If rdr is an IndexingReader, additional information about column and line number is provided", :arglists ([rdr & msgs])}, :source "(defn\n eof-error\n \"Throws an ExceptionInfo with the given message.\\n   If rdr is an IndexingReader, additional information about column and line number is provided\"\n [rdr & msgs]\n (throw-ex rdr :eof (apply str msgs)))\n"} {:sym throw-bad-metadata, :meta {:doc nil, :arglists ([rdr x])}, :source "(defn\n throw-bad-metadata\n [rdr x]\n (reader-error\n  rdr\n  \"Metadata cannot be \"\n  (i/inspect x)\n  \". Metadata must be a Symbol, Keyword, String or Map.\"))\n"} {:sym throw-eof-reading, :meta {:doc nil, :arglists ([rdr kind & start])}, :source "(defn\n throw-eof-reading\n [rdr kind & start]\n (let\n  [init (case kind :regex \"#\\\"\" :string \\\")]\n  (eof-error\n   rdr\n   \"Unexpected EOF reading \"\n   (name kind)\n   \" starting \"\n   (apply str init start)\n   \".\")))\n"} {:sym throw-eof-error, :meta {:doc nil, :arglists ([rdr line])}, :source "(defn\n throw-eof-error\n [rdr line]\n (if\n  line\n  (eof-error rdr \"EOF while reading, starting at line \" line \".\")\n  (eof-error rdr \"EOF while reading.\")))\n"} {:sym illegal-arg-error, :meta {:doc "Throws an ExceptionInfo with the given message.\n   If rdr is an IndexingReader, additional information about column and line number is provided", :arglists ([rdr & msgs])}, :source "(defn\n illegal-arg-error\n \"Throws an ExceptionInfo with the given message.\\n   If rdr is an IndexingReader, additional information about column and line number is provided\"\n [rdr & msgs]\n (throw-ex rdr :illegal-argument (apply str msgs)))\n"} {:sym throw-invalid-octal-len, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-octal-len\n [rdr token]\n (reader-error\n  rdr\n  \"Invalid octal escape sequence in a character literal:\"\n  token\n  \". Octal escape sequences must be 3 or fewer digits.\"))\n"} {:sym throw-invalid-unicode-digit, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-invalid-unicode-digit\n [rdr ch]\n (illegal-arg-error rdr \"Invalid digit \" ch \" in unicode character.\"))\n"} {:sym throw-invalid-unicode-digit-in-token, :meta {:doc nil, :arglists ([rdr ch token])}, :source "(defn\n throw-invalid-unicode-digit-in-token\n [rdr ch token]\n (illegal-arg-error\n  rdr\n  \"Invalid digit \"\n  ch\n  \" in unicode character \\\\\"\n  token\n  \".\"))\n"} {:sym throw-invalid-unicode-len, :meta {:doc nil, :arglists ([rdr actual expected])}, :source "(defn\n throw-invalid-unicode-len\n [rdr actual expected]\n (illegal-arg-error\n  rdr\n  \"Invalid unicode literal. Unicode literals should be \"\n  expected\n  \"characters long.  \"\n  \"value suppled is \"\n  actual\n  \"characters long.\"))\n"} {:sym throw-single-colon, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-single-colon\n [rdr]\n (reader-error rdr \"A single colon is not a valid keyword.\"))\n"} {:sym throw-odd-map, :meta {:doc nil, :arglists ([rdr line col elements])}, :source "(defn\n throw-odd-map\n [rdr line col elements]\n (reader-error\n  rdr\n  \"The map literal starting with \"\n  (i/inspect (first elements))\n  (if line (str \" on line \" line \" column \" col))\n  \" contains \"\n  (count elements)\n  \" form(s). Map literals must contain an even number of forms.\"))\n"} {:sym throw-bad-octal-number, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n throw-bad-octal-number\n [rdr]\n (reader-error rdr \"Octal escape sequence must be in range [0, 377].\"))\n"} {:sym throw-bad-reader-tag, :meta {:doc nil, :arglists ([rdr tag])}, :source "(defn\n throw-bad-reader-tag\n [rdr tag]\n (reader-error\n  rdr\n  \"Invalid reader tag: \"\n  (i/inspect tag)\n  \". Reader tags must be symbols.\"))\n"} {:sym throw-unmatch-delimiter, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-unmatch-delimiter\n [rdr ch]\n (reader-error rdr \"Unmatched delimiter \" ch \".\"))\n"} {:sym throw-invalid-character-literal, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-character-literal\n [rdr token]\n (reader-error rdr \"Invalid character literal \\\\u\" token \".\"))\n"} {:sym throw-invalid-unicode-char, :meta {:doc nil, :arglists ([rdr token])}, :source "(defn\n throw-invalid-unicode-char\n [rdr token]\n (reader-error rdr \"Invalid unicode character \\\\\" token \".\"))\n"} {:sym throw-bad-escape-char, :meta {:doc nil, :arglists ([rdr ch])}, :source "(defn\n throw-bad-escape-char\n [rdr ch]\n (reader-error rdr \"Unsupported escape character: \\\\\" ch \".\"))\n"} {:sym throw-eof-at-start, :meta {:doc nil, :arglists ([rdr kind])}, :source "(defn\n throw-eof-at-start\n [rdr kind]\n (eof-error\n  rdr\n  \"Unexpected EOF while reading start of \"\n  (name kind)\n  \".\"))\n"} {:sym throw-invalid, :meta {:doc nil, :arglists ([rdr kind token])}, :source "(defn\n throw-invalid\n [rdr kind token]\n (reader-error rdr \"Invalid \" (name kind) \": \" token \".\"))\n"}), iglu.parse ({:sym *fn-dependencies*, :meta {}, :source "(def *fn-dependencies* nil)\n"} {:sym *current-fn*, :meta {}, :source "(def *current-fn* nil)\n"} {:sym fn-name?, :meta {:doc nil, :arglists ([x])}, :source "(defn\n fn-name?\n [x]\n (when\n  (and (symbol? x) *current-fn*)\n  (some->\n   *fn-dependencies*\n   (swap!\n    (fn\n     [deps]\n     (when\n      (contains? (deps x) *current-fn*)\n      (throw\n       (ex-info\n        \"Cyclic dependency detected between functions\"\n        {:first-fn *current-fn*, :second-fn x})))\n     (update\n      deps\n      *current-fn*\n      (fn* [p1__45466#] (conj (set p1__45466#) x)))))))\n (or (symbol? x) (number? x) (string? x)))\n"} {:sym parse, :meta {:doc nil, :arglists ([content])}, :source "(defn\n parse\n [content]\n (let\n  [parsed-content (s/conform :iglu.parse/shader content)]\n  (if\n   (= parsed-content :clojure.spec.alpha/invalid)\n   (throw\n    (ex-info (expound/expound-str :iglu.parse/shader content) {}))\n   (let\n    [*fn-deps (atom {})]\n    (when\n     (map? (:functions content))\n     (doseq\n      [[fn-sym body] (:functions content)]\n      (binding\n       [*fn-dependencies* *fn-deps *current-fn* fn-sym]\n       (s/conform :iglu.parse/function body))))\n    (assoc parsed-content :fn-deps @*fn-deps)))))\n"}), cljs.js ({:sym *load-fn*, :meta {:doc "Each runtime environment provides a different way to load a library.\n  Whatever function *load-fn* is bound to will be passed two arguments - a\n  map and a callback function: The map will have the following keys:\n\n  :name   - the name of the library (a symbol)\n  :macros - modifier signaling a macros namespace load\n  :path   - munged relative library path (a string)\n\n  It is up to the implementor to correctly resolve the corresponding .cljs,\n  .cljc, or .js resource (the order must be respected). If :macros is true\n  resolution should only consider .clj or .cljc resources (the order must be\n  respected). Upon resolution the callback should be invoked with a map\n  containing the following keys:\n\n  :lang       - the language, :clj or :js\n  :source     - the source of the library (a string)\n  :file       - optional, the file path, it will be added to AST's :file keyword\n                (but not in :meta)\n  :cache      - optional, if a :clj namespace has been precompiled to :js, can\n                give an analysis cache for faster loads.\n  :source-map - optional, if a :clj namespace has been precompiled to :js, can\n                give a V3 source map JSON\n\n  If the resource could not be resolved, the callback should be invoked with\n  nil."}, :source "(defonce *load-fn* (fn [m cb] (throw (js/Error. \"No *load-fn* set\"))))\n"} {:sym eval, :meta {:doc "Evaluate a single ClojureScript form. The parameters:\n\n   state (atom)\n     the compiler state\n\n   form (s-expr)\n     the ClojureScript source\n\n   opts (map)\n     compilation options.\n\n      :eval             - eval function to invoke, see *eval-fn*\n      :load             - library resolution function, see *load-fn*\n      :source-map       - set to true to generate inline source map information\n      :def-emits-var    - sets whether def (and derived) forms return either a Var\n                          (if set to true) or the def init value (if false). Default\n                          is false.\n      :checked-arrays   - if :warn or :error, checks inferred types and values passed\n                          to aget/aset. Logs for incorrect values if :warn, throws if\n                          :error. Defaults to false.\n      :static-fns       - employ static dispatch to specific function arities in\n                          emitted JavaScript, as opposed to making use of the\n                          `call` construct. Defaults to false.\n      :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\n                          unknown functions, but instead direct invokes via\n                          `f(a0,a1...)`. Defaults to `false`.\n      :target           - use `:nodejs` if targeting Node.js. Takes no other options\n                          at the moment.\n      :ns               - optional, the namespace in which to evaluate the source.\n      :verbose          - optional, emit details from compiler activity. Defaults to\n                          false.\n      :context          - optional, sets the context for the source. Possible values\n                          are `:expr`, `:statement` and `:return`. Defaults to\n                          `:statement`.\n\n   cb (function)\n     callback, will be invoked with a map. If successful the map will contain\n     a key :value with the result of evalution. If unsuccessful the map will\n     contain a key :error with an ex-info instance describing the cause of\n     failure.", :arglists [[state form cb] [state form opts cb]]}, :source "(defn\n eval\n \"Evaluate a single ClojureScript form. The parameters:\\n\\n   state (atom)\\n     the compiler state\\n\\n   form (s-expr)\\n     the ClojureScript source\\n\\n   opts (map)\\n     compilation options.\\n\\n      :eval             - eval function to invoke, see *eval-fn*\\n      :load             - library resolution function, see *load-fn*\\n      :source-map       - set to true to generate inline source map information\\n      :def-emits-var    - sets whether def (and derived) forms return either a Var\\n                          (if set to true) or the def init value (if false). Default\\n                          is false.\\n      :checked-arrays   - if :warn or :error, checks inferred types and values passed\\n                          to aget/aset. Logs for incorrect values if :warn, throws if\\n                          :error. Defaults to false.\\n      :static-fns       - employ static dispatch to specific function arities in\\n                          emitted JavaScript, as opposed to making use of the\\n                          `call` construct. Defaults to false.\\n      :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\\n                          unknown functions, but instead direct invokes via\\n                          `f(a0,a1...)`. Defaults to `false`.\\n      :target           - use `:nodejs` if targeting Node.js. Takes no other options\\n                          at the moment.\\n      :ns               - optional, the namespace in which to evaluate the source.\\n      :verbose          - optional, emit details from compiler activity. Defaults to\\n                          false.\\n      :context          - optional, sets the context for the source. Possible values\\n                          are `:expr`, `:statement` and `:return`. Defaults to\\n                          `:statement`.\\n\\n   cb (function)\\n     callback, will be invoked with a map. If successful the map will contain\\n     a key :value with the result of evalution. If unsuccessful the map will\\n     contain a key :error with an ex-info instance describing the cause of\\n     failure.\"\n ([state form cb] (eval state form nil cb))\n ([state form opts cb]\n  (eval*\n   {:*compiler* state,\n    :*data-readers* tags/*cljs-data-readers*,\n    :*analyze-deps* (:analyze-deps opts true),\n    :*cljs-dep-set* ana/*cljs-dep-set*,\n    :*load-macros* (:load-macros opts true),\n    :*load-fn* (or (:load opts) *load-fn*),\n    :*eval-fn* (or (:eval opts) *eval-fn*)}\n   form\n   opts\n   cb)))\n"} {:sym compile-str, :meta {:doc "Compile ClojureScript source into JavaScript. The parameters:\n\n   state (atom)\n     the compiler state\n\n   source (string)\n     the ClojureScript source\n\n   name (symbol or string)\n     optional, the name of the source - used as key in :source-maps\n\n   opts (map)\n     compilation options.\n\n      :eval             - eval function to invoke, see *eval-fn*\n      :load             - library resolution function, see *load-fn*\n      :source-map       - set to true to generate inline source map information\n      :def-emits-var    - sets whether def (and derived) forms return either a Var\n                          (if set to true) or the def init value (if false). Default\n                          is false.\n      :checked-arrays   - if :warn or :error, checks inferred types and values passed\n                          to aget/aset. Logs for incorrect values if :warn, throws if\n                          :error. Defaults to false.\n      :static-fns       - employ static dispatch to specific function arities in\n                          emitted JavaScript, as opposed to making use of the\n                          `call` construct. Defaults to false.\n      :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\n                          unknown functions, but instead direct invokes via\n                          `f(a0,a1...)`. Defaults to `false`.\n      :target           - use `:nodejs` if targeting Node.js. Takes no other options\n                          at the moment.\n      :ns               - optional, the namespace in which to evaluate the source.\n      :verbose          - optional, emit details from compiler activity. Defaults to\n                          false.\n      :context          - optional, sets the context for the source. Possible values\n                          are `:expr`, `:statement` and `:return`. Defaults to\n                          `:statement`.\n\n   cb (function)\n     callback, will be invoked with a map. If successful the map will contain\n     a key :value with the compilation result (string). If unsuccessful the map\n     will contain a key :error with an ex-info instance describing the cause\n     of failure.", :arglists [[state source cb] [state source name cb] [state source name opts cb]]}, :source "(defn\n compile-str\n \"Compile ClojureScript source into JavaScript. The parameters:\\n\\n   state (atom)\\n     the compiler state\\n\\n   source (string)\\n     the ClojureScript source\\n\\n   name (symbol or string)\\n     optional, the name of the source - used as key in :source-maps\\n\\n   opts (map)\\n     compilation options.\\n\\n      :eval             - eval function to invoke, see *eval-fn*\\n      :load             - library resolution function, see *load-fn*\\n      :source-map       - set to true to generate inline source map information\\n      :def-emits-var    - sets whether def (and derived) forms return either a Var\\n                          (if set to true) or the def init value (if false). Default\\n                          is false.\\n      :checked-arrays   - if :warn or :error, checks inferred types and values passed\\n                          to aget/aset. Logs for incorrect values if :warn, throws if\\n                          :error. Defaults to false.\\n      :static-fns       - employ static dispatch to specific function arities in\\n                          emitted JavaScript, as opposed to making use of the\\n                          `call` construct. Defaults to false.\\n      :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\\n                          unknown functions, but instead direct invokes via\\n                          `f(a0,a1...)`. Defaults to `false`.\\n      :target           - use `:nodejs` if targeting Node.js. Takes no other options\\n                          at the moment.\\n      :ns               - optional, the namespace in which to evaluate the source.\\n      :verbose          - optional, emit details from compiler activity. Defaults to\\n                          false.\\n      :context          - optional, sets the context for the source. Possible values\\n                          are `:expr`, `:statement` and `:return`. Defaults to\\n                          `:statement`.\\n\\n   cb (function)\\n     callback, will be invoked with a map. If successful the map will contain\\n     a key :value with the compilation result (string). If unsuccessful the map\\n     will contain a key :error with an ex-info instance describing the cause\\n     of failure.\"\n ([state source cb] (compile-str state source nil cb))\n ([state source name cb] (compile-str state source name nil cb))\n ([state source name opts cb]\n  {:pre\n   [(atom? state)\n    (string? source)\n    (valid-name? name)\n    (valid-opts? opts)\n    (fn? cb)]}\n  (compile-str*\n   {:*compiler* state,\n    :*data-readers* tags/*cljs-data-readers*,\n    :*cljs-dep-set* ana/*cljs-dep-set*,\n    :*analyze-deps* (:analyze-deps opts true),\n    :*load-macros* (:load-macros opts true),\n    :*load-fn* (or (:load opts) *load-fn*),\n    :*eval-fn* (or (:eval opts) *eval-fn*),\n    :*sm-data* (when (:source-map opts) (sm-data))}\n   source\n   name\n   opts\n   cb)))\n"} {:sym ns->relpath, :meta {:doc "Given a namespace as a symbol return the relative path sans extension", :arglists ([ns-sym])}, :source "(defn\n ns->relpath\n \"Given a namespace as a symbol return the relative path sans extension\"\n [ns-sym]\n (string/replace (ana/munge-path ns-sym) \\. \\/))\n"} {:sym empty-state, :meta {:doc "Construct an empty compiler state. Required to invoke analyze, compile,\n   eval and eval-str.", :arglists [[] [init]]}, :source "(defn\n empty-state\n \"Construct an empty compiler state. Required to invoke analyze, compile,\\n   eval and eval-str.\"\n ([]\n  (doto\n   (env/default-compiler-env)\n   (swap!\n    (fn\n     [state]\n     (->\n      state\n      (assoc-in\n       [:cljs.analyzer/namespaces 'cljs.core]\n       (dump-core)))))))\n ([init] (doto (empty-state) (swap! init))))\n"} {:sym *loaded*, :meta {}, :source "(def *loaded* (atom #{}))\n"} {:sym require, :meta {:doc nil, :arglists [[name cb] [name opts cb] [bound-vars name opts cb] [bound-vars name reload opts cb]]}, :source "(defn\n require\n ([name cb] (require name nil cb))\n ([name opts cb] (require nil name opts cb))\n ([bound-vars name opts cb] (require bound-vars name nil opts cb))\n ([bound-vars name reload opts cb]\n  (let\n   [bound-vars\n    (merge\n     {:*compiler* (env/default-compiler-env),\n      :*data-readers* tags/*cljs-data-readers*,\n      :*load-macros* (:load-macros opts true),\n      :*analyze-deps* (:analyze-deps opts true),\n      :*load-fn* (or (:load opts) *load-fn*),\n      :*eval-fn* (or (:eval opts) *eval-fn*)}\n     bound-vars)\n    aname\n    (cond-> name (:macros-ns opts) ana/macro-ns-name)]\n   (when (= :reload reload) (swap! *loaded* disj aname))\n   (when (= :reload-all reload) (reset! *loaded* #{}))\n   (when\n    (:verbose opts)\n    (debug-prn\n     (str\n      \"Loading \"\n      name\n      (when (:macros-ns opts) \" macros\")\n      \" namespace\")))\n   (if-not\n    (contains? @*loaded* aname)\n    (let\n     [env (:*env* bound-vars)]\n     (try\n      ((:*load-fn* bound-vars)\n       {:name name,\n        :macros (:macros-ns opts),\n        :path (ns->relpath name)}\n       (fn\n        [resource]\n        (assert\n         (or (map? resource) (nil? resource))\n         \"*load-fn* may only return a map or nil\")\n        (if\n         resource\n         (let\n          [{:keys [lang source cache source-map file]} resource]\n          (condp\n           keyword-identical?\n           lang\n           :clj\n           (do\n            (pre-file-side-effects\n             (:*compiler* bound-vars)\n             aname\n             file\n             opts)\n            (eval-str*\n             bound-vars\n             source\n             name\n             (assoc opts :cljs-file file)\n             (fn\n              [res]\n              (post-file-side-effects file opts)\n              (if\n               (:error res)\n               (cb res)\n               (do (swap! *loaded* conj aname) (cb {:value true}))))))\n           :js\n           (process-macros-deps\n            bound-vars\n            cache\n            opts\n            (fn\n             [res]\n             (if\n              (:error res)\n              (cb res)\n              (process-libs-deps\n               bound-vars\n               cache\n               opts\n               (fn\n                [res]\n                (if\n                 (:error res)\n                 (cb res)\n                 (let\n                  [res\n                   (try\n                    ((:*eval-fn* bound-vars) resource)\n                    (when\n                     cache\n                     (load-analysis-cache!\n                      (:*compiler* bound-vars)\n                      aname\n                      cache)\n                     (ana/register-specs cache))\n                    (when\n                     source-map\n                     (load-source-map!\n                      (:*compiler* bound-vars)\n                      aname\n                      source-map))\n                    (catch\n                     :default\n                     cause\n                     (wrap-error\n                      (ana/error\n                       env\n                       (str \"Could not require \" name)\n                       cause))))]\n                  (if\n                   (:error res)\n                   (cb res)\n                   (do\n                    (swap! *loaded* conj aname)\n                    (cb {:value true}))))))))))\n           (cb\n            (wrap-error\n             (ana/error\n              env\n              (str\n               \"Invalid :lang specified \"\n               lang\n               \", only :clj or :js allowed\"))))))\n         (cb\n          (wrap-error\n           (ana/error\n            env\n            (ana/error-message\n             (if\n              (:macros-ns opts)\n              :undeclared-macros-ns\n              :undeclared-ns)\n             {:ns-sym name, :js-provide (cljs.core/name name)})))))))\n      (catch\n       :default\n       cause\n       (cb\n        (wrap-error\n         (ana/error env (str \"Could not require \" name) cause))))))\n    (cb {:value true})))))\n"} {:sym file->ns, :meta {:doc nil, :arglists ([file])}, :source "(defn\n file->ns\n [file]\n (let\n  [lib-name (subs (string/replace file \"/\" \".\") 0 (- (count file) 5))]\n  (symbol (demunge lib-name))))\n"} {:sym eval-str, :meta {:doc "Evalute ClojureScript source given as a string. The parameters:\n\n  state (atom)\n    the compiler state\n\n  source (string)\n    the ClojureScript source\n\n  name (symbol or string)\n    optional, the name of the source - used as key in :source-maps\n\n  opts (map)\n    compilation options.\n\n    :eval             - eval function to invoke, see *eval-fn*\n    :load             - library resolution function, see *load-fn*\n    :source-map       - set to true to generate inline source map information\n    :cache-source     - optional, a function to run side-effects with the\n                        compilation result prior to actual evalution. This function\n                        takes two arguments, the first is the eval map, the source\n                        will be under :source. The second argument is a callback of\n                        one argument. If an error occurs an :error key should be\n                        supplied.\n    :def-emits-var    - sets whether def (and derived) forms return either a Var\n                        (if set to true) or the def init value (if false). Default\n                        is false.\n    :checked-arrays   - if :warn or :error, checks inferred types and values passed\n                        to aget/aset. Logs for incorrect values if :warn, throws if\n                        :error. Defaults to false.\n    :static-fns       - employ static dispatch to specific function arities in\n                        emitted JavaScript, as opposed to making use of the\n                        `call` construct. Defaults to false.\n    :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\n                        unknown functions, but instead direct invokes via\n                        `f(a0,a1...)`. Defaults to `false`.\n    :target           - use `:nodejs` if targeting Node.js. Takes no other options\n                        at the moment.\n    :ns               - optional, the namespace in which to evaluate the source.\n    :verbose          - optional, emit details from compiler activity. Defaults to\n                        false.\n    :context          - optional, sets the context for the source. Possible values\n                     are `:expr`, `:statement` and `:return`. Defaults to\n                      `:statement`.\n\n  cb (function)\n    callback, will be invoked with a map. If succesful the map will contain\n    a :value key with the result of evaluation and :ns the current namespace.\n    If unsuccessful will contain a :error key with an ex-info instance describing\n    the cause of failure.", :arglists [[state source cb] [state source name cb] [state source name opts cb]]}, :source "(defn\n eval-str\n \"Evalute ClojureScript source given as a string. The parameters:\\n\\n  state (atom)\\n    the compiler state\\n\\n  source (string)\\n    the ClojureScript source\\n\\n  name (symbol or string)\\n    optional, the name of the source - used as key in :source-maps\\n\\n  opts (map)\\n    compilation options.\\n\\n    :eval             - eval function to invoke, see *eval-fn*\\n    :load             - library resolution function, see *load-fn*\\n    :source-map       - set to true to generate inline source map information\\n    :cache-source     - optional, a function to run side-effects with the\\n                        compilation result prior to actual evalution. This function\\n                        takes two arguments, the first is the eval map, the source\\n                        will be under :source. The second argument is a callback of\\n                        one argument. If an error occurs an :error key should be\\n                        supplied.\\n    :def-emits-var    - sets whether def (and derived) forms return either a Var\\n                        (if set to true) or the def init value (if false). Default\\n                        is false.\\n    :checked-arrays   - if :warn or :error, checks inferred types and values passed\\n                        to aget/aset. Logs for incorrect values if :warn, throws if\\n                        :error. Defaults to false.\\n    :static-fns       - employ static dispatch to specific function arities in\\n                        emitted JavaScript, as opposed to making use of the\\n                        `call` construct. Defaults to false.\\n    :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\\n                        unknown functions, but instead direct invokes via\\n                        `f(a0,a1...)`. Defaults to `false`.\\n    :target           - use `:nodejs` if targeting Node.js. Takes no other options\\n                        at the moment.\\n    :ns               - optional, the namespace in which to evaluate the source.\\n    :verbose          - optional, emit details from compiler activity. Defaults to\\n                        false.\\n    :context          - optional, sets the context for the source. Possible values\\n                     are `:expr`, `:statement` and `:return`. Defaults to\\n                      `:statement`.\\n\\n  cb (function)\\n    callback, will be invoked with a map. If succesful the map will contain\\n    a :value key with the result of evaluation and :ns the current namespace.\\n    If unsuccessful will contain a :error key with an ex-info instance describing\\n    the cause of failure.\"\n ([state source cb] (eval-str state source nil cb))\n ([state source name cb] (eval-str state source name nil cb))\n ([state source name opts cb]\n  {:pre\n   [(atom? state)\n    (string? source)\n    (valid-name? name)\n    (valid-opts? opts)\n    (fn? cb)]}\n  (eval-str*\n   {:*compiler* state,\n    :*data-readers* tags/*cljs-data-readers*,\n    :*analyze-deps* (:analyze-deps opts true),\n    :*cljs-dep-set* ana/*cljs-dep-set*,\n    :*load-macros* (:load-macros opts true),\n    :*load-fn* (or (:load opts) *load-fn*),\n    :*eval-fn* (or (:eval opts) *eval-fn*)}\n   source\n   name\n   opts\n   cb)))\n"} {:sym js-eval, :meta {:doc "A default JavaScript evaluation function.", :arglists ([{:keys [source], :as resource}])}, :source "(defn\n js-eval\n \"A default JavaScript evaluation function.\"\n [{:keys [source], :as resource}]\n (js/eval source))\n"} {:sym load-source-map!, :meta {:doc nil, :arglists ([state ns sm-json])}, :source "(defn\n load-source-map!\n [state ns sm-json]\n (let\n  [sm (sm/decode (.parse js/JSON sm-json))]\n  (swap! state assoc-in [:source-maps ns] sm)))\n"} {:sym load-analysis-cache!, :meta {:doc nil, :arglists ([state ns cache])}, :source "(defn\n load-analysis-cache!\n [state ns cache]\n (swap! state assoc-in [:cljs.analyzer/namespaces ns] cache))\n"} {:sym analyze-str, :meta {:doc "Analyze ClojureScript source. The compiler state will be populated with\n   the results of analyzes. The parameters:\n\n   state (atom)\n     the compiler state\n\n   source (string)\n     the ClojureScript source\n\n   name (symbol or string)\n     optional, the name of the source\n\n   opts (map)\n     compilation options.\n\n      :eval             - eval function to invoke, see *eval-fn*\n      :load             - library resolution function, see *load-fn*\n      :source-map       - set to true to generate inline source map information\n      :def-emits-var    - sets whether def (and derived) forms return either a Var\n                          (if set to true) or the def init value (if false).\n                          Defaults to false.\n      :checked-arrays   - if :warn or :error, checks inferred types and values passed\n                          to aget/aset. Logs for incorrect values if :warn, throws if\n                          :error. Defaults to false.\n      :static-fns       - employ static dispatch to specific function arities in\n                          emitted JavaScript, as opposed to making use of the\n                          `call` construct. Defaults to false.\n      :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\n                          unknown functions, but instead direct invokes via\n                          `f(a0,a1...)`. Defaults to `false`.\n      :target           - use `:nodejs` if targeting Node.js. Takes no other options\n                          at the moment.\n      :ns               - optional, the namespace in which to evaluate the source.\n      :verbose          - optional, emit details from compiler activity. Defaults to\n                          false.\n      :context          - optional, sets the context for the source. Possible values\n                          are `:expr`, `:statement` and `:return`. Defaults to\n                          `:statement`.\n\n   cb (function)\n     callback, will be invoked with a map. If successful the map will contain\n     a key :value, the actual value is not meaningful. If unsuccessful the\n     map will contain a key :error with an ex-info instance describing the cause\n     of failure.", :arglists [[state source cb] [state source name cb] [state source name opts cb]]}, :source "(defn\n analyze-str\n \"Analyze ClojureScript source. The compiler state will be populated with\\n   the results of analyzes. The parameters:\\n\\n   state (atom)\\n     the compiler state\\n\\n   source (string)\\n     the ClojureScript source\\n\\n   name (symbol or string)\\n     optional, the name of the source\\n\\n   opts (map)\\n     compilation options.\\n\\n      :eval             - eval function to invoke, see *eval-fn*\\n      :load             - library resolution function, see *load-fn*\\n      :source-map       - set to true to generate inline source map information\\n      :def-emits-var    - sets whether def (and derived) forms return either a Var\\n                          (if set to true) or the def init value (if false).\\n                          Defaults to false.\\n      :checked-arrays   - if :warn or :error, checks inferred types and values passed\\n                          to aget/aset. Logs for incorrect values if :warn, throws if\\n                          :error. Defaults to false.\\n      :static-fns       - employ static dispatch to specific function arities in\\n                          emitted JavaScript, as opposed to making use of the\\n                          `call` construct. Defaults to false.\\n      :fn-invoke-direct - if `true`, does not generate `.call(null...)` calls for\\n                          unknown functions, but instead direct invokes via\\n                          `f(a0,a1...)`. Defaults to `false`.\\n      :target           - use `:nodejs` if targeting Node.js. Takes no other options\\n                          at the moment.\\n      :ns               - optional, the namespace in which to evaluate the source.\\n      :verbose          - optional, emit details from compiler activity. Defaults to\\n                          false.\\n      :context          - optional, sets the context for the source. Possible values\\n                          are `:expr`, `:statement` and `:return`. Defaults to\\n                          `:statement`.\\n\\n   cb (function)\\n     callback, will be invoked with a map. If successful the map will contain\\n     a key :value, the actual value is not meaningful. If unsuccessful the\\n     map will contain a key :error with an ex-info instance describing the cause\\n     of failure.\"\n ([state source cb] (analyze-str state source nil cb))\n ([state source name cb] (analyze-str state source name nil cb))\n ([state source name opts cb]\n  {:pre\n   [(atom? state)\n    (string? source)\n    (valid-name? name)\n    (valid-opts? opts)\n    (fn? cb)]}\n  (analyze-str*\n   {:*compiler* state,\n    :*data-readers* tags/*cljs-data-readers*,\n    :*passes* (or (:passes opts) ana/*passes*),\n    :*analyze-deps* (:analyze-deps opts true),\n    :*cljs-dep-set* ana/*cljs-dep-set*,\n    :*load-macros* (:load-macros opts true),\n    :*load-fn* (or (:load opts) *load-fn*),\n    :*eval-fn* (or (:eval opts) *eval-fn*)}\n   source\n   name\n   opts\n   cb)))\n"} {:sym *eval-fn*, :meta {:doc "Each runtime environment provides various ways to eval JavaScript\n  source. Whatever function *eval-fn* is bound to will be passed a map\n  containing the following keys:\n\n  :source - the source of the library (string)\n  :name   - used to unique identify the script (symbol)\n  :cache  - if the source was originally ClojureScript, will be given the\n            analysis cache.\n\n  The result of evaluation should be the return value."}, :source "(defonce *eval-fn* (fn [m] (throw (js/Error. \"No *eval-fn* set\"))))\n"}), rum.core ({:sym mount, :meta {:doc "Add element to the DOM tree. Idempotent. Subsequent mounts will just update element.", :arglists ([element node])}, :source "(defn\n mount\n \"Add element to the DOM tree. Idempotent. Subsequent mounts will just update element.\"\n [element node]\n (js/ReactDOM.render element node)\n nil)\n"} {:sym unmount, :meta {:doc "Removes component from the DOM tree.", :arglists ([node])}, :source "(defn\n unmount\n \"Removes component from the DOM tree.\"\n [node]\n (js/ReactDOM.unmountComponentAtNode node))\n"} {:sym local, :meta {:doc "Mixin constructor. Adds an atom to component’s state that can be used to keep stuff during component’s lifecycle. Component will be re-rendered if atom’s value changes. Atom is stored under user-provided key or under `:rum/local` by default.\n  \n   ```\n   (rum/defcs counter < (rum/local 0 :cnt)\n     [state label]\n     (let [*cnt (:cnt state)]\n       [:div {:on-click (fn [_] (swap! *cnt inc))}\n         label @*cnt]))\n   \n   (rum/mount (counter \"Click count: \"))\n   ```", :arglists [[initial] [initial key]]}, :source "(defn\n local\n \"Mixin constructor. Adds an atom to component’s state that can be used to keep stuff during component’s lifecycle. Component will be re-rendered if atom’s value changes. Atom is stored under user-provided key or under `:rum/local` by default.\\n  \\n   ```\\n   (rum/defcs counter < (rum/local 0 :cnt)\\n     [state label]\\n     (let [*cnt (:cnt state)]\\n       [:div {:on-click (fn [_] (swap! *cnt inc))}\\n         label @*cnt]))\\n   \\n   (rum/mount (counter \\\"Click count: \\\"))\\n   ```\"\n ([initial] (local initial :rum/local))\n ([initial key]\n  {:will-mount\n   (fn\n    [state]\n    (let\n     [local-state\n      (atom initial)\n      component\n      (:rum/react-component state)]\n     (add-watch\n      local-state\n      key\n      (fn [_ _ _ _] (request-render component)))\n     (assoc state key local-state)))}))\n"} {:sym reactive, :meta {}, :source "(def\n reactive\n \"Mixin. Works in conjunction with [[react]].\\n  \\n   ```\\n   (rum/defc comp < rum/reactive\\n     [*counter]\\n     [:div (rum/react counter)])\\n\\n   (def *counter (atom 0))\\n   (rum/mount (comp *counter) js/document.body)\\n   (swap! *counter inc) ;; will force comp to re-render\\n   ```\"\n {:init\n  (fn [state props] (assoc state :rum.reactive/key (random-uuid))),\n  :wrap-render\n  (fn\n   [render-fn]\n   (fn\n    [state]\n    (binding\n     [*reactions* (volatile! #{})]\n     (let\n      [comp\n       (:rum/react-component state)\n       old-reactions\n       (:rum.reactive/refs state #{})\n       [dom next-state]\n       (render-fn state)\n       new-reactions\n       @*reactions*\n       key\n       (:rum.reactive/key state)]\n      (doseq\n       [ref old-reactions]\n       (when-not (contains? new-reactions ref) (remove-watch ref key)))\n      (doseq\n       [ref new-reactions]\n       (when-not\n        (contains? old-reactions ref)\n        (add-watch ref key (fn [_ _ _ _] (request-render comp)))))\n      [dom (assoc next-state :rum.reactive/refs new-reactions)])))),\n  :will-unmount\n  (fn\n   [state]\n   (let\n    [key (:rum.reactive/key state)]\n    (doseq [ref (:rum.reactive/refs state)] (remove-watch ref key)))\n   (dissoc state :rum.reactive/refs :rum.reactive/key))})\n"} {:sym ref-node, :meta {:doc "Given state and ref handle, returns DOM node associated with ref.", :arglists ([state key])}, :source "(defn\n ref-node\n \"Given state and ref handle, returns DOM node associated with ref.\"\n [state key]\n (js/ReactDOM.findDOMNode (ref state (name key))))\n"} {:sym react, :meta {:doc "Works in conjunction with [[reactive]] mixin. Use this function instead of `deref` inside render, and your component will subscribe to changes happening to the derefed atom.", :arglists ([ref])}, :source "(defn\n react\n \"Works in conjunction with [[reactive]] mixin. Use this function instead of `deref` inside render, and your component will subscribe to changes happening to the derefed atom.\"\n [ref]\n (assert\n  *reactions*\n  \"rum.core/react is only supported in conjunction with rum.core/reactive\")\n (vswap! *reactions* conj ref)\n @ref)\n"} {:sym request-render, :meta {:doc "Schedules react component to be rendered on next animation frame.", :arglists ([component])}, :source "(defn\n request-render\n \"Schedules react component to be rendered on next animation frame.\"\n [component]\n (when (empty? @render-queue) (schedule render))\n (vswap! render-queue conj component))\n"} {:sym portal, :meta {:doc "Render `element` in a DOM `node` that is ouside of current DOM hierarchy.", :arglists ([element node])}, :source "(defn\n portal\n \"Render `element` in a DOM `node` that is ouside of current DOM hierarchy.\"\n [element node]\n (js/ReactDOM.createPortal element node))\n"} {:sym with-key, :meta {:doc "Adds React key to element.\n   \n   ```\n   (rum/defc label [text] [:div text])\n\n   (-> (label)\n       (rum/with-key \"abc\")\n       (rum/mount js/document.body))\n   ```", :arglists ([element key])}, :source "(defn\n with-key\n \"Adds React key to element.\\n   \\n   ```\\n   (rum/defc label [text] [:div text])\\n\\n   (-> (label)\\n       (rum/with-key \\\"abc\\\")\\n       (rum/mount js/document.body))\\n   ```\"\n [element key]\n (js/React.cloneElement element #js {\"key\" key} nil))\n"} {:sym build-defcs, :meta {:doc nil, :arglists ([render-body mixins display-name])}, :source "(defn\n build-defcs\n [render-body mixins display-name]\n (let\n  [render\n   (fn [state] [(apply render-body state (:rum/args state)) state])]\n  (build-ctor render mixins display-name)))\n"} {:sym ref, :meta {:doc "Given state and ref handle, returns React component.", :arglists ([state key])}, :source "(defn\n ref\n \"Given state and ref handle, returns React component.\"\n [state key]\n (-> state :rum/react-component (aget \"refs\") (aget (name key))))\n"} {:sym static, :meta {}, :source "(def\n static\n \"Mixin. Will avoid re-render if none of component’s arguments have changed. Does equality check (`=`) on all arguments.\\n  \\n   ```\\n   (rum/defc label < rum/static\\n     [text]\\n     [:div text])\\n     \\n   (rum/mount (label \\\"abc\\\") js/document.body)\\n\\n   ;; def != abc, will re-render\\n   (rum/mount (label \\\"def\\\") js/document.body)\\n\\n   ;; def == def, won’t re-render\\n   (rum/mount (label \\\"def\\\") js/document.body)\\n   ```\"\n {:should-update\n  (fn\n   [old-state new-state]\n   (not= (:rum/args old-state) (:rum/args new-state)))})\n"} {:sym cursor, :meta {:doc "Same as [[cursor-in]] but accepts single key instead of path vector.", :arglists ([ref key & options])}, :source "(defn\n cursor\n \"Same as [[cursor-in]] but accepts single key instead of path vector.\"\n [ref key & options]\n (apply cursor-in ref [key] options))\n"} {:sym state, :meta {:doc "Given React component, returns Rum state associated with it.", :arglists ([comp])}, :source "(defn\n state\n \"Given React component, returns Rum state associated with it.\"\n [comp]\n (gobj/get (.-state comp) \":rum/state\"))\n"} {:sym cursor-in, :meta {:doc "Given atom with deep nested value and path inside it, creates an atom-like structure\n   that can be used separately from main atom, but will sync changes both ways:\n  \n   ```\n   (def db (atom { :users { \"Ivan\" { :age 30 }}}))\n   \n   (def ivan (rum/cursor db [:users \"Ivan\"]))\n   (deref ivan) ;; => { :age 30 }\n   \n   (swap! ivan update :age inc) ;; => { :age 31 }\n   (deref db) ;; => { :users { \"Ivan\" { :age 31 }}}\n   \n   (swap! db update-in [:users \"Ivan\" :age] inc)\n   ;; => { :users { \"Ivan\" { :age 32 }}}\n   \n   (deref ivan) ;; => { :age 32 }\n   ```\n  \n   Returned value supports `deref`, `swap!`, `reset!`, watches and metadata.\n  \n   The only supported option is `:meta`", :arglists ([ref path & {:as options}])}, :source "(defn\n cursor-in\n \"Given atom with deep nested value and path inside it, creates an atom-like structure\\n   that can be used separately from main atom, but will sync changes both ways:\\n  \\n   ```\\n   (def db (atom { :users { \\\"Ivan\\\" { :age 30 }}}))\\n   \\n   (def ivan (rum/cursor db [:users \\\"Ivan\\\"]))\\n   (deref ivan) ;; => { :age 30 }\\n   \\n   (swap! ivan update :age inc) ;; => { :age 31 }\\n   (deref db) ;; => { :users { \\\"Ivan\\\" { :age 31 }}}\\n   \\n   (swap! db update-in [:users \\\"Ivan\\\" :age] inc)\\n   ;; => { :users { \\\"Ivan\\\" { :age 32 }}}\\n   \\n   (deref ivan) ;; => { :age 32 }\\n   ```\\n  \\n   Returned value supports `deref`, `swap!`, `reset!`, watches and metadata.\\n  \\n   The only supported option is `:meta`\"\n [ref path & {:as options}]\n (if\n  (instance? cursor/Cursor ref)\n  (cursor/Cursor. (.-ref ref) (into (.-path ref) path) (:meta options))\n  (cursor/Cursor. ref path (:meta options))))\n"} {:sym dom-node, :meta {:doc "Given state, returns top-level DOM node of component. Call it during lifecycle callbacks. Can’t be called during render.", :arglists ([state])}, :source "(defn\n dom-node\n \"Given state, returns top-level DOM node of component. Call it during lifecycle callbacks. Can’t be called during render.\"\n [state]\n (js/ReactDOM.findDOMNode (:rum/react-component state)))\n"} {:sym with-ref, :meta {:doc "Adds React ref (string or callback) to element.\n   \n   ```\n   (rum/defc label [text] [:div text])\n\n   (-> (label)\n       (rum/with-ref \"abc\")\n       (rum/mount js/document.body))\n   ```", :arglists ([element ref])}, :source "(defn\n with-ref\n \"Adds React ref (string or callback) to element.\\n   \\n   ```\\n   (rum/defc label [text] [:div text])\\n\\n   (-> (label)\\n       (rum/with-ref \\\"abc\\\")\\n       (rum/mount js/document.body))\\n   ```\"\n [element ref]\n (js/React.cloneElement element #js {\"ref\" ref} nil))\n"} {:sym build-defc, :meta {:doc nil, :arglists ([render-body mixins display-name])}, :source "(defn\n build-defc\n [render-body mixins display-name]\n (if\n  (empty? mixins)\n  (let\n   [class\n    (fn [props] (apply render-body (aget props \":rum/args\")))\n    _\n    (aset class \"displayName\" display-name)\n    ctor\n    (fn\n     [& args]\n     (js/React.createElement class #js {\":rum/args\" args}))]\n   (with-meta ctor {:rum/class class}))\n  (let\n   [render (fn [state] [(apply render-body (:rum/args state)) state])]\n   (build-ctor render mixins display-name))))\n"} {:sym hydrate, :meta {:doc "Same as [[mount]] but must be called on DOM tree already rendered by a server via [[render-html]].", :arglists ([element node])}, :source "(defn\n hydrate\n \"Same as [[mount]] but must be called on DOM tree already rendered by a server via [[render-html]].\"\n [element node]\n (js/ReactDOM.hydrate element node))\n"} {:sym build-defcc, :meta {:doc nil, :arglists ([render-body mixins display-name])}, :source "(defn\n build-defcc\n [render-body mixins display-name]\n (let\n  [render\n   (fn\n    [state]\n    [(apply render-body (:rum/react-component state) (:rum/args state))\n     state])]\n  (build-ctor render mixins display-name)))\n"} {:sym derived-atom, :meta {:arglists (quote ([refs key f] [refs key f opts])), :doc "Use this to create “chains” and acyclic graphs of dependent atoms.\n   \n             [[derived-atom]] will:\n          \n             - Take N “source” refs.\n             - Set up a watch on each of them.\n             - Create “sink” atom.\n             - When any of source refs changes:\n                - re-run function `f`, passing N dereferenced values of source refs.\n                - `reset!` result of `f` to the sink atom.\n             - Return sink atom.\n\n             Example:\n\n             ```\n             (def *a (atom 0))\n             (def *b (atom 1))\n             (def *x (derived-atom [*a *b] ::key\n                       (fn [a b]\n                         (str a \":\" b))))\n             \n             (type *x)  ;; => clojure.lang.Atom\n             (deref *x) ;; => \"0:1\"\n             \n             (swap! *a inc)\n             (deref *x) ;; => \"1:1\"\n             \n             (reset! *b 7)\n             (deref *x) ;; => \"1:7\"\n             ```\n\n             Arguments:\n          \n             - `refs` - sequence of source refs,\n             - `key`  - unique key to register watcher, same as in `clojure.core/add-watch`,\n             - `f`    - function that must accept N arguments (same as number of source refs) and return a value to be written to the sink ref. Note: `f` will be called with already dereferenced values,\n             - `opts` - optional. Map of:\n               - `:ref` - use this as sink ref. By default creates new atom,\n               - `:check-equals?` - Defaults to `true`. If equality check should be run on each source update: `(= @sink (f new-vals))`. When result of recalculating `f` equals to the old value, `reset!` won’t be called. Set to `false` if checking for equality can be expensive."}, :source "(def derived-atom derived-atom/derived-atom)\n"}), cljs.core ({:sym js->clj, :meta {:doc "Recursively transforms JavaScript arrays into ClojureScript\n  vectors, and JavaScript objects into ClojureScript maps.  With\n  option ':keywordize-keys true' will convert object fields from\n  strings to keywords.", :arglists [[x] [x & opts]]}, :source "(defn\n js->clj\n \"Recursively transforms JavaScript arrays into ClojureScript\\n  vectors, and JavaScript objects into ClojureScript maps.  With\\n  option ':keywordize-keys true' will convert object fields from\\n  strings to keywords.\"\n ([x] (js->clj x :keywordize-keys false))\n ([x & opts]\n  (let\n   [{:keys [keywordize-keys]}\n    opts\n    keyfn\n    (if keywordize-keys keyword str)\n    f\n    (fn\n     thisfn\n     [x]\n     (cond\n      (satisfies? IEncodeClojure x)\n      (-js->clj x (apply array-map opts))\n      (seq? x)\n      (doall (map thisfn x))\n      (map-entry? x)\n      (MapEntry. (thisfn (key x)) (thisfn (val x)) nil)\n      (coll? x)\n      (into (empty x) (map thisfn) x)\n      (array? x)\n      (persistent!\n       (reduce\n        (fn*\n         [p1__45442# p2__45443#]\n         (conj! p1__45442# (thisfn p2__45443#)))\n        (transient [])\n        x))\n      (identical? (type x) js/Object)\n      (persistent!\n       (reduce\n        (fn [r k] (assoc! r (keyfn k) (thisfn (gobject/get x k))))\n        (transient {})\n        (js-keys x)))\n      :else\n      x))]\n   (f x))))\n"} {:sym sort-by, :meta {:doc "Returns a sorted sequence of the items in coll, where the sort\n   order is determined by comparing (keyfn item).  Comp can be\n   boolean-valued comparison function, or a -/0/+ valued comparator.\n   Comp defaults to compare.", :arglists [[keyfn coll] [keyfn comp coll]]}, :source "(defn\n sort-by\n \"Returns a sorted sequence of the items in coll, where the sort\\n   order is determined by comparing (keyfn item).  Comp can be\\n   boolean-valued comparison function, or a -/0/+ valued comparator.\\n   Comp defaults to compare.\"\n ([keyfn coll] (sort-by keyfn compare coll))\n ([keyfn comp coll]\n  (sort (fn [x y] ((fn->comparator comp) (keyfn x) (keyfn y))) coll)))\n"} {:sym ITransientAssociative, :meta {:doc "Protocol for adding associativity to transient collections."}, :methods (-assoc!)} {:sym chunk-first, :meta {:doc nil, :arglists ([s])}, :source "(defn chunk-first [s] (-chunked-first s))\n"} {:sym print-meta?, :meta {:doc nil, :arglists ([opts obj])}, :source "(defn\n print-meta?\n [opts obj]\n (and\n  (boolean (get opts :meta))\n  (implements? IMeta obj)\n  (not (nil? (meta obj)))))\n"} {:sym m3-hash-int, :meta {:doc nil, :arglists ([in])}, :source "(defn\n m3-hash-int\n [in]\n (if\n  (zero? in)\n  in\n  (let [k1 (m3-mix-K1 in) h1 (m3-mix-H1 m3-seed k1)] (m3-fmix h1 4))))\n"} {:sym pr-str*, :meta {:doc "Support so that collections can implement toString without\n   loading all the printing machinery.", :arglists ([obj])}, :source "(defn\n pr-str*\n \"Support so that collections can implement toString without\\n   loading all the printing machinery.\"\n [obj]\n (let\n  [sb (StringBuffer.) writer (StringBufferWriter. sb)]\n  (-pr-writer obj writer (pr-opts))\n  (-flush writer)\n  (str sb)))\n"} {:sym eduction, :meta {:doc "Returns a reducible/iterable application of the transducers\n  to the items in coll. Transducers are applied in order as if\n  combined with comp. Note that these applications will be\n  performed every time reduce/iterator is called.", :arglists ([& xforms])}, :source "(defn\n eduction\n \"Returns a reducible/iterable application of the transducers\\n  to the items in coll. Transducers are applied in order as if\\n  combined with comp. Note that these applications will be\\n  performed every time reduce/iterator is called.\"\n {:arglists '([xform* coll])}\n [& xforms]\n (Eduction. (apply comp (butlast xforms)) (last xforms)))\n"} {:sym tree-seq, :meta {:doc "Returns a lazy sequence of the nodes in a tree, via a depth-first walk.\n  branch? must be a fn of one arg that returns true if passed a node\n  that can have children (but may not).  children must be a fn of one\n  arg that returns a sequence of the children. Will only be called on\n  nodes for which branch? returns true. Root is the root node of the\n  tree.", :arglists ([branch? children root])}, :source "(defn\n tree-seq\n \"Returns a lazy sequence of the nodes in a tree, via a depth-first walk.\\n  branch? must be a fn of one arg that returns true if passed a node\\n  that can have children (but may not).  children must be a fn of one\\n  arg that returns a sequence of the children. Will only be called on\\n  nodes for which branch? returns true. Root is the root node of the\\n  tree.\"\n [branch? children root]\n (let\n  [walk\n   (fn\n    walk\n    [node]\n    (lazy-seq\n     (cons node (when (branch? node) (mapcat walk (children node))))))]\n  (walk root)))\n"} {:sym unchecked-remainder-int, :meta {:doc nil, :arglists ([x n])}, :source "(defn\n unchecked-remainder-int\n [x n]\n (cljs.core/unchecked-remainder-int x n))\n"} {:sym uuid, :meta {:doc nil, :arglists ([s])}, :source "(defn uuid [s] (assert (string? s)) (UUID. (.toLowerCase s) nil))\n"} {:sym seq, :meta {:doc "Returns a seq on the collection. If the collection is\n  empty, returns nil.  (seq nil) returns nil. seq also works on\n  Strings.", :arglists ([coll])}, :source "(defn\n seq\n \"Returns a seq on the collection. If the collection is\\n  empty, returns nil.  (seq nil) returns nil. seq also works on\\n  Strings.\"\n [coll]\n (when-not\n  (nil? coll)\n  (cond\n   (implements? ISeqable coll)\n   (-seq coll)\n   (array? coll)\n   (when-not (zero? (alength coll)) (IndexedSeq. coll 0 nil))\n   (string? coll)\n   (when-not (zero? (.-length coll)) (IndexedSeq. coll 0 nil))\n   (js-iterable? coll)\n   (es6-iterator-seq (.call (gobject/get coll ITER_SYMBOL) coll))\n   (native-satisfies? ISeqable coll)\n   (-seq coll)\n   :else\n   (throw (js/Error. (str coll \" is not ISeqable\"))))))\n"} {:sym reduce, :meta {:doc "f should be a function of 2 arguments. If val is not supplied,\n  returns the result of applying f to the first 2 items in coll, then\n  applying f to that result and the 3rd item, etc. If coll contains no\n  items, f must accept no arguments as well, and reduce returns the\n  result of calling f with no arguments.  If coll has only 1 item, it\n  is returned and f is not called.  If val is supplied, returns the\n  result of applying f to val and the first item in coll, then\n  applying f to that result and the 2nd item, etc. If coll contains no\n  items, returns val and f is not called.", :arglists [[f coll] [f val coll]]}, :source "(defn\n reduce\n \"f should be a function of 2 arguments. If val is not supplied,\\n  returns the result of applying f to the first 2 items in coll, then\\n  applying f to that result and the 3rd item, etc. If coll contains no\\n  items, f must accept no arguments as well, and reduce returns the\\n  result of calling f with no arguments.  If coll has only 1 item, it\\n  is returned and f is not called.  If val is supplied, returns the\\n  result of applying f to val and the first item in coll, then\\n  applying f to that result and the 2nd item, etc. If coll contains no\\n  items, returns val and f is not called.\"\n ([f coll]\n  (cond\n   (implements? IReduce coll)\n   (-reduce coll f)\n   (array? coll)\n   (array-reduce coll f)\n   (string? coll)\n   (array-reduce coll f)\n   (native-satisfies? IReduce coll)\n   (-reduce coll f)\n   (iterable? coll)\n   (iter-reduce coll f)\n   :else\n   (seq-reduce f coll)))\n ([f val coll]\n  (cond\n   (implements? IReduce coll)\n   (-reduce coll f val)\n   (array? coll)\n   (array-reduce coll f val)\n   (string? coll)\n   (array-reduce coll f val)\n   (native-satisfies? IReduce coll)\n   (-reduce coll f val)\n   (iterable? coll)\n   (iter-reduce coll f val)\n   :else\n   (seq-reduce f val coll))))\n"} {:sym IUUID, :meta {:doc "A marker protocol for UUIDs"}, :methods ()} {:sym INIT, :meta {}, :source "(def INIT #js {})\n"} {:sym find-ns, :meta {:doc "Returns the namespace named by the symbol or nil if it doesn't exist.\n  Bootstrap only.", :arglists ([ns])}, :source "(defn\n find-ns\n \"Returns the namespace named by the symbol or nil if it doesn't exist.\\n  Bootstrap only.\"\n [ns]\n (when (nil? NS_CACHE) (set! NS_CACHE (atom {})))\n (let\n  [the-ns (get @NS_CACHE ns)]\n  (if-not\n   (nil? the-ns)\n   the-ns\n   (let\n    [ns-obj (find-ns-obj ns)]\n    (when-not\n     (nil? ns-obj)\n     (let\n      [new-ns (create-ns ns ns-obj)]\n      (swap! NS_CACHE assoc ns new-ns)\n      new-ns))))))\n"} {:sym contains?, :meta {:doc "Returns true if key is present in the given collection, otherwise\n  returns false.  Note that for numerically indexed collections like\n  vectors and arrays, this tests if the numeric key is within the\n  range of indexes. 'contains?' operates constant or logarithmic time;\n  it will not perform a linear search for a value.  See also 'some'.", :arglists ([coll v])}, :source "(defn\n contains?\n \"Returns true if key is present in the given collection, otherwise\\n  returns false.  Note that for numerically indexed collections like\\n  vectors and arrays, this tests if the numeric key is within the\\n  range of indexes. 'contains?' operates constant or logarithmic time;\\n  it will not perform a linear search for a value.  See also 'some'.\"\n [coll v]\n (cond\n  (implements? IAssociative coll)\n  (-contains-key? coll v)\n  (native-satisfies? IAssociative coll)\n  (-contains-key? coll v)\n  (identical? (get coll v lookup-sentinel) lookup-sentinel)\n  false\n  :else\n  true))\n"} {:sym every?, :meta {:doc "Returns true if (pred x) is logical true for every x in coll, else\n  false.", :arglists ([pred coll])}, :source "(defn\n every?\n \"Returns true if (pred x) is logical true for every x in coll, else\\n  false.\"\n [pred coll]\n (cond\n  (nil? (seq coll))\n  true\n  (pred (first coll))\n  (recur pred (next coll))\n  :else\n  false))\n"} {:sym keep-indexed, :meta {:doc "Returns a lazy sequence of the non-nil results of (f index item). Note,\n  this means false return values will be included.  f must be free of\n  side-effects.  Returns a stateful transducer when no collection is\n  provided.", :arglists [[f] [f coll]]}, :source "(defn\n keep-indexed\n \"Returns a lazy sequence of the non-nil results of (f index item). Note,\\n  this means false return values will be included.  f must be free of\\n  side-effects.  Returns a stateful transducer when no collection is\\n  provided.\"\n ([f]\n  (fn\n   [rf]\n   (let\n    [ia (volatile! -1)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (let\n       [i (vswap! ia inc) v (f i input)]\n       (if (nil? v) result (rf result v))))))))\n ([f coll]\n  (letfn\n   [(keepi\n     [idx coll]\n     (lazy-seq\n      (when-let\n       [s (seq coll)]\n       (if\n        (chunked-seq? s)\n        (let\n         [c (chunk-first s) size (count c) b (chunk-buffer size)]\n         (dotimes\n          [i size]\n          (let\n           [x (f (+ idx i) (-nth c i))]\n           (when-not (nil? x) (chunk-append b x))))\n         (chunk-cons (chunk b) (keepi (+ idx size) (chunk-rest s))))\n        (let\n         [x (f idx (first s))]\n         (if\n          (nil? x)\n          (keepi (inc idx) (rest s))\n          (cons x (keepi (inc idx) (rest s)))))))))]\n   (keepi 0 coll))))\n"} {:sym subs, :meta {:doc "Returns the substring of s beginning at start inclusive, and ending\n  at end (defaults to length of string), exclusive.", :arglists [[s start] [s start end]]}, :source "(defn\n subs\n \"Returns the substring of s beginning at start inclusive, and ending\\n  at end (defaults to length of string), exclusive.\"\n ([s start] (.substring s start))\n ([s start end] (.substring s start end)))\n"} {:sym js-symbol?, :meta {:doc "Returns true if x is an instance of Symbol", :arglists ([x])}, :source "(defn\n js-symbol?\n \"Returns true if x is an instance of Symbol\"\n [x]\n (or\n  (identical? (goog/typeOf x) \"symbol\")\n  (and (exists? js/Symbol) (instance? js/Symbol x))))\n"} {:sym IFind, :meta {:doc "Protocol for implementing entry finding in collections."}, :methods (-find)} {:sym set, :meta {:doc "Returns a set of the distinct elements of coll.", :arglists ([coll])}, :source "(defn\n set\n \"Returns a set of the distinct elements of coll.\"\n [coll]\n (if\n  (set? coll)\n  (with-meta coll nil)\n  (let\n   [in (seq coll)]\n   (cond\n    (nil? in)\n    #{}\n    (and (instance? IndexedSeq in) (zero? (.-i in)))\n    (.createAsIfByAssoc PersistentHashSet (.-arr in))\n    :else\n    (loop\n     [in in out (-as-transient #{})]\n     (if-not\n      (nil? in)\n      (recur (next in) (-conj! out (-first in)))\n      (persistent! out)))))))\n"} {:sym MODULE_URIS, :meta {}, :source "(def MODULE_URIS nil)\n"} {:sym take-last, :meta {:doc "Returns a seq of the last n items in coll.  Depending on the type\n  of coll may be no better than linear time.  For vectors, see also subvec.", :arglists ([n coll])}, :source "(defn\n take-last\n \"Returns a seq of the last n items in coll.  Depending on the type\\n  of coll may be no better than linear time.  For vectors, see also subvec.\"\n [n coll]\n (loop\n  [s (seq coll) lead (seq (drop n coll))]\n  (if lead (recur (next s) (next lead)) s)))\n"} {:sym bit-set, :meta {:doc "Set bit at index n", :arglists ([x n])}, :source "(defn bit-set \"Set bit at index n\" [x n] (cljs.core/bit-set x n))\n"} {:sym string-hash-cache-count, :meta {}, :source "(def string-hash-cache-count 0)\n"} {:sym qualified-keyword?, :meta {:doc "Return true if x is a keyword with a namespace", :arglists ([x])}, :source "(defn\n qualified-keyword?\n \"Return true if x is a keyword with a namespace\"\n [x]\n (boolean (and (keyword? x) (namespace x) true)))\n"} {:sym -with-meta, :meta {:doc "Returns a new object with value of o and metadata meta added to it.", :arglists ([o meta])}, :protocol IWithMeta} {:sym butlast, :meta {:doc "Return a seq of all but the last item in coll, in linear time", :arglists ([s])}, :source "(defn\n butlast\n \"Return a seq of all but the last item in coll, in linear time\"\n [s]\n (loop\n  [ret [] s s]\n  (if (next s) (recur (conj ret (first s)) (next s)) (seq ret))))\n"} {:sym unchecked-subtract-int, :meta {:doc "If no ys are supplied, returns the negation of x, else subtracts\n  the ys from x and returns the result.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n unchecked-subtract-int\n \"If no ys are supplied, returns the negation of x, else subtracts\\n  the ys from x and returns the result.\"\n ([x] (cljs.core/unchecked-subtract-int x))\n ([x y] (cljs.core/unchecked-subtract-int x y))\n ([x y & more]\n  (reduce\n   unchecked-subtract-int\n   (cljs.core/unchecked-subtract-int x y)\n   more)))\n"} {:sym -iterator, :meta {:doc "Returns an iterator for coll.", :arglists ([coll])}, :protocol IIterable} {:sym *print-namespace-maps*, :meta {:doc "*print-namespace-maps* controls whether the printer will print\n  namespace map literal syntax.\n\n  Defaults to false, but the REPL binds it to true."}, :source "(def *print-namespace-maps* false)\n"} {:sym take-nth, :meta {:doc "Returns a lazy seq of every nth item in coll.  Returns a stateful\n  transducer when no collection is provided.", :arglists [[n] [n coll]]}, :source "(defn\n take-nth\n \"Returns a lazy seq of every nth item in coll.  Returns a stateful\\n  transducer when no collection is provided.\"\n ([n]\n  {:pre [(number? n)]}\n  (fn\n   [rf]\n   (let\n    [ia (volatile! -1)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (let\n       [i (vswap! ia inc)]\n       (if (zero? (rem i n)) (rf result input) result)))))))\n ([n coll]\n  {:pre [(number? n)]}\n  (lazy-seq\n   (when-let [s (seq coll)] (cons (first s) (take-nth n (drop n s)))))))\n"} {:sym first, :meta {:doc "Returns the first item in the collection. Calls seq on its\n  argument. If coll is nil, returns nil.", :arglists ([coll])}, :source "(defn\n first\n \"Returns the first item in the collection. Calls seq on its\\n  argument. If coll is nil, returns nil.\"\n [coll]\n (when-not\n  (nil? coll)\n  (if\n   (implements? ISeq coll)\n   (-first coll)\n   (let [s (seq coll)] (when-not (nil? s) (-first s))))))\n"} {:sym native-satisfies?, :meta {:doc "Internal - do not use!", :arglists ([p x])}, :source "(defn\n native-satisfies?\n \"Internal - do not use!\"\n [p x]\n (let\n  [x (if (nil? x) nil x)]\n  (cond\n   (unchecked-get p (goog/typeOf x))\n   true\n   (unchecked-get p \"_\")\n   true\n   :else\n   false)))\n"} {:sym seq?, :meta {:doc "Return true if s satisfies ISeq", :arglists ([s])}, :source "(defn\n seq?\n \"Return true if s satisfies ISeq\"\n [s]\n (if (nil? s) false (satisfies? ISeq s)))\n"} {:sym -sorted-seq-from, :meta {:doc "Returns a sorted seq from coll in either ascending or descending order.\n     If ascending is true, the result should contain all items which are > or >=\n     than k. If ascending is false, the result should contain all items which\n     are < or <= than k, e.g.\n     (-sorted-seq-from (sorted-set 1 2 3 4 5) 3 true) => (3 4 5)\n     (-sorted-seq-from (sorted-set 1 2 3 4 5) 3 false) => (3 2 1)", :arglists ([coll k ascending?])}, :protocol ISorted} {:sym println-str, :meta {:doc "println to a string, returning it", :arglists ([& objs])}, :source "(defn\n println-str\n \"println to a string, returning it\"\n [& objs]\n (prn-str-with-opts objs (assoc (pr-opts) :readably false)))\n"} {:sym inst-ms, :meta {:doc "Return the number of milliseconds since January 1, 1970, 00:00:00 GMT", :arglists ([inst])}, :source "(defn\n inst-ms\n \"Return the number of milliseconds since January 1, 1970, 00:00:00 GMT\"\n [inst]\n (inst-ms* inst))\n"} {:sym iterate, :meta {:doc "Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects", :arglists ([f x])}, :source "(defn\n iterate\n \"Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects\"\n {:added \"1.0\"}\n [f x]\n (Iterate. nil f nil x nil))\n"} {:sym -empty, :meta {:doc "Returns an empty collection of the same category as coll. Used\n     by cljs.core/empty.", :arglists ([coll])}, :protocol IEmptyableCollection} {:sym newline, :meta {:doc "Prints a newline using *print-fn*", :arglists [[] [opts]]}, :source "(defn\n newline\n \"Prints a newline using *print-fn*\"\n ([] (newline nil))\n ([opts]\n  (string-print \"\\n\")\n  (when (get opts :flush-on-newline) (flush))))\n"} {:sym ILookup, :meta {:doc "Protocol for looking up a value in a data structure."}, :methods (-lookup)} {:sym -chunked-rest, :meta {:doc "Return a new collection of coll with the first chunk removed.", :arglists ([coll])}, :protocol IChunkedSeq} {:sym write-all, :meta {:doc nil, :arglists ([writer & ss])}, :source "(defn write-all [writer & ss] (doseq [s ss] (-write writer s)))\n"} {:sym fn?, :meta {:doc "Return true if f is a JavaScript function or satisfies the Fn protocol.", :arglists ([f])}, :source "(defn\n fn?\n \"Return true if f is a JavaScript function or satisfies the Fn protocol.\"\n [f]\n (or (js-fn? f) (satisfies? Fn f)))\n"} {:sym -prefer-method, :meta {:doc nil, :arglists ([mf dispatch-val dispatch-val-y])}, :protocol IMultiFn} {:sym -assoc, :meta {:doc "Returns a new collection of coll with a mapping from key k to\n     value v added to it.", :arglists ([coll k v])}, :protocol IAssociative} {:sym doall, :meta {:doc "When lazy sequences are produced via functions that have side\n  effects, any effects other than those needed to produce the first\n  element in the seq do not occur until the seq is consumed. doall can\n  be used to force any effects. Walks through the successive nexts of\n  the seq, retains the head and returns it, thus causing the entire\n  seq to reside in memory at one time.", :arglists [[coll] [n coll]]}, :source "(defn\n doall\n \"When lazy sequences are produced via functions that have side\\n  effects, any effects other than those needed to produce the first\\n  element in the seq do not occur until the seq is consumed. doall can\\n  be used to force any effects. Walks through the successive nexts of\\n  the seq, retains the head and returns it, thus causing the entire\\n  seq to reside in memory at one time.\"\n ([coll] (dorun coll) coll)\n ([n coll] (dorun n coll) coll))\n"} {:sym keyword-identical?, :meta {:doc "Efficient test to determine that two keywords are identical.", :arglists ([x y])}, :source "(defn\n keyword-identical?\n \"Efficient test to determine that two keywords are identical.\"\n [x y]\n (if\n  (identical? x y)\n  true\n  (if\n   (and (keyword? x) (keyword? y))\n   (identical? (.-fqn x) (.-fqn y))\n   false)))\n"} {:sym *print-err-fn*, :meta {:doc "Each runtime environment provides a different way to print error output.\n  Whatever function *print-err-fn* is bound to will be passed any\n  Strings which should be printed."}, :source "(defonce *print-err-fn* nil)\n"} {:sym prefers, :meta {:doc "Given a multimethod, returns a map of preferred value -> set of other values", :arglists ([multifn])}, :source "(defn\n prefers\n \"Given a multimethod, returns a map of preferred value -> set of other values\"\n [multifn]\n (-prefers multifn))\n"} {:sym -js->clj, :meta {:doc "Transforms JavaScript values to Clojure", :arglists ([x options])}, :protocol IEncodeClojure} {:sym dedupe, :meta {:doc "Returns a lazy sequence removing consecutive duplicates in coll.\n  Returns a transducer when no collection is provided.", :arglists [[] [coll]]}, :source "(defn\n dedupe\n \"Returns a lazy sequence removing consecutive duplicates in coll.\\n  Returns a transducer when no collection is provided.\"\n ([]\n  (fn\n   [rf]\n   (let\n    [pa (volatile! :cljs.core/none)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (let\n       [prior @pa]\n       (vreset! pa input)\n       (if (= prior input) result (rf result input))))))))\n ([coll] (sequence (dedupe) coll)))\n"} {:sym dissoc, :meta {:doc "dissoc[iate]. Returns a new map of the same (hashed/sorted) type,\n  that does not contain a mapping for key(s).", :arglists [[coll] [coll k] [coll k & ks]]}, :source "(defn\n dissoc\n \"dissoc[iate]. Returns a new map of the same (hashed/sorted) type,\\n  that does not contain a mapping for key(s).\"\n ([coll] coll)\n ([coll k] (when-not (nil? coll) (-dissoc coll k)))\n ([coll k & ks]\n  (when-not\n   (nil? coll)\n   (let\n    [ret (dissoc coll k)]\n    (if ks (recur ret (first ks) (next ks)) ret)))))\n"} {:sym atom, :meta {:doc "Creates and returns an Atom with an initial value of x and zero or\n  more options (in any order):\n\n  :meta metadata-map\n\n  :validator validate-fn\n\n  If metadata-map is supplied, it will become the metadata on the\n  atom. validate-fn must be nil or a side-effect-free fn of one\n  argument, which will be passed the intended new state on any state\n  change. If the new state is unacceptable, the validate-fn should\n  return false or throw an Error.  If either of these error conditions\n  occur, then the value of the atom will not change.", :arglists [[x] [x & {:keys [meta validator]}]]}, :source "(defn\n atom\n \"Creates and returns an Atom with an initial value of x and zero or\\n  more options (in any order):\\n\\n  :meta metadata-map\\n\\n  :validator validate-fn\\n\\n  If metadata-map is supplied, it will become the metadata on the\\n  atom. validate-fn must be nil or a side-effect-free fn of one\\n  argument, which will be passed the intended new state on any state\\n  change. If the new state is unacceptable, the validate-fn should\\n  return false or throw an Error.  If either of these error conditions\\n  occur, then the value of the atom will not change.\"\n ([x] (Atom. x nil nil nil))\n ([x & {:keys [meta validator]}] (Atom. x meta validator nil)))\n"} {:sym bit-shift-right, :meta {:doc "Bitwise shift right", :arglists ([x n])}, :source "(defn\n bit-shift-right\n \"Bitwise shift right\"\n [x n]\n (cljs.core/bit-shift-right x n))\n"} {:sym *clojurescript-version*, :meta {}, :source "(def *clojurescript-version* \"1.11.4\")\n"} {:sym -first, :meta {:doc "Returns the first item in the collection coll. Used by cljs.core/first.", :arglists ([coll])}, :protocol ISeq} {:sym peek, :meta {:doc "For a list or queue, same as first, for a vector, same as, but much\n  more efficient than, last. If the collection is empty, returns nil.", :arglists ([coll])}, :source "(defn\n peek\n \"For a list or queue, same as first, for a vector, same as, but much\\n  more efficient than, last. If the collection is empty, returns nil.\"\n [coll]\n (when-not (nil? coll) (-peek coll)))\n"} {:sym IKVReduce, :meta {:doc "Protocol for associative types that can reduce themselves\n  via a function of key and val. Called by cljs.core/reduce-kv."}, :methods (-kv-reduce)} {:sym aget, :meta {:doc "Returns the value at the index/indices. Works on JavaScript arrays.", :arglists [[array idx] [array idx & idxs]]}, :source "(defn\n aget\n \"Returns the value at the index/indices. Works on JavaScript arrays.\"\n ([array idx] (cljs.core/aget array idx))\n ([array idx & idxs] (apply aget (aget array idx) idxs)))\n"} {:sym -write, :meta {:doc "Writes s with writer and returns the result.", :arglists ([writer s])}, :protocol IWriter} {:sym iter, :meta {:doc nil, :arglists ([coll])}, :source "(defn\n iter\n [coll]\n (cond\n  (iterable? coll)\n  (-iterator coll)\n  (nil? coll)\n  (nil-iter)\n  (string? coll)\n  (string-iter coll)\n  (array? coll)\n  (array-iter coll)\n  (seqable? coll)\n  (seq-iter coll)\n  :else\n  (throw (js/Error. (str \"Cannot create iterator from \" coll)))))\n"} {:sym mk-bound-fn, :meta {:doc nil, :arglists ([sc test key])}, :source "(defn\n mk-bound-fn\n [sc test key]\n (fn\n  [e]\n  (let [comp (-comparator sc)] (test (comp (-entry-key sc e) key) 0))))\n"} {:sym last, :meta {:doc "Return the last item in coll, in linear time", :arglists ([s])}, :source "(defn\n last\n \"Return the last item in coll, in linear time\"\n [s]\n (let [sn (next s)] (if-not (nil? sn) (recur sn) (first s))))\n"} {:sym -default-dispatch-val, :meta {:doc nil, :arglists ([mf])}, :protocol IMultiFn} {:sym pr, :meta {:doc "Prints the object(s) using string-print.  Prints the\n  object(s), separated by spaces if there is more than one.\n  By default, pr and prn print in a way that objects can be\n  read by the reader", :arglists ([& objs])}, :source "(defn\n pr\n \"Prints the object(s) using string-print.  Prints the\\n  object(s), separated by spaces if there is more than one.\\n  By default, pr and prn print in a way that objects can be\\n  read by the reader\"\n [& objs]\n (pr-with-opts objs (pr-opts)))\n"} {:sym namespace, :meta {:doc "Returns the namespace String of a symbol or keyword, or nil if not present.", :arglists ([x])}, :source "(defn\n namespace\n \"Returns the namespace String of a symbol or keyword, or nil if not present.\"\n [x]\n (if\n  (implements? INamed x)\n  (-namespace x)\n  (throw (js/Error. (str \"Doesn't support namespace: \" x)))))\n"} {:sym obj-map, :meta {:doc "keyval => key val\n  Returns a new object map with supplied mappings.", :arglists ([& keyvals])}, :source "(defn\n obj-map\n \"keyval => key val\\n  Returns a new object map with supplied mappings.\"\n [& keyvals]\n (let\n  [ks (array) obj (js-obj)]\n  (loop\n   [kvs (seq keyvals)]\n   (if\n    kvs\n    (do\n     (.push ks (first kvs))\n     (gobject/set obj (first kvs) (second kvs))\n     (recur (nnext kvs)))\n    (.fromObject ObjMap ks obj)))))\n"} {:sym -conj, :meta {:doc "Returns a new collection of coll with o added to it. The new item\n     should be added to the most efficient place, e.g.\n     (conj [1 2 3 4] 5) => [1 2 3 4 5]\n     (conj '(2 3 4 5) 1) => '(1 2 3 4 5)", :arglists ([coll o])}, :protocol ICollection} {:sym =, :meta {:doc "Equality. Returns true if x equals y, false if not. Compares\n  numbers and collections in a type-independent manner.  Clojure's immutable data\n  structures define -equiv (and thus =) as a value, not an identity,\n  comparison.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n =\n \"Equality. Returns true if x equals y, false if not. Compares\\n  numbers and collections in a type-independent manner.  Clojure's immutable data\\n  structures define -equiv (and thus =) as a value, not an identity,\\n  comparison.\"\n ([x] true)\n ([x y] (if (nil? x) (nil? y) (or (identical? x y) (-equiv x y))))\n ([x y & more]\n  (if\n   (= x y)\n   (if\n    (next more)\n    (recur y (first more) (next more))\n    (= y (first more)))\n   false)))\n"} {:sym ITransientMap, :meta {:doc "Protocol for adding mapping functionality to transient collections."}, :methods (-dissoc!)} {:sym take, :meta {:doc "Returns a lazy sequence of the first n items in coll, or all items if\n  there are fewer than n.  Returns a stateful transducer when\n  no collection is provided.", :arglists [[n] [n coll]]}, :source "(defn\n take\n \"Returns a lazy sequence of the first n items in coll, or all items if\\n  there are fewer than n.  Returns a stateful transducer when\\n  no collection is provided.\"\n ([n]\n  {:pre [(number? n)]}\n  (fn\n   [rf]\n   (let\n    [na (volatile! n)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (let\n       [n\n        @na\n        nn\n        (vswap! na dec)\n        result\n        (if (pos? n) (rf result input) result)]\n       (if (not (pos? nn)) (ensure-reduced result) result)))))))\n ([n coll]\n  {:pre [(number? n)]}\n  (lazy-seq\n   (when\n    (pos? n)\n    (when-let\n     [s (seq coll)]\n     (cons (first s) (take (dec n) (rest s))))))))\n"} {:sym vector?, :meta {:doc "Return true if x satisfies IVector", :arglists ([x])}, :source "(defn\n vector?\n \"Return true if x satisfies IVector\"\n [x]\n (satisfies? IVector x))\n"} {:sym boolean, :meta {:doc "Coerce to boolean", :arglists ([x])}, :source "(defn\n boolean\n \"Coerce to boolean\"\n [x]\n (cond (nil? x) false (false? x) false :else true))\n"} {:sym IChunk, :meta {:doc "Protocol for accessing the items of a chunk."}, :methods (-drop-first)} {:sym bit-shift-left, :meta {:doc "Bitwise shift left", :arglists ([x n])}, :source "(defn\n bit-shift-left\n \"Bitwise shift left\"\n [x n]\n (cljs.core/bit-shift-left x n))\n"} {:sym random-uuid, :meta {:doc nil, :arglists ([])}, :source "(defn\n random-uuid\n []\n (letfn\n  [(hex [] (.toString (rand-int 16) 16))]\n  (let\n   [rhex (.toString (bit-or 8 (bit-and 3 (rand-int 16))) 16)]\n   (uuid\n    (str\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     \"-\"\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     \"-\"\n     \"4\"\n     (hex)\n     (hex)\n     (hex)\n     \"-\"\n     rhex\n     (hex)\n     (hex)\n     (hex)\n     \"-\"\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex)\n     (hex))))))\n"} {:sym any?, :meta {:doc "Returns true if given any argument.", :arglists ([x])}, :source "(defn any? \"Returns true if given any argument.\" [x] true)\n"} {:sym rand-int, :meta {:doc "Returns a random integer between 0 (inclusive) and n (exclusive).", :arglists ([n])}, :source "(defn\n rand-int\n \"Returns a random integer between 0 (inclusive) and n (exclusive).\"\n [n]\n (Math/floor (* (Math/random) n)))\n"} {:sym aclone, :meta {:doc "Returns a javascript array, cloned from the passed in array", :arglists ([arr])}, :source "(defn\n aclone\n \"Returns a javascript array, cloned from the passed in array\"\n [arr]\n (let\n  [len (alength arr) new-arr (make-array len)]\n  (dotimes [i len] (aset new-arr i (aget arr i)))\n  new-arr))\n"} {:sym vreset!, :meta {:doc "Sets the value of volatile to newval without regard for the\n   current value. Returns newval.", :arglists ([vol newval])}, :source "(defn\n vreset!\n \"Sets the value of volatile to newval without regard for the\\n   current value. Returns newval.\"\n [vol newval]\n (-vreset! vol newval))\n"} {:sym chunk, :meta {:doc nil, :arglists ([b])}, :source "(defn chunk [b] (.chunk b))\n"} {:sym dec, :meta {:doc "Returns a number one less than num.", :arglists ([x])}, :source "(defn dec \"Returns a number one less than num.\" [x] (- x 1))\n"} {:sym APersistentVector, :meta {:doc "Marker protocol"}, :methods ()} {:sym map, :meta {:doc "Returns a lazy sequence consisting of the result of applying f to\n  the set of first items of each coll, followed by applying f to the\n  set of second items in each coll, until any one of the colls is\n  exhausted.  Any remaining items in other colls are ignored. Function\n  f should accept number-of-colls arguments. Returns a transducer when\n  no collection is provided.", :arglists [[f] [f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls]]}, :source "(defn\n map\n \"Returns a lazy sequence consisting of the result of applying f to\\n  the set of first items of each coll, followed by applying f to the\\n  set of second items in each coll, until any one of the colls is\\n  exhausted.  Any remaining items in other colls are ignored. Function\\n  f should accept number-of-colls arguments. Returns a transducer when\\n  no collection is provided.\"\n ([f]\n  (fn\n   [rf]\n   (fn\n    ([] (rf))\n    ([result] (rf result))\n    ([result input] (rf result (f input)))\n    ([result input & inputs] (rf result (apply f input inputs))))))\n ([f coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (if\n     (chunked-seq? s)\n     (let\n      [c (chunk-first s) size (count c) b (chunk-buffer size)]\n      (dotimes [i size] (chunk-append b (f (-nth c i))))\n      (chunk-cons (chunk b) (map f (chunk-rest s))))\n     (cons (f (first s)) (map f (rest s)))))))\n ([f c1 c2]\n  (lazy-seq\n   (let\n    [s1 (seq c1) s2 (seq c2)]\n    (when\n     (and s1 s2)\n     (cons (f (first s1) (first s2)) (map f (rest s1) (rest s2)))))))\n ([f c1 c2 c3]\n  (lazy-seq\n   (let\n    [s1 (seq c1) s2 (seq c2) s3 (seq c3)]\n    (when\n     (and s1 s2 s3)\n     (cons\n      (f (first s1) (first s2) (first s3))\n      (map f (rest s1) (rest s2) (rest s3)))))))\n ([f c1 c2 c3 & colls]\n  (let\n   [step\n    (fn\n     step\n     [cs]\n     (lazy-seq\n      (let\n       [ss (map seq cs)]\n       (when\n        (every? identity ss)\n        (cons (map first ss) (step (map rest ss)))))))]\n   (map\n    (fn* [p1__45412#] (apply f p1__45412#))\n    (step (conj colls c3 c2 c1))))))\n"} {:sym juxt, :meta {:doc "Takes a set of functions and returns a fn that is the juxtaposition\n  of those fns.  The returned fn takes a variable number of args, and\n  returns a vector containing the result of applying each fn to the\n  args (left-to-right).\n  ((juxt a b c) x) => [(a x) (b x) (c x)]", :arglists [[f] [f g] [f g h] [f g h & fs]]}, :source "(defn\n juxt\n \"Takes a set of functions and returns a fn that is the juxtaposition\\n  of those fns.  The returned fn takes a variable number of args, and\\n  returns a vector containing the result of applying each fn to the\\n  args (left-to-right).\\n  ((juxt a b c) x) => [(a x) (b x) (c x)]\"\n ([f]\n  (fn\n   ([] (vector (f)))\n   ([x] (vector (f x)))\n   ([x y] (vector (f x y)))\n   ([x y z] (vector (f x y z)))\n   ([x y z & args] (vector (apply f x y z args)))))\n ([f g]\n  (fn\n   ([] (vector (f) (g)))\n   ([x] (vector (f x) (g x)))\n   ([x y] (vector (f x y) (g x y)))\n   ([x y z] (vector (f x y z) (g x y z)))\n   ([x y z & args]\n    (vector (apply f x y z args) (apply g x y z args)))))\n ([f g h]\n  (fn\n   ([] (vector (f) (g) (h)))\n   ([x] (vector (f x) (g x) (h x)))\n   ([x y] (vector (f x y) (g x y) (h x y)))\n   ([x y z] (vector (f x y z) (g x y z) (h x y z)))\n   ([x y z & args]\n    (vector\n     (apply f x y z args)\n     (apply g x y z args)\n     (apply h x y z args)))))\n ([f g h & fs]\n  (let\n   [fs (list* f g h fs)]\n   (fn\n    ([]\n     (reduce\n      (fn* [p1__45428# p2__45429#] (conj p1__45428# (p2__45429#)))\n      []\n      fs))\n    ([x]\n     (reduce\n      (fn* [p1__45430# p2__45431#] (conj p1__45430# (p2__45431# x)))\n      []\n      fs))\n    ([x y]\n     (reduce\n      (fn* [p1__45432# p2__45433#] (conj p1__45432# (p2__45433# x y)))\n      []\n      fs))\n    ([x y z]\n     (reduce\n      (fn*\n       [p1__45434# p2__45435#]\n       (conj p1__45434# (p2__45435# x y z)))\n      []\n      fs))\n    ([x y z & args]\n     (reduce\n      (fn*\n       [p1__45436# p2__45437#]\n       (conj p1__45436# (apply p2__45437# x y z args)))\n      []\n      fs))))))\n"} {:sym <, :meta {:doc "Returns non-nil if nums are in monotonically increasing order,\n  otherwise false.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n <\n \"Returns non-nil if nums are in monotonically increasing order,\\n  otherwise false.\"\n ([x] true)\n ([x y] (cljs.core/< x y))\n ([x y & more]\n  (if\n   (cljs.core/< x y)\n   (if\n    (next more)\n    (recur y (first more) (next more))\n    (cljs.core/< y (first more)))\n   false)))\n"} {:sym *eval*, :meta {:doc "Runtime environments may provide a way to evaluate ClojureScript\n  forms. Whatever function *eval* is bound to will be passed any forms which\n  should be evaluated."}, :source "(defonce\n *eval*\n (fn [_] (throw (js/Error. \"cljs.core/*eval* not bound\"))))\n"} {:sym test, :meta {:doc "test [v] finds fn at key :test in var metadata and calls it,\n  presuming failure will throw exception", :arglists ([v])}, :source "(defn\n test\n \"test [v] finds fn at key :test in var metadata and calls it,\\n  presuming failure will throw exception\"\n [v]\n (let [f (.-cljs$lang$test v)] (if f (do (f) :ok) :no-test)))\n"} {:sym rest, :meta {:doc "Returns a possibly empty seq of the items after the first. Calls seq on its\n  argument.", :arglists ([coll])}, :source "(defn\n rest\n \"Returns a possibly empty seq of the items after the first. Calls seq on its\\n  argument.\"\n [coll]\n (if-not\n  (nil? coll)\n  (if\n   (implements? ISeq coll)\n   (-rest coll)\n   (let [s (seq coll)] (if s (-rest s) ())))\n  ()))\n"} {:sym ex-data, :meta {:doc "Returns exception data (a map) if ex is an ExceptionInfo.\n  Otherwise returns nil.", :arglists ([ex])}, :source "(defn\n ex-data\n \"Returns exception data (a map) if ex is an ExceptionInfo.\\n  Otherwise returns nil.\"\n [ex]\n (when (instance? ExceptionInfo ex) (.-data ex)))\n"} {:sym -drop-first, :meta {:doc "Return a new chunk of coll with the first item removed.", :arglists ([coll])}, :protocol IChunk} {:sym isa?, :meta {:doc "Returns true if (= child parent), or child is directly or indirectly derived from\n  parent, either via a JavaScript type inheritance relationship or a\n  relationship established via derive. h must be a hierarchy obtained\n  from make-hierarchy, if not supplied defaults to the global\n  hierarchy", :arglists [[child parent] [h child parent]]}, :source "(defn\n isa?\n \"Returns true if (= child parent), or child is directly or indirectly derived from\\n  parent, either via a JavaScript type inheritance relationship or a\\n  relationship established via derive. h must be a hierarchy obtained\\n  from make-hierarchy, if not supplied defaults to the global\\n  hierarchy\"\n ([child parent] (isa? @(get-global-hierarchy) child parent))\n ([h child parent]\n  (or\n   (= child parent)\n   (contains? ((:ancestors h) child) parent)\n   (and\n    (vector? parent)\n    (vector? child)\n    (== (count parent) (count child))\n    (loop\n     [ret true i 0]\n     (if\n      (or (not ret) (== i (count parent)))\n      ret\n      (recur (isa? h (child i) (parent i)) (inc i))))))))\n"} {:sym boolean?, :meta {:doc "Return true if x is a Boolean", :arglists ([x])}, :source "(defn\n boolean?\n \"Return true if x is a Boolean\"\n [x]\n (or (cljs.core/true? x) (cljs.core/false? x)))\n"} {:sym -clone, :meta {:doc "Creates a clone of value.", :arglists ([value])}, :protocol ICloneable} {:sym munge, :meta {:doc nil, :arglists ([name])}, :source "(defn\n munge\n [name]\n (let\n  [name'\n   (munge-str (str name))\n   name'\n   (cond\n    (identical? name' \"..\")\n    \"_DOT__DOT_\"\n    (js-reserved? name')\n    (str name' \"$\")\n    :else\n    name')]\n  (if (symbol? name) (symbol name') name')))\n"} {:sym DEMUNGE_MAP, :meta {}, :source "(def\n DEMUNGE_MAP\n #js {\"_RBRACE_\" \"}\", \"_COLON_\" \":\", \"_BANG_\" \"!\", \"_QMARK_\" \"?\", \"_BSLASH_\" \"\\\\\\\\\", \"_SLASH_\" \"/\", \"_PERCENT_\" \"%\", \"_PLUS_\" \"+\", \"_SHARP_\" \"#\", \"_LBRACE_\" \"{\", \"_BAR_\" \"|\", \"_LBRACK_\" \"[\", \"_EQ_\" \"=\", \"_\" \"-\", \"_TILDE_\" \"~\", \"_RBRACK_\" \"]\", \"_GT_\" \">\", \"_SINGLEQUOTE_\" \"'\", \"_CIRCA_\" \"@\", \"_AMPERSAND_\" \"&\", \"_DOUBLEQUOTE_\" \"\\\\\\\"\", \"_CARET_\" \"^\", \"_LT_\" \"<\", \"_STAR_\" \"*\"})\n"} {:sym re-seq, :meta {:doc "Returns a lazy sequence of successive matches of re in s.", :arglists ([re s])}, :source "(defn\n re-seq\n \"Returns a lazy sequence of successive matches of re in s.\"\n [re s]\n (if\n  (string? s)\n  (re-seq* re s)\n  (throw (js/TypeError. \"re-seq must match against a string.\"))))\n"} {:sym char?, :meta {:doc "Returns true if x is a JavaScript string of length one.", :arglists ([x])}, :source "(defn\n char?\n \"Returns true if x is a JavaScript string of length one.\"\n [x]\n (and (string? x) (== 1 (.-length x))))\n"} {:sym make-hierarchy, :meta {:doc "Creates a hierarchy object for use with derive, isa? etc.", :arglists ([])}, :source "(defn\n make-hierarchy\n \"Creates a hierarchy object for use with derive, isa? etc.\"\n []\n {:parents {}, :descendants {}, :ancestors {}})\n"} {:sym PROTOCOL_SENTINEL, :meta {}, :source "(defonce PROTOCOL_SENTINEL #js {})\n"} {:sym -reduce, :meta {:doc "f should be a function of 2 arguments. If start is not supplied,\n     returns the result of applying f to the first 2 items in coll, then\n     applying f to that result and the 3rd item, etc.", :arglists ([coll f] [coll f start])}, :protocol IReduce} {:sym -count, :meta {:doc "Calculates the count of coll in constant time. Used by cljs.core/count.", :arglists ([coll])}, :protocol ICounted} {:sym swap-vals!, :meta {:doc "Atomically swaps the value of atom to be:\n  (apply f current-value-of-atom args). Note that f may be called\n  multiple times, and thus should be free of side effects.\n  Returns [old new], the value of the atom before and after the swap.", :arglists [[a f] [a f x] [a f x y] [a f x y & more]]}, :source "(defn\n swap-vals!\n \"Atomically swaps the value of atom to be:\\n  (apply f current-value-of-atom args). Note that f may be called\\n  multiple times, and thus should be free of side effects.\\n  Returns [old new], the value of the atom before and after the swap.\"\n {:added \"1.9\"}\n ([a f] (reset-vals! a (f (.-state a))))\n ([a f x] (reset-vals! a (f (.-state a) x)))\n ([a f x y] (reset-vals! a (f (.-state a) x y)))\n ([a f x y & more] (reset-vals! a (apply f (.-state a) x y more))))\n"} {:sym keep, :meta {:doc "Returns a lazy sequence of the non-nil results of (f item). Note,\n  this means false return values will be included.  f must be free of\n  side-effects.  Returns a transducer when no collection is provided.", :arglists [[f] [f coll]]}, :source "(defn\n keep\n \"Returns a lazy sequence of the non-nil results of (f item). Note,\\n  this means false return values will be included.  f must be free of\\n  side-effects.  Returns a transducer when no collection is provided.\"\n ([f]\n  (fn\n   [rf]\n   (fn\n    ([] (rf))\n    ([result] (rf result))\n    ([result input]\n     (let [v (f input)] (if (nil? v) result (rf result v)))))))\n ([f coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (if\n     (chunked-seq? s)\n     (let\n      [c (chunk-first s) size (count c) b (chunk-buffer size)]\n      (dotimes\n       [i size]\n       (let [x (f (-nth c i))] (when-not (nil? x) (chunk-append b x))))\n      (chunk-cons (chunk b) (keep f (chunk-rest s))))\n     (let\n      [x (f (first s))]\n      (if (nil? x) (keep f (rest s)) (cons x (keep f (rest s))))))))))\n"} {:sym char, :meta {:doc "Coerce to char", :arglists ([x])}, :source "(defn\n char\n \"Coerce to char\"\n [x]\n (cond\n  (number? x)\n  (.fromCharCode js/String x)\n  (and (string? x) (== (.-length x) 1))\n  x\n  :else\n  (throw (js/Error. \"Argument to char must be a character or number\"))))\n"} {:sym mapcat, :meta {:doc "Returns the result of applying concat to the result of applying map\n  to f and colls.  Thus function f should return a collection. Returns\n  a transducer when no collections are provided", :arglists [[f] [f & colls]]}, :source "(defn\n mapcat\n \"Returns the result of applying concat to the result of applying map\\n  to f and colls.  Thus function f should return a collection. Returns\\n  a transducer when no collections are provided\"\n {:added \"1.0\", :static true}\n ([f] (comp (map f) cat))\n ([f & colls] (apply concat (apply map f colls))))\n"} {:sym unchecked-long, :meta {:doc "Coerce to long by stripping decimal places. Identical to `int'.", :arglists ([x])}, :source "(defn\n unchecked-long\n \"Coerce to long by stripping decimal places. Identical to `int'.\"\n [x]\n (fix x))\n"} {:sym m3-seed, :meta {}, :source "(def m3-seed 0)\n"} {:sym some?, :meta {:doc "Returns true if x is not nil, false otherwise.", :arglists ([x])}, :source "(defn\n some?\n \"Returns true if x is not nil, false otherwise.\"\n [x]\n (not (nil? x)))\n"} {:sym unchecked-negate, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-negate [x] (cljs.core/unchecked-negate x))\n"} {:sym remove-tap, :meta {:doc "Remove f from the tap set.", :arglists ([f])}, :source "(defn\n remove-tap\n \"Remove f from the tap set.\"\n [f]\n (maybe-init-tapset)\n (swap! tapset disj f)\n nil)\n"} {:sym symbol-identical?, :meta {:doc "Efficient test to determine that two symbols are identical.", :arglists ([x y])}, :source "(defn\n symbol-identical?\n \"Efficient test to determine that two symbols are identical.\"\n [x y]\n (if\n  (identical? x y)\n  true\n  (if\n   (and (symbol? x) (symbol? y))\n   (identical? (.-str x) (.-str y))\n   false)))\n"} {:sym *command-line-args*, :meta {:doc "A sequence of the supplied command line arguments, or nil if\n  none were supplied"}, :source "(def *command-line-args* nil)\n"} {:sym reverse, :meta {:doc "Returns a seq of the items in coll in reverse order. Not lazy.", :arglists ([coll])}, :source "(defn\n reverse\n \"Returns a seq of the items in coll in reverse order. Not lazy.\"\n [coll]\n (if (reversible? coll) (or (rseq coll) ()) (reduce conj () coll)))\n"} {:sym inst?, :meta {:doc "Return true if x satisfies Inst", :arglists ([x])}, :source "(defn inst? \"Return true if x satisfies Inst\" [x] (satisfies? Inst x))\n"} {:sym range, :meta {:doc "Returns a lazy seq of nums from start (inclusive) to end\n   (exclusive), by step, where start defaults to 0, step to 1,\n   and end to infinity.", :arglists [[] [end] [start end] [start end step]]}, :source "(defn\n range\n \"Returns a lazy seq of nums from start (inclusive) to end\\n   (exclusive), by step, where start defaults to 0, step to 1,\\n   and end to infinity.\"\n ([] (range 0 (.-MAX_VALUE js/Number) 1))\n ([end] (range 0 end 1))\n ([start end] (range start end 1))\n ([start end step]\n  (cond\n   (pos? step)\n   (if\n    (<= end start)\n    ()\n    (if\n     (and (integer? start) (integer? end) (integer? step))\n     (IntegerRange. nil start end step nil nil nil)\n     (Range. nil start end step nil nil nil)))\n   (neg? step)\n   (if\n    (>= end start)\n    ()\n    (if\n     (and (integer? start) (integer? end) (integer? step))\n     (IntegerRange. nil start end step nil nil nil)\n     (Range. nil start end step nil nil nil)))\n   :else\n   (if (== end start) () (repeat start)))))\n"} {:sym bit-count, :meta {:doc "Counts the number of bits set in n", :arglists ([v])}, :source "(defn\n bit-count\n \"Counts the number of bits set in n\"\n [v]\n (let\n  [v\n   (- v (bit-and (bit-shift-right v 1) 1431655765))\n   v\n   (+ (bit-and v 858993459) (bit-and (bit-shift-right v 2) 858993459))]\n  (bit-shift-right\n   (* (bit-and (+ v (bit-shift-right v 4)) 252645135) 16843009)\n   24)))\n"} {:sym sort, :meta {:doc "Returns a sorted sequence of the items in coll. Comp can be\n   boolean-valued comparison function, or a -/0/+ valued comparator.\n   Comp defaults to compare.", :arglists [[coll] [comp coll]]}, :source "(defn\n sort\n \"Returns a sorted sequence of the items in coll. Comp can be\\n   boolean-valued comparison function, or a -/0/+ valued comparator.\\n   Comp defaults to compare.\"\n ([coll] (sort compare coll))\n ([comp coll]\n  (if\n   (seq coll)\n   (let\n    [a (to-array coll)]\n    (garray/stableSort a (fn->comparator comp))\n    (with-meta (seq a) (meta coll)))\n   ())))\n"} {:sym unchecked-inc-int, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-inc-int [x] (cljs.core/unchecked-inc-int x))\n"} {:sym -compare, :meta {:doc "Returns a negative number, zero, or a positive number when x is logically\n     'less than', 'equal to', or 'greater than' y.", :arglists ([x y])}, :protocol IComparable} {:sym map-indexed, :meta {:doc "Returns a lazy sequence consisting of the result of applying f to 0\n  and the first item of coll, followed by applying f to 1 and the second\n  item in coll, etc, until coll is exhausted. Thus function f should\n  accept 2 arguments, index and item. Returns a stateful transducer when\n  no collection is provided.", :arglists [[f] [f coll]]}, :source "(defn\n map-indexed\n \"Returns a lazy sequence consisting of the result of applying f to 0\\n  and the first item of coll, followed by applying f to 1 and the second\\n  item in coll, etc, until coll is exhausted. Thus function f should\\n  accept 2 arguments, index and item. Returns a stateful transducer when\\n  no collection is provided.\"\n ([f]\n  (fn\n   [rf]\n   (let\n    [i (volatile! -1)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input] (rf result (f (vswap! i inc) input)))))))\n ([f coll]\n  (letfn\n   [(mapi\n     [idx coll]\n     (lazy-seq\n      (when-let\n       [s (seq coll)]\n       (if\n        (chunked-seq? s)\n        (let\n         [c (chunk-first s) size (count c) b (chunk-buffer size)]\n         (dotimes [i size] (chunk-append b (f (+ idx i) (-nth c i))))\n         (chunk-cons (chunk b) (mapi (+ idx size) (chunk-rest s))))\n        (cons (f idx (first s)) (mapi (inc idx) (rest s)))))))]\n   (mapi 0 coll))))\n"} {:sym array-list, :meta {:doc nil, :arglists ([])}, :source "(defn array-list [] (ArrayList. (array)))\n"} {:sym rand-nth, :meta {:doc "Return a random element of the (sequential) collection. Will have\n  the same performance characteristics as nth for the given\n  collection.", :arglists ([coll])}, :source "(defn\n rand-nth\n \"Return a random element of the (sequential) collection. Will have\\n  the same performance characteristics as nth for the given\\n  collection.\"\n [coll]\n (nth coll (rand-int (count coll))))\n"} {:sym comp, :meta {:doc "Takes a set of functions and returns a fn that is the composition\n  of those fns.  The returned fn takes a variable number of args,\n  applies the rightmost of fns to the args, the next\n  fn (right-to-left) to the result, etc.", :arglists [[] [f] [f g] [f g h] [f1 f2 f3 & fs]]}, :source "(defn\n comp\n \"Takes a set of functions and returns a fn that is the composition\\n  of those fns.  The returned fn takes a variable number of args,\\n  applies the rightmost of fns to the args, the next\\n  fn (right-to-left) to the result, etc.\"\n ([] identity)\n ([f] f)\n ([f g]\n  (fn\n   ([] (f (g)))\n   ([x] (f (g x)))\n   ([x y] (f (g x y)))\n   ([x y z] (f (g x y z)))\n   ([x y z & args] (f (apply g x y z args)))))\n ([f g h]\n  (fn\n   ([] (f (g (h))))\n   ([x] (f (g (h x))))\n   ([x y] (f (g (h x y))))\n   ([x y z] (f (g (h x y z))))\n   ([x y z & args] (f (g (apply h x y z args))))))\n ([f1 f2 f3 & fs]\n  (let\n   [fs (reverse (list* f1 f2 f3 fs))]\n   (fn\n    [& args]\n    (loop\n     [ret (apply (first fs) args) fs (next fs)]\n     (if fs (recur ((first fs) ret) (next fs)) ret))))))\n"} {:sym array-chunk, :meta {:doc nil, :arglists [[arr] [arr off] [arr off end]]}, :source "(defn\n array-chunk\n ([arr] (ArrayChunk. arr 0 (alength arr)))\n ([arr off] (ArrayChunk. arr off (alength arr)))\n ([arr off end] (ArrayChunk. arr off end)))\n"} {:sym dispatch-fn, :meta {:doc "Given a multimethod, return its dispatch-fn.", :arglists ([multifn])}, :source "(defn\n dispatch-fn\n \"Given a multimethod, return its dispatch-fn.\"\n [multifn]\n (-dispatch-fn multifn))\n"} {:sym bit-shift-right-zero-fill, :meta {:doc "DEPRECATED: Bitwise shift right with zero fill", :arglists ([x n])}, :source "(defn\n bit-shift-right-zero-fill\n \"DEPRECATED: Bitwise shift right with zero fill\"\n [x n]\n (cljs.core/bit-shift-right-zero-fill x n))\n"} {:sym -as-transient, :meta {:doc "Returns a new, transient version of the collection, in constant time.", :arglists ([coll])}, :protocol IEditableCollection} {:sym dorun, :meta {:doc "When lazy sequences are produced via functions that have side\n  effects, any effects other than those needed to produce the first\n  element in the seq do not occur until the seq is consumed. dorun can\n  be used to force any effects. Walks through the successive nexts of\n  the seq, does not retain the head and returns nil.", :arglists [[coll] [n coll]]}, :source "(defn\n dorun\n \"When lazy sequences are produced via functions that have side\\n  effects, any effects other than those needed to produce the first\\n  element in the seq do not occur until the seq is consumed. dorun can\\n  be used to force any effects. Walks through the successive nexts of\\n  the seq, does not retain the head and returns nil.\"\n ([coll] (when-let [s (seq coll)] (recur (next s))))\n ([n coll]\n  (when (and (seq coll) (pos? n)) (recur (dec n) (next coll)))))\n"} {:sym pr-sequential-writer, :meta {:doc nil, :arglists ([writer print-one begin sep end opts coll])}, :source "(defn\n pr-sequential-writer\n [writer print-one begin sep end opts coll]\n (binding\n  [*print-level* (when-not (nil? *print-level*) (dec *print-level*))]\n  (if\n   (and (not (nil? *print-level*)) (neg? *print-level*))\n   (-write writer \"#\")\n   (do\n    (-write writer begin)\n    (if\n     (zero? (:print-length opts))\n     (when (seq coll) (-write writer (or (:more-marker opts) \"...\")))\n     (do\n      (when (seq coll) (print-one (first coll) writer opts))\n      (loop\n       [coll (next coll) n (dec (:print-length opts))]\n       (if\n        (and coll (or (nil? n) (not (zero? n))))\n        (do\n         (-write writer sep)\n         (print-one (first coll) writer opts)\n         (recur (next coll) (dec n)))\n        (when\n         (and (seq coll) (zero? n))\n         (-write writer sep)\n         (-write writer (or (:more-marker opts) \"...\")))))))\n    (-write writer end)))))\n"} {:sym simple-symbol?, :meta {:doc "Return true if x is a symbol without a namespace", :arglists ([x])}, :source "(defn\n simple-symbol?\n \"Return true if x is a symbol without a namespace\"\n [x]\n (and (symbol? x) (nil? (namespace x))))\n"} {:sym IIndexed, :meta {:doc "Protocol for collections to provide indexed-based access to their items."}, :methods (-nth)} {:sym disj, :meta {:doc "disj[oin]. Returns a new set of the same (hashed/sorted) type, that\n  does not contain key(s).", :arglists [[coll] [coll k] [coll k & ks]]}, :source "(defn\n disj\n \"disj[oin]. Returns a new set of the same (hashed/sorted) type, that\\n  does not contain key(s).\"\n ([coll] coll)\n ([coll k] (when-not (nil? coll) (-disjoin coll k)))\n ([coll k & ks]\n  (when-not\n   (nil? coll)\n   (let\n    [ret (disj coll k)]\n    (if ks (recur ret (first ks) (next ks)) ret)))))\n"} {:sym IPrintWithWriter, :meta {:doc "The old IPrintable protocol's implementation consisted of building a giant\n   list of strings to concatenate.  This involved lots of concat calls,\n   intermediate vectors, and lazy-seqs, and was very slow in some older JS\n   engines.  IPrintWithWriter implements printing via the IWriter protocol, so it\n   be implemented efficiently in terms of e.g. a StringBuffer append."}, :methods (-pr-writer)} {:sym IVector, :meta {:doc "Protocol for adding vector functionality to collections."}, :methods (-assoc-n)} {:sym IIterable, :meta {:doc "Protocol for iterating over a collection."}, :methods (-iterator)} {:sym eval, :meta {:doc "Evaluates the form data structure (not text!) and returns the result.\n  Delegates to cljs.core/*eval*. Intended for use in self-hosted ClojureScript,\n  which sets up an implementation of cljs.core/*eval* for that environment.", :arglists ([form])}, :source "(defn\n eval\n \"Evaluates the form data structure (not text!) and returns the result.\\n  Delegates to cljs.core/*eval*. Intended for use in self-hosted ClojureScript,\\n  which sets up an implementation of cljs.core/*eval* for that environment.\"\n [form]\n (*eval* form))\n"} {:sym cons, :meta {:doc "Returns a new seq where x is the first element and coll is the rest.", :arglists ([x coll])}, :source "(defn\n cons\n \"Returns a new seq where x is the first element and coll is the rest.\"\n [x coll]\n (cond\n  (nil? coll)\n  (List. nil x nil 1 nil)\n  (implements? ISeq coll)\n  (Cons. nil x coll nil)\n  :default\n  (Cons. nil x (seq coll) nil)))\n"} {:sym floats, :meta {:doc nil, :arglists ([x])}, :source "(defn floats [x] x)\n"} {:sym pos?, :meta {:doc "Returns true if num is greater than zero, else false", :arglists ([x])}, :source "(defn\n pos?\n \"Returns true if num is greater than zero, else false\"\n [x]\n (cljs.core/pos? x))\n"} {:sym fnil, :meta {:doc "Takes a function f, and returns a function that calls f, replacing\n  a nil first argument to f with the supplied value x. Higher arity\n  versions can replace arguments in the second and third\n  positions (y, z). Note that the function f can take any number of\n  arguments, not just the one(s) being nil-patched.", :arglists [[f x] [f x y] [f x y z]]}, :source "(defn\n fnil\n \"Takes a function f, and returns a function that calls f, replacing\\n  a nil first argument to f with the supplied value x. Higher arity\\n  versions can replace arguments in the second and third\\n  positions (y, z). Note that the function f can take any number of\\n  arguments, not just the one(s) being nil-patched.\"\n ([f x]\n  (fn\n   ([a] (f (if (nil? a) x a)))\n   ([a b] (f (if (nil? a) x a) b))\n   ([a b c] (f (if (nil? a) x a) b c))\n   ([a b c & ds] (apply f (if (nil? a) x a) b c ds))))\n ([f x y]\n  (fn\n   ([a b] (f (if (nil? a) x a) (if (nil? b) y b)))\n   ([a b c] (f (if (nil? a) x a) (if (nil? b) y b) c))\n   ([a b c & ds] (apply f (if (nil? a) x a) (if (nil? b) y b) c ds))))\n ([f x y z]\n  (fn\n   ([a b] (f (if (nil? a) x a) (if (nil? b) y b)))\n   ([a b c] (f (if (nil? a) x a) (if (nil? b) y b) (if (nil? c) z c)))\n   ([a b c & ds]\n    (apply\n     f\n     (if (nil? a) x a)\n     (if (nil? b) y b)\n     (if (nil? c) z c)\n     ds)))))\n"} {:sym merge-with, :meta {:doc "Returns a map that consists of the rest of the maps conj-ed onto\n  the first.  If a key occurs in more than one map, the mapping(s)\n  from the latter (left-to-right) will be combined with the mapping in\n  the result by calling (f val-in-result val-in-latter).", :arglists ([f & maps])}, :source "(defn\n merge-with\n \"Returns a map that consists of the rest of the maps conj-ed onto\\n  the first.  If a key occurs in more than one map, the mapping(s)\\n  from the latter (left-to-right) will be combined with the mapping in\\n  the result by calling (f val-in-result val-in-latter).\"\n [f & maps]\n (when\n  (some identity maps)\n  (let\n   [merge-entry\n    (fn\n     [m e]\n     (let\n      [k (key e) v (val e)]\n      (if (contains? m k) (assoc m k (f (get m k) v)) (assoc m k v))))\n    merge2\n    (fn [m1 m2] (reduce merge-entry (or m1 {}) (seq m2)))]\n   (reduce merge2 maps))))\n"} {:sym nthrest, :meta {:doc "Returns the nth rest of coll, coll when n is 0.", :arglists ([coll n])}, :source "(defn\n nthrest\n \"Returns the nth rest of coll, coll when n is 0.\"\n [coll n]\n (loop\n  [n n xs coll]\n  (if-let [xs (and (pos? n) (seq xs))] (recur (dec n) (rest xs)) xs)))\n"} {:sym *warn-on-infer*, :meta {}, :source "(def *warn-on-infer* false)\n"} {:sym -find, :meta {:doc "Returns the map entry for key, or nil if key not present.", :arglists ([coll k])}, :protocol IFind} {:sym sequential?, :meta {:doc "Returns true if coll satisfies ISequential", :arglists ([x])}, :source "(defn\n sequential?\n \"Returns true if coll satisfies ISequential\"\n [x]\n (satisfies? ISequential x))\n"} {:sym LongImpl, :meta {:doc "INTERNAL: do not use"}, :source "(def LongImpl goog.math.Long)\n"} {:sym m3-mix-H1, :meta {:doc nil, :arglists ([h1 k1])}, :source "(defn\n m3-mix-H1\n [h1 k1]\n (int\n  (->\n   (int h1)\n   (bit-xor (int k1))\n   (int-rotate-left 13)\n   (imul 5)\n   (+ (int 3864292196)))))\n"} {:sym prim-seq, :meta {:doc "Create seq from a primitive JavaScript Array-like.", :arglists [[prim] [prim i]]}, :source "(defn\n prim-seq\n \"Create seq from a primitive JavaScript Array-like.\"\n ([prim] (prim-seq prim 0))\n ([prim i] (when (< i (alength prim)) (IndexedSeq. prim i nil))))\n"} {:sym *print-level*, :meta {:doc "*print-level* controls how many levels deep the printer will\n  print nested objects. If it is bound to logical false, there is no\n  limit. Otherwise, it must be bound to an integer indicating the maximum\n  level to print. Each argument to print is at level 0; if an argument is a\n  collection, its items are at level 1; and so on. If an object is a\n  collection and is at a level greater than or equal to the value bound to\n  *print-level*, the printer prints '#' to represent it. The root binding\n  is nil indicating no limit."}, :source "(def *print-level* nil)\n"} {:sym shuffle, :meta {:doc "Return a random permutation of coll", :arglists ([coll])}, :source "(defn\n shuffle\n \"Return a random permutation of coll\"\n [coll]\n (let [a (to-array coll)] (garray/shuffle a) (vec a)))\n"} {:sym hash-keyword, :meta {:doc nil, :arglists ([k])}, :source "(defn hash-keyword [k] (int (+ (hash-symbol k) 2654435769)))\n"} {:sym find, :meta {:doc "Returns the map entry for key, or nil if key not present.", :arglists ([coll k])}, :source "(defn\n find\n \"Returns the map entry for key, or nil if key not present.\"\n [coll k]\n (if\n  (ifind? coll)\n  (-find coll k)\n  (when\n   (and (not (nil? coll)) (associative? coll) (contains? coll k))\n   (MapEntry. k (get coll k) nil))))\n"} {:sym alength, :meta {:doc "Returns the length of the array. Works on arrays of all types.", :arglists ([array])}, :source "(defn\n alength\n \"Returns the length of the array. Works on arrays of all types.\"\n [array]\n (cljs.core/alength array))\n"} {:sym bit-xor, :meta {:doc "Bitwise exclusive or", :arglists [[x y] [x y & more]]}, :source "(defn\n bit-xor\n \"Bitwise exclusive or\"\n ([x y] (cljs.core/bit-xor x y))\n ([x y & more] (reduce bit-xor (cljs.core/bit-xor x y) more)))\n"} {:sym unsigned-bit-shift-right, :meta {:doc "Bitwise shift right with zero fill", :arglists ([x n])}, :source "(defn\n unsigned-bit-shift-right\n \"Bitwise shift right with zero fill\"\n [x n]\n (cljs.core/unsigned-bit-shift-right x n))\n"} {:sym neg?, :meta {:doc "Returns true if num is less than zero, else false", :arglists ([x])}, :source "(defn\n neg?\n \"Returns true if num is less than zero, else false\"\n [x]\n (cljs.core/neg? x))\n"} {:sym -remove-method, :meta {:doc nil, :arglists ([mf dispatch-val])}, :protocol IMultiFn} {:sym js-invoke, :meta {:doc "Invoke JavaScript object method via string. Needed when the\n  string is not a valid unquoted property name.", :arglists ([obj s & args])}, :source "(defn\n js-invoke\n \"Invoke JavaScript object method via string. Needed when the\\n  string is not a valid unquoted property name.\"\n [obj s & args]\n (.apply (unchecked-get obj s) obj (into-array args)))\n"} {:sym m3-mix-K1, :meta {:doc nil, :arglists ([k1])}, :source "(defn\n m3-mix-K1\n [k1]\n (-> (int k1) (imul m3-C1) (int-rotate-left 15) (imul m3-C2)))\n"} {:sym unchecked-float, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-float [x] x)\n"} {:sym undefined?, :meta {:doc "Returns true if x identical to the JavaScript undefined value.", :arglists ([x])}, :source "(defn\n undefined?\n \"Returns true if x identical to the JavaScript undefined value.\"\n [x]\n (cljs.core/undefined? x))\n"} {:sym IMeta, :meta {:doc "Protocol for accessing the metadata of an object."}, :methods (-meta)} {:sym reduced?, :meta {:doc "Returns true if x is the result of a call to reduced", :arglists ([r])}, :source "(defn\n reduced?\n \"Returns true if x is the result of a call to reduced\"\n [r]\n (instance? Reduced r))\n"} {:sym disj!, :meta {:doc "disj[oin]. Returns a transient set of the same (hashed/sorted) type, that\n  does not contain key(s).", :arglists [[tcoll val] [tcoll val & vals]]}, :source "(defn\n disj!\n \"disj[oin]. Returns a transient set of the same (hashed/sorted) type, that\\n  does not contain key(s).\"\n ([tcoll val] (-disjoin! tcoll val))\n ([tcoll val & vals]\n  (let\n   [ntcoll (-disjoin! tcoll val)]\n   (if vals (recur ntcoll (first vals) (next vals)) ntcoll))))\n"} {:sym -lookup, :meta {:doc "Use k to look up a value in o. If not-found is supplied and k is not\n     a valid value that can be used for look up, not-found is returned.", :arglists ([o k] [o k not-found])}, :protocol ILookup} {:sym float?, :meta {:doc "Returns true for JavaScript numbers, false otherwise.", :arglists ([x])}, :source "(defn\n float?\n \"Returns true for JavaScript numbers, false otherwise.\"\n [x]\n (number? x))\n"} {:sym ICloneable, :meta {:doc "Protocol for cloning a value."}, :methods (-clone)} {:sym IEncodeClojure, :meta {:doc nil}, :methods (-js->clj)} {:sym booleans, :meta {:doc nil, :arglists ([x])}, :source "(defn booleans [x] x)\n"} {:sym int-array, :meta {:doc "Creates an array of ints. Does not coerce array, provided for compatibility\n  with Clojure.", :arglists [[size-or-seq] [size init-val-or-seq]]}, :source "(defn\n int-array\n \"Creates an array of ints. Does not coerce array, provided for compatibility\\n  with Clojure.\"\n ([size-or-seq]\n  (if\n   (number? size-or-seq)\n   (int-array size-or-seq nil)\n   (into-array size-or-seq)))\n ([size init-val-or-seq]\n  (let\n   [a (make-array size)]\n   (if\n    (seq? init-val-or-seq)\n    (let\n     [s (seq init-val-or-seq)]\n     (loop\n      [i 0 s s]\n      (if\n       (and s (< i size))\n       (do (aset a i (first s)) (recur (inc i) (next s)))\n       a)))\n    (do (dotimes [i size] (aset a i init-val-or-seq)) a)))))\n"} {:sym set?, :meta {:doc "Returns true if x satisfies ISet", :arglists ([x])}, :source "(defn\n set?\n \"Returns true if x satisfies ISet\"\n [x]\n (if (nil? x) false (satisfies? ISet x)))\n"} {:sym iterable?, :meta {:doc "Return true if x implements IIterable protocol.", :arglists ([x])}, :source "(defn\n iterable?\n \"Return true if x implements IIterable protocol.\"\n [x]\n (satisfies? IIterable x))\n"} {:sym cat, :meta {:doc "A transducer which concatenates the contents of each input, which must be a\n  collection, into the reduction.", :arglists ([rf])}, :source "(defn\n cat\n \"A transducer which concatenates the contents of each input, which must be a\\n  collection, into the reduction.\"\n {:added \"1.7\"}\n [rf]\n (let\n  [rf1 (preserving-reduced rf)]\n  (fn\n   ([] (rf))\n   ([result] (rf result))\n   ([result input] (reduce rf1 result input)))))\n"} {:sym -pr-writer, :meta {:doc nil, :arglists ([o writer opts])}, :protocol IPrintWithWriter} {:sym flush, :meta {:doc nil, :arglists ([])}, :source "(defn flush [] nil)\n"} {:sym set-from-indexed-seq, :meta {:doc nil, :arglists ([iseq])}, :source "(defn\n set-from-indexed-seq\n [iseq]\n (let\n  [arr\n   (.-arr iseq)\n   ret\n   (areduce arr i res (-as-transient #{}) (-conj! res (aget arr i)))]\n  (-persistent! ret)))\n"} {:sym take-while, :meta {:doc "Returns a lazy sequence of successive items from coll while\n  (pred item) returns logical true. pred must be free of side-effects.\n  Returns a transducer when no collection is provided.", :arglists [[pred] [pred coll]]}, :source "(defn\n take-while\n \"Returns a lazy sequence of successive items from coll while\\n  (pred item) returns logical true. pred must be free of side-effects.\\n  Returns a transducer when no collection is provided.\"\n ([pred]\n  (fn\n   [rf]\n   (fn\n    ([] (rf))\n    ([result] (rf result))\n    ([result input]\n     (if (pred input) (rf result input) (reduced result))))))\n ([pred coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (when\n     (pred (first s))\n     (cons (first s) (take-while pred (rest s))))))))\n"} {:sym vary-meta, :meta {:doc "Returns an object of the same type and value as obj, with\n  (apply f (meta obj) args) as its metadata.", :arglists [[obj f] [obj f a] [obj f a b] [obj f a b c] [obj f a b c d] [obj f a b c d & args]]}, :source "(defn\n vary-meta\n \"Returns an object of the same type and value as obj, with\\n  (apply f (meta obj) args) as its metadata.\"\n ([obj f] (with-meta obj (f (meta obj))))\n ([obj f a] (with-meta obj (f (meta obj) a)))\n ([obj f a b] (with-meta obj (f (meta obj) a b)))\n ([obj f a b c] (with-meta obj (f (meta obj) a b c)))\n ([obj f a b c d] (with-meta obj (f (meta obj) a b c d)))\n ([obj f a b c d & args]\n  (with-meta obj (apply f (meta obj) a b c d args))))\n"} {:sym INext, :meta {:doc "Protocol for accessing the next items of a collection."}, :methods (-next)} {:sym is_proto_, :meta {:doc nil, :arglists ([x])}, :source "(defn is_proto_ [x] (identical? (.-prototype (.-constructor x)) x))\n"} {:sym START, :meta {}, :source "(def START #js {})\n"} {:sym ICounted, :meta {:doc "Protocol for adding the ability to count a collection in constant time."}, :methods (-count)} {:sym IMapEntry, :meta {:doc "Protocol for examining a map entry."}, :methods (-key -val)} {:sym <=, :meta {:doc "Returns non-nil if nums are in monotonically non-decreasing order,\n  otherwise false.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n <=\n \"Returns non-nil if nums are in monotonically non-decreasing order,\\n  otherwise false.\"\n ([x] true)\n ([x y] (cljs.core/<= x y))\n ([x y & more]\n  (if\n   (cljs.core/<= x y)\n   (if\n    (next more)\n    (recur y (first more) (next more))\n    (cljs.core/<= y (first more)))\n   false)))\n"} {:sym MODULE_INFOS, :meta {}, :source "(def MODULE_INFOS nil)\n"} {:sym conj!, :meta {:doc "Adds val to the transient collection, and return tcoll. The 'addition'\n  may happen at different 'places' depending on the concrete type.", :arglists [[] [tcoll] [tcoll val] [tcoll val & vals]]}, :source "(defn\n conj!\n \"Adds val to the transient collection, and return tcoll. The 'addition'\\n  may happen at different 'places' depending on the concrete type.\"\n ([] (transient []))\n ([tcoll] tcoll)\n ([tcoll val] (-conj! tcoll val))\n ([tcoll val & vals]\n  (let\n   [ntcoll (-conj! tcoll val)]\n   (if vals (recur ntcoll (first vals) (next vals)) ntcoll))))\n"} {:sym -pop, :meta {:doc "Returns a new stack without the item on top of the stack. Is used\n     by cljs.core/pop.", :arglists ([coll])}, :protocol IStack} {:sym repeatedly, :meta {:doc "Takes a function of no args, presumably with side effects, and\n  returns an infinite (or length n if supplied) lazy sequence of calls\n  to it", :arglists [[f] [n f]]}, :source "(defn\n repeatedly\n \"Takes a function of no args, presumably with side effects, and\\n  returns an infinite (or length n if supplied) lazy sequence of calls\\n  to it\"\n ([f] (lazy-seq (cons (f) (repeatedly f))))\n ([n f] (take n (repeatedly f))))\n"} {:sym zipmap, :meta {:doc "Returns a map with the keys mapped to the corresponding vals.", :arglists ([keys vals])}, :source "(defn\n zipmap\n \"Returns a map with the keys mapped to the corresponding vals.\"\n [keys vals]\n (loop\n  [map (transient {}) ks (seq keys) vs (seq vals)]\n  (if\n   (and ks vs)\n   (recur (assoc! map (first ks) (first vs)) (next ks) (next vs))\n   (persistent! map))))\n"} {:sym reset-vals!, :meta {:doc "Sets the value of atom to newval. Returns [old new], the value of the\n   atom before and after the reset.", :arglists ([a new-value])}, :source "(defn\n reset-vals!\n \"Sets the value of atom to newval. Returns [old new], the value of the\\n   atom before and after the reset.\"\n {:added \"1.9\"}\n [a new-value]\n (let\n  [validate (.-validator a)]\n  (when-not\n   (nil? validate)\n   (when-not\n    (validate new-value)\n    (throw (js/Error. \"Validator rejected reference state\"))))\n  (let\n   [old-value (.-state a)]\n   (set! (.-state a) new-value)\n   (when-not\n    (nil? (.-watches a))\n    (-notify-watches a old-value new-value))\n   [old-value new-value])))\n"} {:sym IStack, :meta {:doc "Protocol for collections to provide access to their items as stacks. The top\n  of the stack should be accessed in the most efficient way for the different\n  data structures."}, :methods (-peek -pop)} {:sym -remove-watch, :meta {:doc "Removes watcher that corresponds to key from this.", :arglists ([this key])}, :protocol IWatchable} {:sym IVolatile, :meta {:doc "Protocol for adding volatile functionality."}, :methods (-vreset!)} {:sym remove, :meta {:doc "Returns a lazy sequence of the items in coll for which\n  (pred item) returns logical false. pred must be free of side-effects.\n  Returns a transducer when no collection is provided.", :arglists [[pred] [pred coll]]}, :source "(defn\n remove\n \"Returns a lazy sequence of the items in coll for which\\n  (pred item) returns logical false. pred must be free of side-effects.\\n  Returns a transducer when no collection is provided.\"\n ([pred] (filter (complement pred)))\n ([pred coll] (filter (complement pred) coll)))\n"} {:sym *, :meta {:doc "Returns the product of nums. (*) returns 1.", :arglists [[] [x] [x y] [x y & more]]}, :source "(defn\n *\n \"Returns the product of nums. (*) returns 1.\"\n ([] 1)\n ([x] x)\n ([x y] (cljs.core/* x y))\n ([x y & more] (reduce * (cljs.core/* x y) more)))\n"} {:sym re-pattern, :meta {:doc "Returns an instance of RegExp which has compiled the provided string.", :arglists ([s])}, :source "(defn\n re-pattern\n \"Returns an instance of RegExp which has compiled the provided string.\"\n [s]\n (if\n  (instance? js/RegExp s)\n  s\n  (let\n   [[prefix flags]\n    (re-find #\"^\\(\\?([idmsux]*)\\)\" s)\n    pattern\n    (subs s (if (nil? prefix) 0 (count prefix)))]\n   (js/RegExp. pattern (or flags \"\")))))\n"} {:sym min, :meta {:doc "Returns the least of the nums.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n min\n \"Returns the least of the nums.\"\n ([x] x)\n ([x y] (cljs.core/min x y))\n ([x y & more] (reduce min (cljs.core/min x y) more)))\n"} {:sym -persistent!, :meta {:doc "Creates a persistent data structure from tcoll and returns it.", :arglists ([tcoll])}, :protocol ITransientCollection} {:sym -nth, :meta {:doc "Returns the value at the index n in the collection coll.\n     Returns not-found if index n is out of bounds and not-found is supplied.", :arglists ([coll n] [coll n not-found])}, :protocol IIndexed} {:sym pop!, :meta {:doc "Removes the last item from a transient vector. If\n  the collection is empty, throws an exception. Returns tcoll", :arglists ([tcoll])}, :source "(defn\n pop!\n \"Removes the last item from a transient vector. If\\n  the collection is empty, throws an exception. Returns tcoll\"\n [tcoll]\n (-pop! tcoll))\n"} {:sym chunk-append, :meta {:doc nil, :arglists ([b x])}, :source "(defn chunk-append [b x] (.add b x))\n"} {:sym *unchecked-arrays*, :meta {}, :source "(def *unchecked-arrays* false)\n"} {:sym prn-str, :meta {:doc "Same as pr-str followed by (newline)", :arglists ([& objs])}, :source "(defn\n prn-str\n \"Same as pr-str followed by (newline)\"\n [& objs]\n (prn-str-with-opts objs (pr-opts)))\n"} {:sym IReversible, :meta {:doc "Protocol for reversing a seq."}, :methods (-rseq)} {:sym reversible?, :meta {:doc "Returns true if coll satisfies? IReversible.", :arglists ([coll])}, :source "(defn\n reversible?\n \"Returns true if coll satisfies? IReversible.\"\n [coll]\n (satisfies? IReversible coll))\n"} {:sym -realized?, :meta {:doc "Returns true if a value for x has been produced, false otherwise.", :arglists ([x])}, :protocol IPending} {:sym -add-watch, :meta {:doc "Adds a watcher function f to this. Keys must be unique per reference,\n     and can be used to remove the watch with -remove-watch.", :arglists ([this key f])}, :protocol IWatchable} {:sym -deref-with-timeout, :meta {:doc nil, :arglists ([o msec timeout-val])}, :protocol IDerefWithTimeout} {:sym conj, :meta {:doc "conj[oin]. Returns a new collection with the xs\n  'added'. (conj nil item) returns (item).\n  (conj coll) returns coll. (conj) returns [].\n  The 'addition' may happen at different 'places' depending\n  on the concrete type.", :arglists [[] [coll] [coll x] [coll x & xs]]}, :source "(defn\n conj\n \"conj[oin]. Returns a new collection with the xs\\n  'added'. (conj nil item) returns (item).\\n  (conj coll) returns coll. (conj) returns [].\\n  The 'addition' may happen at different 'places' depending\\n  on the concrete type.\"\n ([] [])\n ([coll] coll)\n ([coll x] (if-not (nil? coll) (-conj coll x) (list x)))\n ([coll x & xs]\n  (if xs (recur (conj coll x) (first xs) (next xs)) (conj coll x))))\n"} {:sym -sorted-seq, :meta {:doc "Returns a sorted seq from coll in either ascending or descending order.", :arglists ([coll ascending?])}, :protocol ISorted} {:sym transduce, :meta {:doc "reduce with a transformation of f (xf). If init is not\n  supplied, (f) will be called to produce it. f should be a reducing\n  step function that accepts both 1 and 2 arguments, if it accepts\n  only 2 you can add the arity-1 with 'completing'. Returns the result\n  of applying (the transformed) xf to init and the first item in coll,\n  then applying xf to that result and the 2nd item, etc. If coll\n  contains no items, returns init and f is not called. Note that\n  certain transforms may inject or skip items.", :arglists [[xform f coll] [xform f init coll]]}, :source "(defn\n transduce\n \"reduce with a transformation of f (xf). If init is not\\n  supplied, (f) will be called to produce it. f should be a reducing\\n  step function that accepts both 1 and 2 arguments, if it accepts\\n  only 2 you can add the arity-1 with 'completing'. Returns the result\\n  of applying (the transformed) xf to init and the first item in coll,\\n  then applying xf to that result and the 2nd item, etc. If coll\\n  contains no items, returns init and f is not called. Note that\\n  certain transforms may inject or skip items.\"\n ([xform f coll] (transduce xform f (f) coll))\n ([xform f init coll]\n  (let [f (xform f) ret (reduce f init coll)] (f ret))))\n"} {:sym -swap!, :meta {:doc "Swaps the value of o to be (apply f current-value-of-atom args).", :arglists ([o f] [o f a] [o f a b] [o f a b xs])}, :protocol ISwap} {:sym *print-length*, :meta {:doc "*print-length* controls how many items of each collection the\n  printer will print. If it is bound to logical false, there is no\n  limit. Otherwise, it must be bound to an integer indicating the maximum\n  number of items of each collection to print. If a collection contains\n  more items, the printer will print items up to the limit followed by\n  '...' to represent the remaining items. The root binding is nil\n  indicating no limit."}, :source "(def *print-length* nil)\n"} {:sym js-delete, :meta {:doc "Delete a property from a JavaScript object.\n  Returns true upon success, false otherwise.", :arglists ([obj key])}, :source "(defn\n js-delete\n \"Delete a property from a JavaScript object.\\n  Returns true upon success, false otherwise.\"\n [obj key]\n (cljs.core/js-delete obj key))\n"} {:sym truth_, :meta {:doc "Internal - do not use!", :arglists ([x])}, :source "(defn truth_ \"Internal - do not use!\" [x] (cljs.core/truth_ x))\n"} {:sym array-index-of, :meta {:doc nil, :arglists ([arr k])}, :source "(defn\n array-index-of\n [arr k]\n (cond\n  (keyword? k)\n  (array-index-of-keyword? arr k)\n  (or (string? k) (number? k))\n  (array-index-of-identical? arr k)\n  (symbol? k)\n  (array-index-of-symbol? arr k)\n  (nil? k)\n  (array-index-of-nil? arr)\n  :else\n  (array-index-of-equiv? arr k)))\n"} {:sym key->js, :meta {:doc nil, :arglists [[k] [k primitive-fn]]}, :source "(defn\n key->js\n ([k] (key->js k clj->js))\n ([k primitive-fn]\n  (cond\n   (satisfies? IEncodeJS k)\n   (-clj->js k)\n   (or (string? k) (number? k) (keyword? k) (symbol? k))\n   (primitive-fn k)\n   :default\n   (pr-str k))))\n"} {:sym IEncodeJS, :meta {:doc nil}, :methods (-clj->js -key->js)} {:sym compare-and-set!, :meta {:doc "Atomically sets the value of atom to newval if and only if the\n  current value of the atom is equal to oldval. Returns true if\n  set happened, else false.", :arglists ([a oldval newval])}, :source "(defn\n compare-and-set!\n \"Atomically sets the value of atom to newval if and only if the\\n  current value of the atom is equal to oldval. Returns true if\\n  set happened, else false.\"\n [a oldval newval]\n (if (= (-deref a) oldval) (do (reset! a newval) true) false))\n"} {:sym array-seq, :meta {:doc "Create a seq from a JavaScript array.", :arglists [[array] [array i]]}, :source "(defn\n array-seq\n \"Create a seq from a JavaScript array.\"\n ([array] (prim-seq array 0))\n ([array i] (prim-seq array i)))\n"} {:sym interleave, :meta {:doc "Returns a lazy seq of the first item in each coll, then the second etc.", :arglists [[] [c1] [c1 c2] [c1 c2 & colls]]}, :source "(defn\n interleave\n \"Returns a lazy seq of the first item in each coll, then the second etc.\"\n ([] ())\n ([c1] (lazy-seq c1))\n ([c1 c2]\n  (lazy-seq\n   (let\n    [s1 (seq c1) s2 (seq c2)]\n    (when\n     (and s1 s2)\n     (cons\n      (first s1)\n      (cons (first s2) (interleave (rest s1) (rest s2))))))))\n ([c1 c2 & colls]\n  (lazy-seq\n   (let\n    [ss (map seq (conj colls c2 c1))]\n    (when\n     (every? identity ss)\n     (concat (map first ss) (apply interleave (map rest ss))))))))\n"} {:sym print-map, :meta {:doc nil, :arglists ([m print-one writer opts])}, :source "(defn\n print-map\n [m print-one writer opts]\n (let\n  [[ns lift-map] (when (map? m) (lift-ns m))]\n  (if\n   ns\n   (print-prefix-map (str \"#:\" ns) lift-map print-one writer opts)\n   (print-prefix-map nil m print-one writer opts))))\n"} {:sym map?, :meta {:doc "Return true if x satisfies IMap", :arglists ([x])}, :source "(defn\n map?\n \"Return true if x satisfies IMap\"\n [x]\n (if (nil? x) false (satisfies? IMap x)))\n"} {:sym m3-C1, :meta {}, :source "(def m3-C1 (int 3432918353))\n"} {:sym get, :meta {:doc "Returns the value mapped to key, not-found or nil if key not present.", :arglists [[o k] [o k not-found]]}, :source "(defn\n get\n \"Returns the value mapped to key, not-found or nil if key not present.\"\n ([o k]\n  (when-not\n   (nil? o)\n   (cond\n    (implements? ILookup o)\n    (-lookup o k)\n    (array? o)\n    (when (and (some? k) (< k (.-length o))) (aget o (int k)))\n    (string? o)\n    (when (and (some? k) (< -1 k (.-length o))) (.charAt o (int k)))\n    (native-satisfies? ILookup o)\n    (-lookup o k)\n    :else\n    nil)))\n ([o k not-found]\n  (if-not\n   (nil? o)\n   (cond\n    (implements? ILookup o)\n    (-lookup o k not-found)\n    (array? o)\n    (if\n     (and (some? k) (< -1 k (.-length o)))\n     (aget o (int k))\n     not-found)\n    (string? o)\n    (if\n     (and (some? k) (< -1 k (.-length o)))\n     (.charAt o (int k))\n     not-found)\n    (native-satisfies? ILookup o)\n    (-lookup o k not-found)\n    :else\n    not-found)\n   not-found)))\n"} {:sym identity, :meta {:doc "Returns its argument.", :arglists ([x])}, :source "(defn identity \"Returns its argument.\" [x] x)\n"} {:sym into, :meta {:doc "Returns a new coll consisting of to-coll with all of the items of\n  from-coll conjoined. A transducer may be supplied.", :arglists [[] [to] [to from] [to xform from]]}, :source "(defn\n into\n \"Returns a new coll consisting of to-coll with all of the items of\\n  from-coll conjoined. A transducer may be supplied.\"\n ([] [])\n ([to] to)\n ([to from]\n  (if-not\n   (nil? to)\n   (if\n    (implements? IEditableCollection to)\n    (-with-meta\n     (persistent! (reduce -conj! (transient to) from))\n     (meta to))\n    (reduce -conj to from))\n   (reduce conj to from)))\n ([to xform from]\n  (if\n   (implements? IEditableCollection to)\n   (-with-meta\n    (persistent! (transduce xform conj! (transient to) from))\n    (meta to))\n   (transduce xform conj to from))))\n"} {:sym long, :meta {:doc "Coerce to long by stripping decimal places. Identical to `int'.", :arglists ([x])}, :source "(defn\n long\n \"Coerce to long by stripping decimal places. Identical to `int'.\"\n [x]\n (fix x))\n"} {:sym double, :meta {:doc nil, :arglists ([x])}, :source "(defn double [x] x)\n"} {:sym volatile?, :meta {:doc "Returns true if x is a volatile.", :arglists ([x])}, :source "(defn\n volatile?\n \"Returns true if x is a volatile.\"\n [x]\n (instance? Volatile x))\n"} {:sym -key, :meta {:doc "Returns the key of the map entry.", :arglists ([coll])}, :protocol IMapEntry} {:sym nfirst, :meta {:doc "Same as (next (first x))", :arglists ([coll])}, :source "(defn nfirst \"Same as (next (first x))\" [coll] (next (first coll)))\n"} {:sym meta, :meta {:doc "Returns the metadata of obj, returns nil if there is no metadata.", :arglists ([o])}, :source "(defn\n meta\n \"Returns the metadata of obj, returns nil if there is no metadata.\"\n [o]\n (when (and (not (nil? o)) (satisfies? IMeta o)) (-meta o)))\n"} {:sym -kv-reduce, :meta {:doc "Reduces an associative collection and returns the result. f should be\n     a function that takes three arguments.", :arglists ([coll f init])}, :protocol IKVReduce} {:sym IHash, :meta {:doc "Protocol for adding hashing functionality to a type."}, :methods (-hash)} {:sym bit-and-not, :meta {:doc "Bitwise and with complement", :arglists [[x y] [x y & more]]}, :source "(defn\n bit-and-not\n \"Bitwise and with complement\"\n ([x y] (cljs.core/bit-and-not x y))\n ([x y & more] (reduce bit-and-not (cljs.core/bit-and-not x y) more)))\n"} {:sym var?, :meta {:doc "Returns true if v is of type cljs.core.Var", :arglists ([v])}, :source "(defn\n var?\n \"Returns true if v is of type cljs.core.Var\"\n [v]\n (instance? cljs.core.Var v))\n"} {:sym -comparator, :meta {:doc "Returns the comparator for coll.", :arglists ([coll])}, :protocol ISorted} {:sym unchecked-add-int, :meta {:doc "Returns the sum of nums. (+) returns 0.", :arglists [[] [x] [x y] [x y & more]]}, :source "(defn\n unchecked-add-int\n \"Returns the sum of nums. (+) returns 0.\"\n ([] 0)\n ([x] x)\n ([x y] (cljs.core/unchecked-add-int x y))\n ([x y & more]\n  (reduce unchecked-add-int (cljs.core/unchecked-add-int x y) more)))\n"} {:sym hash-ordered-coll, :meta {:doc "Returns the hash code, consistent with =, for an external ordered\n   collection implementing Iterable.\n   See http://clojure.org/data_structures#hash for full algorithms.", :arglists ([coll])}, :source "(defn\n hash-ordered-coll\n \"Returns the hash code, consistent with =, for an external ordered\\n   collection implementing Iterable.\\n   See http://clojure.org/data_structures#hash for full algorithms.\"\n [coll]\n (loop\n  [n 0 hash-code 1 coll (seq coll)]\n  (if-not\n   (nil? coll)\n   (recur\n    (inc n)\n    (bit-or (+ (imul 31 hash-code) (hash (first coll))) 0)\n    (next coll))\n   (mix-collection-hash hash-code n))))\n"} {:sym reset-meta!, :meta {:doc "Atomically resets the metadata for an atom", :arglists ([iref m])}, :source "(defn\n reset-meta!\n \"Atomically resets the metadata for an atom\"\n [iref m]\n (set! (.-meta iref) m))\n"} {:sym IEquiv, :meta {:doc "Protocol for adding value comparison functionality to a type."}, :methods (-equiv)} {:sym cycle, :meta {:doc "Returns a lazy (infinite!) sequence of repetitions of the items in coll.", :arglists ([coll])}, :source "(defn\n cycle\n \"Returns a lazy (infinite!) sequence of repetitions of the items in coll.\"\n [coll]\n (if-let\n  [vals (seq coll)]\n  (Cycle. nil vals nil vals nil)\n  (.-EMPTY List)))\n"} {:sym -deref, :meta {:doc "Returns the value of the reference o.", :arglists ([o])}, :protocol IDeref} {:sym empty?, :meta {:doc "Returns true if coll has no items - same as (not (seq coll)).\n  Please use the idiom (seq x) rather than (not (empty? x))", :arglists ([coll])}, :source "(defn\n empty?\n \"Returns true if coll has no items - same as (not (seq coll)).\\n  Please use the idiom (seq x) rather than (not (empty? x))\"\n [coll]\n (or (nil? coll) (not (seq coll))))\n"} {:sym short, :meta {:doc nil, :arglists ([x])}, :source "(defn short [x] x)\n"} {:sym -clj->js, :meta {:doc "Recursively transforms clj values to JavaScript", :arglists ([x])}, :protocol IEncodeJS} {:sym -chunked-first, :meta {:doc "Returns the first chunk in coll.", :arglists ([coll])}, :protocol IChunkedSeq} {:sym add-tap, :meta {:doc "Adds f, a fn of one argument, to the tap set. This function will be called with\n  anything sent via tap>. Remember f in order to remove-tap", :arglists ([f])}, :source "(defn\n add-tap\n \"Adds f, a fn of one argument, to the tap set. This function will be called with\\n  anything sent via tap>. Remember f in order to remove-tap\"\n [f]\n (maybe-init-tapset)\n (swap! tapset conj f)\n nil)\n"} {:sym filterv, :meta {:doc "Returns a vector of the items in coll for which\n  (pred item) returns logical true. pred must be free of side-effects.", :arglists ([pred coll])}, :source "(defn\n filterv\n \"Returns a vector of the items in coll for which\\n  (pred item) returns logical true. pred must be free of side-effects.\"\n [pred coll]\n (->\n  (reduce (fn [v o] (if (pred o) (conj! v o) v)) (transient []) coll)\n  persistent!))\n"} {:sym hash, :meta {:doc "Returns the hash code of its argument. Note this is the hash code\n   consistent with =.", :arglists ([o])}, :source "(defn\n hash\n \"Returns the hash code of its argument. Note this is the hash code\\n   consistent with =.\"\n [o]\n (cond\n  (implements? IHash o)\n  (bit-xor (-hash o) 0)\n  (number? o)\n  (if\n   (js/isFinite o)\n   (js-mod (Math/floor o) 2147483647)\n   (case o ##Inf 2146435072 ##-Inf -1048576 2146959360))\n  (true? o)\n  1231\n  (false? o)\n  1237\n  (string? o)\n  (m3-hash-int (hash-string o))\n  (instance? js/Date o)\n  (bit-xor (.valueOf o) 0)\n  (nil? o)\n  0\n  :else\n  (bit-xor (-hash o) 0)))\n"} {:sym quot, :meta {:doc "quot[ient] of dividing numerator by denominator.", :arglists ([n d])}, :source "(defn\n quot\n \"quot[ient] of dividing numerator by denominator.\"\n [n d]\n (let [rem (js-mod n d)] (fix (/ (- n rem) d))))\n"} {:sym ns-interns*, :meta {:doc "Returns a map of the intern mappings for the namespace.\n  Bootstrap only.", :arglists ([sym])}, :source "(defn\n ns-interns*\n \"Returns a map of the intern mappings for the namespace.\\n  Bootstrap only.\"\n [sym]\n (let\n  [ns-obj (find-ns-obj sym) ns (Namespace. ns-obj sym)]\n  (letfn\n   [(step\n     [ret k]\n     (let\n      [var-sym (symbol (demunge k))]\n      (assoc\n       ret\n       var-sym\n       (Var.\n        (fn* [] (gobject/get ns-obj k))\n        (symbol (str sym) (str var-sym))\n        {:ns ns}))))]\n   (reduce step {} (js-keys ns-obj)))))\n"} {:sym unchecked-double, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-double [x] x)\n"} {:sym ranged-iterator, :meta {:doc nil, :arglists ([v start end])}, :source "(defn\n ranged-iterator\n [v start end]\n (let\n  [i start]\n  (RangedIterator.\n   i\n   (- i (js-mod i 32))\n   (when (< start (count v)) (unchecked-array-for v i))\n   v\n   start\n   end)))\n"} {:sym ITransientVector, :meta {:doc "Protocol for adding vector functionality to transient collections."}, :methods (-assoc-n! -pop!)} {:sym key, :meta {:doc "Returns the key of the map entry.", :arglists ([map-entry])}, :source "(defn\n key\n \"Returns the key of the map entry.\"\n [map-entry]\n (-key map-entry))\n"} {:sym longs, :meta {:doc nil, :arglists ([x])}, :source "(defn longs [x] x)\n"} {:sym not=, :meta {:doc "Same as (not (= obj1 obj2))", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n not=\n \"Same as (not (= obj1 obj2))\"\n ([x] false)\n ([x y] (not (= x y)))\n ([x y & more] (not (apply = x y more))))\n"} {:sym set-print-err-fn!, :meta {:doc "Set *print-err-fn* to f.", :arglists ([f])}, :source "(defn\n set-print-err-fn!\n \"Set *print-err-fn* to f.\"\n [f]\n (set! *print-err-fn* f))\n"} {:sym fast-path-protocols, :meta {}, :source "(def\n fast-path-protocols\n \"protocol fqn -> [partition number, bit]\"\n (zipmap\n  (map\n   (fn* [p1__45146#] (symbol \"cljs.core\" (core/str p1__45146#)))\n   '[IFn\n     ICounted\n     IEmptyableCollection\n     ICollection\n     IIndexed\n     ASeq\n     ISeq\n     INext\n     ILookup\n     IAssociative\n     IMap\n     IMapEntry\n     ISet\n     IStack\n     IVector\n     IDeref\n     IDerefWithTimeout\n     IMeta\n     IWithMeta\n     IReduce\n     IKVReduce\n     IEquiv\n     IHash\n     ISeqable\n     ISequential\n     IList\n     IRecord\n     IReversible\n     ISorted\n     IPrintWithWriter\n     IWriter\n     IPrintWithWriter\n     IPending\n     IWatchable\n     IEditableCollection\n     ITransientCollection\n     ITransientAssociative\n     ITransientMap\n     ITransientVector\n     ITransientSet\n     IMultiFn\n     IChunkedSeq\n     IChunkedNext\n     IComparable\n     INamed\n     ICloneable\n     IAtom\n     IReset\n     ISwap\n     IIterable])\n  (iterate\n   (core/fn\n    [[p b]]\n    (if\n     (core/== 2147483648 b)\n     [(core/inc p) 1]\n     [p #?(:clj (core/bit-shift-left b 1) :cljs (core/* 2 b))]))\n   [0 1])))\n"} {:sym string?, :meta {:doc "Returns true if x is a JavaScript string.", :arglists ([x])}, :source "(defn\n string?\n \"Returns true if x is a JavaScript string.\"\n [x]\n (identical? \"string\" (goog/typeOf x)))\n"} {:sym uri?, :meta {:doc "Returns true x is a goog.Uri instance.", :arglists ([x])}, :source "(defn\n uri?\n \"Returns true x is a goog.Uri instance.\"\n {:added \"1.9\"}\n [x]\n (instance? goog.Uri x))\n"} {:sym es6-iterator, :meta {:doc "EXPERIMENTAL: Return a ES2015 compatible iterator for coll.", :arglists ([coll])}, :source "(defn\n es6-iterator\n \"EXPERIMENTAL: Return a ES2015 compatible iterator for coll.\"\n [coll]\n (ES6Iterator. (seq coll)))\n"} {:sym pr-str-with-opts, :meta {:doc "Prints a sequence of objects to a string, observing all the\n  options given in opts", :arglists ([objs opts])}, :source "(defn\n pr-str-with-opts\n \"Prints a sequence of objects to a string, observing all the\\n  options given in opts\"\n [objs opts]\n (if (empty? objs) \"\" (str (pr-sb-with-opts objs opts))))\n"} {:sym m3-C2, :meta {}, :source "(def m3-C2 (int 461845907))\n"} {:sym *print-newline*, :meta {:doc "When set to logical false will drop newlines from printing calls.\n  This is to work around the implicit newlines emitted by standard JavaScript\n  console objects."}, :source "(def *print-newline* true)\n"} {:sym unchecked-multiply-int, :meta {:doc "Returns the product of nums. (*) returns 1.", :arglists [[] [x] [x y] [x y & more]]}, :source "(defn\n unchecked-multiply-int\n \"Returns the product of nums. (*) returns 1.\"\n ([] 1)\n ([x] x)\n ([x y] (cljs.core/unchecked-multiply-int x y))\n ([x y & more]\n  (reduce\n   unchecked-multiply-int\n   (cljs.core/unchecked-multiply-int x y)\n   more)))\n"} {:sym chunk-rest, :meta {:doc nil, :arglists ([s])}, :source "(defn chunk-rest [s] (-chunked-rest s))\n"} {:sym remove-all-methods, :meta {:doc "Removes all of the methods of multimethod.", :arglists ([multifn])}, :source "(defn\n remove-all-methods\n \"Removes all of the methods of multimethod.\"\n [multifn]\n (-reset multifn))\n"} {:sym trampoline, :meta {:doc "trampoline can be used to convert algorithms requiring mutual\n  recursion without stack consumption. Calls f with supplied args, if\n  any. If f returns a fn, calls that fn with no arguments, and\n  continues to repeat, until the return value is not a fn, then\n  returns that non-fn value. Note that if you want to return a fn as a\n  final value, you must wrap it in some data structure and unpack it\n  after trampoline returns.", :arglists [[f] [f & args]]}, :source "(defn\n trampoline\n \"trampoline can be used to convert algorithms requiring mutual\\n  recursion without stack consumption. Calls f with supplied args, if\\n  any. If f returns a fn, calls that fn with no arguments, and\\n  continues to repeat, until the return value is not a fn, then\\n  returns that non-fn value. Note that if you want to return a fn as a\\n  final value, you must wrap it in some data structure and unpack it\\n  after trampoline returns.\"\n ([f] (let [ret (f)] (if (fn? ret) (recur ret) ret)))\n ([f & args] (trampoline (fn* [] (apply f args)))))\n"} {:sym double?, :meta {:doc "Returns true for JavaScript numbers, false otherwise.", :arglists ([x])}, :source "(defn\n double?\n \"Returns true for JavaScript numbers, false otherwise.\"\n [x]\n (number? x))\n"} {:sym vec, :meta {:doc "Creates a new vector containing the contents of coll. JavaScript arrays\n  will be aliased and should not be modified.", :arglists ([coll])}, :source "(defn\n vec\n \"Creates a new vector containing the contents of coll. JavaScript arrays\\n  will be aliased and should not be modified.\"\n [coll]\n (cond\n  (map-entry? coll)\n  [(key coll) (val coll)]\n  (vector? coll)\n  (with-meta coll nil)\n  (array? coll)\n  (.fromArray PersistentVector coll true)\n  :else\n  (-persistent!\n   (reduce -conj! (-as-transient (.-EMPTY PersistentVector)) coll))))\n"} {:sym *print-meta*, :meta {:doc "If set to logical true, when printing an object, its metadata will also\n  be printed in a form that can be read back by the reader.\n\n  Defaults to false."}, :source "(def *print-meta* false)\n"} {:sym -notify-watches, :meta {:doc "Calls all watchers with this, oldval and newval.", :arglists ([this oldval newval])}, :protocol IWatchable} {:sym int, :meta {:doc "Coerce to int by stripping decimal places.", :arglists ([x])}, :source "(defn int \"Coerce to int by stripping decimal places.\" [x] (bit-or x 0))\n"} {:sym map-entry?, :meta {:doc "Returns true if x satisfies IMapEntry", :arglists ([x])}, :source "(defn\n map-entry?\n \"Returns true if x satisfies IMapEntry\"\n [x]\n (implements? IMapEntry x))\n"} {:sym rand, :meta {:doc "Returns a random floating point number between 0 (inclusive) and\n  n (default 1) (exclusive).", :arglists [[] [n]]}, :source "(defn\n rand\n \"Returns a random floating point number between 0 (inclusive) and\\n  n (default 1) (exclusive).\"\n ([] (rand 1))\n ([n] (* (Math/random) n)))\n"} {:sym second, :meta {:doc "Same as (first (next x))", :arglists ([coll])}, :source "(defn second \"Same as (first (next x))\" [coll] (first (next coll)))\n"} {:sym find-ns-obj, :meta {:doc "Bootstrap only.", :arglists ([ns])}, :source "(defn\n find-ns-obj\n \"Bootstrap only.\"\n [ns]\n (let\n  [munged-ns (munge (str ns)) segs (.split munged-ns \".\")]\n  (case\n   *target*\n   \"nodejs\"\n   (if\n    js/COMPILED\n    (find-ns-obj*\n     (try\n      (let\n       [ctxt (js/eval (first segs))]\n       (when (and ctxt (object? ctxt)) ctxt))\n      (catch js/ReferenceError e nil))\n     (next segs))\n    (find-ns-obj* goog/global segs))\n   (\"default\" \"webworker\")\n   (find-ns-obj* goog/global segs)\n   (throw\n    (js/Error.\n     (str \"find-ns-obj not supported for target \" *target*))))))\n"} {:sym IEditableCollection, :meta {:doc "Protocol for collections which can transformed to transients."}, :methods (-as-transient)} {:sym hash-combine, :meta {:doc nil, :arglists ([seed hash])}, :source "(defn\n hash-combine\n [seed hash]\n (bit-xor\n  seed\n  (+ hash 2654435769 (bit-shift-left seed 6) (bit-shift-right seed 2))))\n"} {:sym >, :meta {:doc "Returns non-nil if nums are in monotonically decreasing order,\n  otherwise false.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n >\n \"Returns non-nil if nums are in monotonically decreasing order,\\n  otherwise false.\"\n ([x] true)\n ([x y] (cljs.core/> x y))\n ([x y & more]\n  (if\n   (cljs.core/> x y)\n   (if\n    (next more)\n    (recur y (first more) (next more))\n    (cljs.core/> y (first more)))\n   false)))\n"} {:sym -name, :meta {:doc "Returns the name String of x.", :arglists ([x])}, :protocol INamed} {:sym replace, :meta {:doc "Given a map of replacement pairs and a vector/collection, returns a\n  vector/seq with any elements = a key in smap replaced with the\n  corresponding val in smap.  Returns a transducer when no collection\n  is provided.", :arglists [[smap] [smap coll]]}, :source "(defn\n replace\n \"Given a map of replacement pairs and a vector/collection, returns a\\n  vector/seq with any elements = a key in smap replaced with the\\n  corresponding val in smap.  Returns a transducer when no collection\\n  is provided.\"\n ([smap]\n  (map\n   (fn*\n    [p1__45421#]\n    (if-let [e (find smap p1__45421#)] (val e) p1__45421#))))\n ([smap coll]\n  (if\n   (vector? coll)\n   (let\n    [n (count coll)]\n    (reduce\n     (fn\n      [v i]\n      (if-let [e (find smap (nth v i))] (assoc v i (second e)) v))\n     coll\n     (take n (iterate inc 0))))\n   (map\n    (fn*\n     [p1__45422#]\n     (if-let [e (find smap p1__45422#)] (second e) p1__45422#))\n    coll))))\n"} {:sym int?, :meta {:doc "Return true if x satisfies integer? or is an instance of goog.math.Integer\n   or goog.math.Long.", :arglists ([x])}, :source "(defn\n int?\n \"Return true if x satisfies integer? or is an instance of goog.math.Integer\\n   or goog.math.Long.\"\n [x]\n (or\n  (integer? x)\n  (instance? goog.math.Integer x)\n  (instance? goog.math.Long x)))\n"} {:sym associative?, :meta {:doc "Returns true if coll implements IAssociative", :arglists ([x])}, :source "(defn\n associative?\n \"Returns true if coll implements IAssociative\"\n [x]\n (satisfies? IAssociative x))\n"} {:sym unchecked-int, :meta {:doc "Coerce to int by stripping decimal places.", :arglists ([x])}, :source "(defn\n unchecked-int\n \"Coerce to int by stripping decimal places.\"\n [x]\n (fix x))\n"} {:sym js-keys, :meta {:doc "Return the JavaScript keys for an object.", :arglists ([obj])}, :source "(defn\n js-keys\n \"Return the JavaScript keys for an object.\"\n [obj]\n (gobject/getKeys obj))\n"} {:sym inst-ms*, :meta {:doc nil, :arglists ([inst])}, :protocol Inst} {:sym keyword?, :meta {:doc "Return true if x is a Keyword", :arglists ([x])}, :source "(defn\n keyword?\n \"Return true if x is a Keyword\"\n [x]\n (instance? Keyword x))\n"} {:sym array-iter, :meta {:doc nil, :arglists ([x])}, :source "(defn array-iter [x] (ArrayIter. x 0))\n"} {:sym force, :meta {:doc "If x is a Delay, returns the (possibly cached) value of its expression, else returns x", :arglists ([x])}, :source "(defn\n force\n \"If x is a Delay, returns the (possibly cached) value of its expression, else returns x\"\n [x]\n (if (delay? x) (deref x) x))\n"} {:sym group-by, :meta {:doc "Returns a map of the elements of coll keyed by the result of\n  f on each element. The value at each key will be a vector of the\n  corresponding elements, in the order they appeared in coll.", :arglists ([f coll])}, :source "(defn\n group-by\n \"Returns a map of the elements of coll keyed by the result of\\n  f on each element. The value at each key will be a vector of the\\n  corresponding elements, in the order they appeared in coll.\"\n [f coll]\n (persistent!\n  (reduce\n   (fn [ret x] (let [k (f x)] (assoc! ret k (conj (get ret k []) x))))\n   (transient {})\n   coll)))\n"} {:sym -rseq, :meta {:doc "Returns a seq of the items in coll in reversed order.", :arglists ([coll])}, :protocol IReversible} {:sym prn, :meta {:doc "Same as pr followed by (newline).", :arglists ([& objs])}, :source "(defn\n prn\n \"Same as pr followed by (newline).\"\n [& objs]\n (pr-with-opts objs (pr-opts))\n (when *print-newline* (newline (pr-opts))))\n"} {:sym default-dispatch-val, :meta {:doc "Given a multimethod, return its default-dispatch-val.", :arglists ([multifn])}, :source "(defn\n default-dispatch-val\n \"Given a multimethod, return its default-dispatch-val.\"\n [multifn]\n (-default-dispatch-val multifn))\n"} {:sym js-iterable?, :meta {:doc "Return true if x has a JavaScript iterator property", :arglists ([x])}, :source "(defn\n js-iterable?\n \"Return true if x has a JavaScript iterator property\"\n [x]\n (and (not (nil? x)) (not (nil? (js* \"~{}[~{}]\" x ITER_SYMBOL)))))\n"} {:sym unchecked-multiply, :meta {:doc "Returns the product of nums. (*) returns 1.", :arglists [[] [x] [x y] [x y & more]]}, :source "(defn\n unchecked-multiply\n \"Returns the product of nums. (*) returns 1.\"\n ([] 1)\n ([x] x)\n ([x y] (cljs.core/unchecked-multiply x y))\n ([x y & more]\n  (reduce unchecked-multiply (cljs.core/unchecked-multiply x y) more)))\n"} {:sym even?, :meta {:doc "Returns true if n is even, throws an exception if n is not an integer", :arglists ([n])}, :source "(defn\n even?\n \"Returns true if n is even, throws an exception if n is not an integer\"\n [n]\n (if\n  (integer? n)\n  (zero? (bit-and n 1))\n  (throw (js/Error. (str \"Argument must be an integer: \" n)))))\n"} {:sym es6-iterator-seq, :meta {:doc "EXPERIMENTAL: Given an ES2015 compatible iterator return a seq.", :arglists ([iter])}, :source "(defn\n es6-iterator-seq\n \"EXPERIMENTAL: Given an ES2015 compatible iterator return a seq.\"\n [iter]\n (let\n  [v (.next iter)]\n  (if (.-done v) nil (ES6IteratorSeq. (.-value v) iter nil))))\n"} {:sym unchecked-dec, :meta {:doc "Returns a number one less than x, an int.", :arglists ([x])}, :source "(defn\n unchecked-dec\n \"Returns a number one less than x, an int.\"\n [x]\n (cljs.core/unchecked-dec x))\n"} {:sym Inst, :meta {:doc nil}, :methods (inst-ms*)} {:sym persistent-array-map-seq, :meta {:doc nil, :arglists ([arr i _meta])}, :source "(defn\n persistent-array-map-seq\n [arr i _meta]\n (when (<= i (- (alength arr) 2)) (PersistentArrayMapSeq. arr i _meta)))\n"} {:sym tagged-literal?, :meta {:doc "Return true if the value is the data representation of a tagged literal", :arglists ([value])}, :source "(defn\n tagged-literal?\n \"Return true if the value is the data representation of a tagged literal\"\n [value]\n (instance? TaggedLiteral value))\n"} {:sym double-array, :meta {:doc "Creates an array of doubles. Does not coerce array, provided for compatibility\n  with Clojure.", :arglists [[size-or-seq] [size init-val-or-seq]]}, :source "(defn\n double-array\n \"Creates an array of doubles. Does not coerce array, provided for compatibility\\n  with Clojure.\"\n ([size-or-seq]\n  (if\n   (number? size-or-seq)\n   (double-array size-or-seq nil)\n   (into-array size-or-seq)))\n ([size init-val-or-seq]\n  (let\n   [a (make-array size)]\n   (if\n    (seq? init-val-or-seq)\n    (let\n     [s (seq init-val-or-seq)]\n     (loop\n      [i 0 s s]\n      (if\n       (and s (< i size))\n       (do (aset a i (first s)) (recur (inc i) (next s)))\n       a)))\n    (do (dotimes [i size] (aset a i init-val-or-seq)) a)))))\n"} {:sym create-ns, :meta {:doc "Create a new namespace named by the symbol. Bootstrap only.", :arglists [[sym] [sym ns-obj]]}, :source "(defn\n create-ns\n \"Create a new namespace named by the symbol. Bootstrap only.\"\n ([sym] (create-ns sym (find-ns-obj sym)))\n ([sym ns-obj] (Namespace. ns-obj sym)))\n"} {:sym defn, :meta {:arglists (quote ([name doc-string? attr-map? [params*] prepost-map? body] [name doc-string? attr-map? ([params*] prepost-map? body) + attr-map?])), :doc "Same as (def name (core/fn [params* ] exprs*)) or (def\n    name (core/fn ([params* ] exprs*)+)) with any doc-string or attrs added\n    to the var metadata. prepost-map defines a map with optional keys\n    :pre and :post that contain collections of pre or post conditions."}, :source "(def\n defn\n (core/fn\n  defn\n  [&form &env name & fdecl]\n  (if\n   (core/instance? #?(:clj clojure.lang.Symbol :cljs Symbol) name)\n   nil\n   (throw\n    #?(:clj (IllegalArgumentException. \"First argument to defn must be a symbol\") :cljs (js/Error. \"First argument to defn must be a symbol\"))))\n  (core/let\n   [m\n    (if (core/string? (first fdecl)) {:doc (first fdecl)} {})\n    fdecl\n    (if (core/string? (first fdecl)) (next fdecl) fdecl)\n    m\n    (if (map? (first fdecl)) (conj m (first fdecl)) m)\n    fdecl\n    (if (map? (first fdecl)) (next fdecl) fdecl)\n    fdecl\n    (if (vector? (first fdecl)) (core/list fdecl) fdecl)\n    m\n    (if (map? (last fdecl)) (conj m (last fdecl)) m)\n    fdecl\n    (if (map? (last fdecl)) (butlast fdecl) fdecl)\n    m\n    (conj {:arglists (core/list 'quote (sigs fdecl))} m)\n    m\n    (conj (if (meta name) (meta name) {}) m)]\n   (core/cond\n    (multi-arity-fn? fdecl)\n    (multi-arity-fn\n     name\n     (if\n      (comp/checking-types?)\n      (update-in m [:jsdoc] conj \"@param {...*} var_args\")\n      m)\n     fdecl\n     (:def-emits-var &env))\n    (variadic-fn? fdecl)\n    (variadic-fn\n     name\n     (if\n      (comp/checking-types?)\n      (update-in m [:jsdoc] conj \"@param {...*} var_args\")\n      m)\n     fdecl\n     (:def-emits-var &env))\n    :else\n    (core/list 'def (with-meta name m) (cons 'cljs.core/fn fdecl))))))\n"} {:sym spread, :meta {:doc nil, :arglists ([arglist])}, :source "(defn\n spread\n [arglist]\n (when-not\n  (nil? arglist)\n  (let\n   [n (next arglist)]\n   (if\n    (nil? n)\n    (seq (first arglist))\n    (cons (first arglist) (spread n))))))\n"} {:sym rseq, :meta {:doc "Returns, in constant time, a seq of the items in rev (which\n  can be a vector or sorted-map), in reverse order. If rev is empty returns nil", :arglists ([rev])}, :source "(defn\n rseq\n \"Returns, in constant time, a seq of the items in rev (which\\n  can be a vector or sorted-map), in reverse order. If rev is empty returns nil\"\n [rev]\n (-rseq rev))\n"} {:sym ex-cause, :meta {:doc "Returns exception cause (an Error / ExceptionInfo) if ex is an\n  ExceptionInfo.\n  Otherwise returns nil.", :arglists ([ex])}, :source "(defn\n ex-cause\n \"Returns exception cause (an Error / ExceptionInfo) if ex is an\\n  ExceptionInfo.\\n  Otherwise returns nil.\"\n [ex]\n (when (instance? ExceptionInfo ex) (.-cause ex)))\n"} {:sym IReset, :meta {:doc "Protocol for adding resetting functionality."}, :methods (-reset!)} {:sym IEmptyableCollection, :meta {:doc "Protocol for creating an empty collection."}, :methods (-empty)} {:sym ex-message, :meta {:doc "Returns the message attached to the given Error / ExceptionInfo object.\n  For non-Errors returns nil.", :arglists ([ex])}, :source "(defn\n ex-message\n \"Returns the message attached to the given Error / ExceptionInfo object.\\n  For non-Errors returns nil.\"\n [ex]\n (when (instance? js/Error ex) (.-message ex)))\n"} {:sym *print-fn-bodies*, :meta {:doc "*print-fns-bodies* controls whether functions print their source or\n    only their names."}, :source "(def *print-fn-bodies* false)\n"} {:sym string-print, :meta {:doc nil, :arglists ([x])}, :source "(defn\n string-print\n [x]\n (when\n  (nil? *print-fn*)\n  (throw\n   (js/Error. \"No *print-fn* fn set for evaluation environment\")))\n (*print-fn* x)\n nil)\n"} {:sym float, :meta {:doc nil, :arglists ([x])}, :source "(defn float [x] x)\n"} {:sym IRecord, :meta {:doc "Marker interface indicating a record object"}, :methods ()} {:sym pr-str, :meta {:doc "pr to a string, returning it. Fundamental entrypoint to IPrintWithWriter.", :arglists ([& objs])}, :source "(defn\n pr-str\n \"pr to a string, returning it. Fundamental entrypoint to IPrintWithWriter.\"\n [& objs]\n (pr-str-with-opts objs (pr-opts)))\n"} {:sym es6-set-entries-iterator, :meta {:doc nil, :arglists ([coll])}, :source "(defn\n es6-set-entries-iterator\n [coll]\n (ES6SetEntriesIterator. (seq coll)))\n"} {:sym concat, :meta {:doc "Returns a lazy seq representing the concatenation of the elements in the supplied colls.", :arglists [[] [x] [x y] [x y & zs]]}, :source "(defn\n concat\n \"Returns a lazy seq representing the concatenation of the elements in the supplied colls.\"\n ([] (lazy-seq nil))\n ([x] (lazy-seq x))\n ([x y]\n  (lazy-seq\n   (let\n    [s (seq x)]\n    (if\n     s\n     (if\n      (chunked-seq? s)\n      (chunk-cons (chunk-first s) (concat (chunk-rest s) y))\n      (cons (first s) (concat (rest s) y)))\n     y))))\n ([x y & zs]\n  (let\n   [cat\n    (fn\n     cat\n     [xys zs]\n     (lazy-seq\n      (let\n       [xys (seq xys)]\n       (if\n        xys\n        (if\n         (chunked-seq? xys)\n         (chunk-cons (chunk-first xys) (cat (chunk-rest xys) zs))\n         (cons (first xys) (cat (rest xys) zs)))\n        (when zs (cat (first zs) (next zs)))))))]\n   (cat (concat x y) zs))))\n"} {:sym -methods, :meta {:doc nil, :arglists ([mf])}, :protocol IMultiFn} {:sym js-reserved, :meta {}, :source "(def js-reserved nil)\n"} {:sym IDerefWithTimeout, :meta {:doc nil}, :methods (-deref-with-timeout)} {:sym symbol, :meta {:doc "Returns a Symbol with the given namespace and name. Arity-1 works\n  on strings, keywords, and vars.", :arglists [[name] [ns name]]}, :source "(defn\n symbol\n \"Returns a Symbol with the given namespace and name. Arity-1 works\\n  on strings, keywords, and vars.\"\n ([name]\n  (cond\n   (symbol? name)\n   name\n   (string? name)\n   (let\n    [idx (.indexOf name \"/\")]\n    (if\n     (< idx 1)\n     (symbol nil name)\n     (symbol\n      (.substring name 0 idx)\n      (.substring name (inc idx) (. name -length)))))\n   (var? name)\n   (.-sym name)\n   (keyword? name)\n   (recur (.-fqn name))\n   :else\n   (throw (new js/Error \"no conversion to symbol\"))))\n ([ns name]\n  (let\n   [sym-str (if-not (nil? ns) (str ns \"/\" name) name)]\n   (Symbol. ns name sym-str nil nil))))\n"} {:sym to-array-2d, :meta {:doc "Returns a (potentially-ragged) 2-dimensional array\n  containing the contents of coll.", :arglists ([coll])}, :source "(defn\n to-array-2d\n \"Returns a (potentially-ragged) 2-dimensional array\\n  containing the contents of coll.\"\n [coll]\n (let\n  [ret (make-array (count coll))]\n  (loop\n   [i 0 xs (seq coll)]\n   (when-not\n    (nil? xs)\n    (aset ret i (to-array (first xs)))\n    (recur (inc i) (next xs))))\n  ret))\n"} {:sym ExceptionInfo, :meta {:doc nil, :arglists ([message data cause])}, :source "(defn\n ExceptionInfo\n [message data cause]\n (let\n  [e (js/Error. message)]\n  (this-as\n   this\n   (set! (.-message this) message)\n   (set! (.-data this) data)\n   (set! (.-cause this) cause)\n   (do\n    (set! (.-name this) (.-name e))\n    (set! (.-description this) (.-description e))\n    (set! (.-number this) (.-number e))\n    (set! (.-fileName this) (.-fileName e))\n    (set! (.-lineNumber this) (.-lineNumber e))\n    (set! (.-columnNumber this) (.-columnNumber e))\n    (set! (.-stack this) (.-stack e)))\n   this)))\n"} {:sym mod, :meta {:doc "Modulus of num and div. Truncates toward negative infinity.", :arglists ([n d])}, :source "(defn\n mod\n \"Modulus of num and div. Truncates toward negative infinity.\"\n [n d]\n (js-mod (+ (js-mod n d) d) d))\n"} {:sym ISet, :meta {:doc "Protocol for adding set functionality to a collection."}, :methods (-disjoin)} {:sym pop, :meta {:doc "For a list or queue, returns a new list/queue without the first\n  item, for a vector, returns a new vector without the last item.\n  Note - not the same as next/butlast.", :arglists ([coll])}, :source "(defn\n pop\n \"For a list or queue, returns a new list/queue without the first\\n  item, for a vector, returns a new vector without the last item.\\n  Note - not the same as next/butlast.\"\n [coll]\n (when-not (nil? coll) (-pop coll)))\n"} {:sym IPending, :meta {:doc "Protocol for types which can have a deferred realization. Currently only\n  implemented by Delay and LazySeq."}, :methods (-realized?)} {:sym -entry-key, :meta {:doc "Returns the key for entry.", :arglists ([coll entry])}, :protocol ISorted} {:sym CHAR_MAP, :meta {}, :source "(def\n CHAR_MAP\n #js {\"]\" \"_RBRACK_\", \"'\" \"_SINGLEQUOTE_\", \"=\" \"_EQ_\", \"\\\\\\\"\" \"_DOUBLEQUOTE_\", \"!\" \"_BANG_\", \"*\" \"_STAR_\", \"%\" \"_PERCENT_\", \"|\" \"_BAR_\", \"~\" \"_TILDE_\", \"/\" \"_SLASH_\", \"\\\\\\\\\" \"_BSLASH_\", \"-\" \"_\", \"?\" \"_QMARK_\", \"&\" \"_AMPERSAND_\", \":\" \"_COLON_\", \"<\" \"_LT_\", \"{\" \"_LBRACE_\", \"}\" \"_RBRACE_\", \"[\" \"_LBRACK_\", \"#\" \"_SHARP_\", \"^\" \"_CARET_\", \"+\" \"_PLUS_\", \"@\" \"_CIRCA_\", \">\" \"_GT_\"})\n"} {:sym dissoc!, :meta {:doc "Returns a transient map that doesn't contain a mapping for key(s).", :arglists [[tcoll key] [tcoll key & ks]]}, :source "(defn\n dissoc!\n \"Returns a transient map that doesn't contain a mapping for key(s).\"\n ([tcoll key] (-dissoc! tcoll key))\n ([tcoll key & ks]\n  (let\n   [ntcoll (-dissoc! tcoll key)]\n   (if ks (recur ntcoll (first ks) (next ks)) ntcoll))))\n"} {:sym reductions, :meta {:doc "Returns a lazy seq of the intermediate values of the reduction (as\n  per reduce) of coll by f, starting with init.", :arglists [[f coll] [f init coll]]}, :source "(defn\n reductions\n \"Returns a lazy seq of the intermediate values of the reduction (as\\n  per reduce) of coll by f, starting with init.\"\n ([f coll]\n  (lazy-seq\n   (if-let\n    [s (seq coll)]\n    (reductions f (first s) (rest s))\n    (list (f)))))\n ([f init coll]\n  (if\n   (reduced? init)\n   (list @init)\n   (cons\n    init\n    (lazy-seq\n     (when-let\n      [s (seq coll)]\n      (reductions f (f init (first s)) (rest s))))))))\n"} {:sym fast-path-protocol-partitions-count, :meta {}, :source "(def\n fast-path-protocol-partitions-count\n \"total number of partitions\"\n (core/let\n  [c (count fast-path-protocols) m (core/mod c 32)]\n  (if (core/zero? m) (core/quot c 32) (core/inc (core/quot c 32)))))\n"} {:sym indexed?, :meta {:doc "Returns true if coll implements nth in constant time", :arglists ([x])}, :source "(defn\n indexed?\n \"Returns true if coll implements nth in constant time\"\n [x]\n (satisfies? IIndexed x))\n"} {:sym -, :meta {:doc "If no ys are supplied, returns the negation of x, else subtracts\n  the ys from x and returns the result.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n -\n \"If no ys are supplied, returns the negation of x, else subtracts\\n  the ys from x and returns the result.\"\n ([x] (cljs.core/- x))\n ([x y] (cljs.core/- x y))\n ([x y & more] (reduce - (cljs.core/- x y) more)))\n"} {:sym -equiv, :meta {:doc "Returns true if o and other are equal, false otherwise.", :arglists ([o other])}, :protocol IEquiv} {:sym assoc!, :meta {:doc "When applied to a transient map, adds mapping of key(s) to\n  val(s). When applied to a transient vector, sets the val at index.\n  Note - index must be <= (count vector). Returns coll.", :arglists [[tcoll key val] [tcoll key val & kvs]]}, :source "(defn\n assoc!\n \"When applied to a transient map, adds mapping of key(s) to\\n  val(s). When applied to a transient vector, sets the val at index.\\n  Note - index must be <= (count vector). Returns coll.\"\n ([tcoll key val] (-assoc! tcoll key val))\n ([tcoll key val & kvs]\n  (let\n   [ntcoll (-assoc! tcoll key val)]\n   (if\n    kvs\n    (recur ntcoll (first kvs) (second kvs) (nnext kvs))\n    ntcoll))))\n"} {:sym hash-set, :meta {:doc "Returns a new hash set with supplied keys.  Any equal keys are\n  handled as if by repeated uses of conj.", :arglists [[] [& keys]]}, :source "(defn\n hash-set\n \"Returns a new hash set with supplied keys.  Any equal keys are\\n  handled as if by repeated uses of conj.\"\n ([] #{})\n ([& keys] (set keys)))\n"} {:sym reduce-kv, :meta {:doc "Reduces an associative collection. f should be a function of 3\n  arguments. Returns the result of applying f to init, the first key\n  and the first value in coll, then applying f to that result and the\n  2nd key and value, etc. If coll contains no entries, returns init\n  and f is not called. Note that reduce-kv is supported on vectors,\n  where the keys will be the ordinals.", :arglists [[f init coll]]}, :source "(defn\n reduce-kv\n \"Reduces an associative collection. f should be a function of 3\\n  arguments. Returns the result of applying f to init, the first key\\n  and the first value in coll, then applying f to that result and the\\n  2nd key and value, etc. If coll contains no entries, returns init\\n  and f is not called. Note that reduce-kv is supported on vectors,\\n  where the keys will be the ordinals.\"\n ([f init coll] (if-not (nil? coll) (-kv-reduce coll f init) init)))\n"} {:sym reset!, :meta {:doc "Sets the value of atom to newval without regard for the\n  current value. Returns new-value.", :arglists ([a new-value])}, :source "(defn\n reset!\n \"Sets the value of atom to newval without regard for the\\n  current value. Returns new-value.\"\n [a new-value]\n (if\n  (instance? Atom a)\n  (let\n   [validate (.-validator a)]\n   (when-not\n    (nil? validate)\n    (when-not\n     (validate new-value)\n     (throw (js/Error. \"Validator rejected reference state\"))))\n   (let\n    [old-value (.-state a)]\n    (set! (.-state a) new-value)\n    (when-not\n     (nil? (.-watches a))\n     (-notify-watches a old-value new-value))\n    new-value))\n  (-reset! a new-value)))\n"} {:sym name, :meta {:doc "Returns the name String of a string, symbol or keyword.", :arglists ([x])}, :source "(defn\n name\n \"Returns the name String of a string, symbol or keyword.\"\n [x]\n (if\n  (implements? INamed x)\n  (-name x)\n  (if\n   (string? x)\n   x\n   (throw (js/Error. (str \"Doesn't support name: \" x))))))\n"} {:sym Fn, :meta {:doc "Marker protocol"}, :methods ()} {:sym ffirst, :meta {:doc "Same as (first (first x))", :arglists ([coll])}, :source "(defn ffirst \"Same as (first (first x))\" [coll] (first (first coll)))\n"} {:sym sorted-set, :meta {:doc "Returns a new sorted set with supplied keys.", :arglists [[& keys]]}, :source "(defn\n sorted-set\n \"Returns a new sorted set with supplied keys.\"\n ([& keys] (reduce -conj (.-EMPTY PersistentTreeSet) keys)))\n"} {:sym counted?, :meta {:doc "Returns true if coll implements count in constant time", :arglists ([x])}, :source "(defn\n counted?\n \"Returns true if coll implements count in constant time\"\n [x]\n (satisfies? ICounted x))\n"} {:sym tagged-literal, :meta {:doc "Construct a data representation of a tagged literal from a\n  tag symbol and a form.", :arglists ([tag form])}, :source "(defn\n tagged-literal\n \"Construct a data representation of a tagged literal from a\\n  tag symbol and a form.\"\n [tag form]\n {:pre [(symbol? tag)]}\n (TaggedLiteral. tag form))\n"} {:sym println, :meta {:doc "Same as print followed by (newline)", :arglists ([& objs])}, :source "(defn\n println\n \"Same as print followed by (newline)\"\n [& objs]\n (pr-with-opts objs (assoc (pr-opts) :readably false))\n (when *print-newline* (newline (pr-opts))))\n"} {:sym assoc-in, :meta {:doc "Associates a value in a nested associative structure, where ks is a\n  sequence of keys and v is the new value and returns a new nested structure.\n  If any levels do not exist, hash-maps will be created.", :arglists ([m [k & ks] v])}, :source "(defn\n assoc-in\n \"Associates a value in a nested associative structure, where ks is a\\n  sequence of keys and v is the new value and returns a new nested structure.\\n  If any levels do not exist, hash-maps will be created.\"\n [m [k & ks] v]\n (if ks (assoc m k (assoc-in (get m k) ks v)) (assoc m k v)))\n"} {:sym bit-test, :meta {:doc "Test bit at index n", :arglists ([x n])}, :source "(defn bit-test \"Test bit at index n\" [x n] (cljs.core/bit-test x n))\n"} {:sym ISwap, :meta {:doc "Protocol for adding swapping functionality."}, :methods (-swap!)} {:sym memoize, :meta {:doc "Returns a memoized version of a referentially transparent function. The\n  memoized version of the function keeps a cache of the mapping from arguments\n  to results and, when calls with the same arguments are repeated often, has\n  higher performance at the expense of higher memory use.", :arglists ([f])}, :source "(defn\n memoize\n \"Returns a memoized version of a referentially transparent function. The\\n  memoized version of the function keeps a cache of the mapping from arguments\\n  to results and, when calls with the same arguments are repeated often, has\\n  higher performance at the expense of higher memory use.\"\n [f]\n (let\n  [mem (atom {})]\n  (fn\n   [& args]\n   (let\n    [v (get @mem args lookup-sentinel)]\n    (if\n     (identical? v lookup-sentinel)\n     (let [ret (apply f args)] (swap! mem assoc args ret) ret)\n     v)))))\n"} {:sym alter-meta!, :meta {:doc "Atomically sets the metadata for a namespace/var/ref/agent/atom to be:\n\n  (apply f its-current-meta args)\n\n  f must be free of side-effects", :arglists ([iref f & args])}, :source "(defn\n alter-meta!\n \"Atomically sets the metadata for a namespace/var/ref/agent/atom to be:\\n\\n  (apply f its-current-meta args)\\n\\n  f must be free of side-effects\"\n [iref f & args]\n (set! (.-meta iref) (apply f (.-meta iref) args)))\n"} {:sym zero?, :meta {:doc "Returns true if num is zero, else false", :arglists ([x])}, :source "(defn\n zero?\n \"Returns true if num is zero, else false\"\n [x]\n (cljs.core/zero? x))\n"} {:sym simple-keyword?, :meta {:doc "Return true if x is a keyword without a namespace", :arglists ([x])}, :source "(defn\n simple-keyword?\n \"Return true if x is a keyword without a namespace\"\n [x]\n (and (keyword? x) (nil? (namespace x))))\n"} {:sym *main-cli-fn*, :meta {:doc "When compiled for a command-line target, whatever function\n  *main-cli-fn* is set to will be called with the command-line\n  argv as arguments"}, :source "(def *main-cli-fn* nil)\n"} {:sym -assoc-n, :meta {:doc "Returns a new vector with value val added at position n.", :arglists ([coll n val])}, :protocol IVector} {:sym unchecked-dec-int, :meta {:doc "Returns a number one less than x, an int.", :arglists ([x])}, :source "(defn\n unchecked-dec-int\n \"Returns a number one less than x, an int.\"\n [x]\n (cljs.core/unchecked-dec-int x))\n"} {:sym persistent!, :meta {:doc "Returns a new, persistent version of the transient collection, in\n  constant time. The transient collection cannot be used after this\n  call, any such use will throw an exception.", :arglists ([tcoll])}, :source "(defn\n persistent!\n \"Returns a new, persistent version of the transient collection, in\\n  constant time. The transient collection cannot be used after this\\n  call, any such use will throw an exception.\"\n [tcoll]\n (-persistent! tcoll))\n"} {:sym set-print-fn!, :meta {:doc "Set *print-fn* to f.", :arglists ([f])}, :source "(defn set-print-fn! \"Set *print-fn* to f.\" [f] (set! *print-fn* f))\n"} {:sym nnext, :meta {:doc "Same as (next (next x))", :arglists ([coll])}, :source "(defn nnext \"Same as (next (next x))\" [coll] (next (next coll)))\n"} {:sym add-watch, :meta {:doc "Adds a watch function to an atom reference. The watch fn must be a\n  fn of 4 args: a key, the reference, its old-state, its\n  new-state. Whenever the reference's state might have been changed,\n  any registered watches will have their functions called. The watch\n  fn will be called synchronously. Note that an atom's state\n  may have changed again prior to the fn call, so use old/new-state\n  rather than derefing the reference. Keys must be unique per\n  reference, and can be used to remove the watch with remove-watch,\n  but are otherwise considered opaque by the watch mechanism.  Bear in\n  mind that regardless of the result or action of the watch fns the\n  atom's value will change.  Example:\n\n      (def a (atom 0))\n      (add-watch a :inc (fn [k r o n] (assert (== 0 n))))\n      (swap! a inc)\n      ;; Assertion Error\n      (deref a)\n      ;=> 1", :arglists ([iref key f])}, :source "(defn\n add-watch\n \"Adds a watch function to an atom reference. The watch fn must be a\\n  fn of 4 args: a key, the reference, its old-state, its\\n  new-state. Whenever the reference's state might have been changed,\\n  any registered watches will have their functions called. The watch\\n  fn will be called synchronously. Note that an atom's state\\n  may have changed again prior to the fn call, so use old/new-state\\n  rather than derefing the reference. Keys must be unique per\\n  reference, and can be used to remove the watch with remove-watch,\\n  but are otherwise considered opaque by the watch mechanism.  Bear in\\n  mind that regardless of the result or action of the watch fns the\\n  atom's value will change.  Example:\\n\\n      (def a (atom 0))\\n      (add-watch a :inc (fn [k r o n] (assert (== 0 n))))\\n      (swap! a inc)\\n      ;; Assertion Error\\n      (deref a)\\n      ;=> 1\"\n [iref key f]\n (-add-watch iref key f)\n iref)\n"} {:sym not-every?, :meta {:doc "Returns false if (pred x) is logical true for every x in\n  coll, else true.", :arglists ([pred coll])}, :source "(defn\n not-every?\n \"Returns false if (pred x) is logical true for every x in\\n  coll, else true.\"\n [pred coll]\n (not (every? pred coll)))\n"} {:sym rem, :meta {:doc "remainder of dividing numerator by denominator.", :arglists ([n d])}, :source "(defn\n rem\n \"remainder of dividing numerator by denominator.\"\n [n d]\n (let [q (quot n d)] (- n (* d q))))\n"} {:sym ifind?, :meta {:doc "Returns true if coll implements IFind", :arglists ([x])}, :source "(defn\n ifind?\n \"Returns true if coll implements IFind\"\n [x]\n (satisfies? IFind x))\n"} {:sym some, :meta {:doc "Returns the first logical true value of (pred x) for any x in coll,\n  else nil.  One common idiom is to use a set as pred, for example\n  this will return :fred if :fred is in the sequence, otherwise nil:\n  (some #{:fred} coll)", :arglists ([pred coll])}, :source "(defn\n some\n \"Returns the first logical true value of (pred x) for any x in coll,\\n  else nil.  One common idiom is to use a set as pred, for example\\n  this will return :fred if :fred is in the sequence, otherwise nil:\\n  (some #{:fred} coll)\"\n [pred coll]\n (when-let [s (seq coll)] (or (pred (first s)) (recur pred (next s)))))\n"} {:sym INamed, :meta {:doc "Protocol for adding a name."}, :methods (-name -namespace)} {:sym IReduce, :meta {:doc "Protocol for seq types that can reduce themselves.\n  Called by cljs.core/reduce."}, :methods (-reduce)} {:sym neg-int?, :meta {:doc "Return true if x satisfies int? and is negative.", :arglists ([x])}, :source "(defn\n neg-int?\n \"Return true if x satisfies int? and is negative.\"\n [x]\n (cond\n  (integer? x)\n  (neg? x)\n  (instance? goog.math.Integer x)\n  (.isNegative x)\n  (instance? goog.math.Long x)\n  (.isNegative x)\n  :else\n  false))\n"} {:sym drop, :meta {:doc "Returns a lazy sequence of all but the first n items in coll.\n  Returns a stateful transducer when no collection is provided.", :arglists [[n] [n coll]]}, :source "(defn\n drop\n \"Returns a lazy sequence of all but the first n items in coll.\\n  Returns a stateful transducer when no collection is provided.\"\n ([n]\n  {:pre [(number? n)]}\n  (fn\n   [rf]\n   (let\n    [na (volatile! n)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (let\n       [n @na]\n       (vswap! na dec)\n       (if (pos? n) result (rf result input))))))))\n ([n coll]\n  {:pre [(number? n)]}\n  (let\n   [step\n    (fn\n     [n coll]\n     (let\n      [s (seq coll)]\n      (if (and (pos? n) s) (recur (dec n) (rest s)) s)))]\n   (lazy-seq (step n coll)))))\n"} {:sym js-obj, :meta {:doc "Create JavaSript object from an even number arguments representing\n  interleaved keys and values.", :arglists [[] [& keyvals]]}, :source "(defn\n js-obj\n \"Create JavaSript object from an even number arguments representing\\n  interleaved keys and values.\"\n ([] (cljs.core/js-obj))\n ([& keyvals] (apply gobject/create keyvals)))\n"} {:sym ITransientCollection, :meta {:doc "Protocol for adding basic functionality to transient collections."}, :methods (-conj! -persistent!)} {:sym nth, :meta {:doc "Returns the value at the index. get returns nil if index out of\n  bounds, nth throws an exception unless not-found is supplied.  nth\n  also works for strings, arrays, regex Matchers and Lists, and,\n  in O(n) time, for sequences.", :arglists [[coll n] [coll n not-found]]}, :source "(defn\n nth\n \"Returns the value at the index. get returns nil if index out of\\n  bounds, nth throws an exception unless not-found is supplied.  nth\\n  also works for strings, arrays, regex Matchers and Lists, and,\\n  in O(n) time, for sequences.\"\n ([coll n]\n  (cond\n   (not (number? n))\n   (throw (js/Error. \"Index argument to nth must be a number\"))\n   (nil? coll)\n   coll\n   (implements? IIndexed coll)\n   (-nth coll n)\n   (array? coll)\n   (if\n    (and (< -1 n (.-length coll)))\n    (aget coll (int n))\n    (throw (js/Error. \"Index out of bounds\")))\n   (string? coll)\n   (if\n    (and (< -1 n (.-length coll)))\n    (.charAt coll (int n))\n    (throw (js/Error. \"Index out of bounds\")))\n   (or (implements? ISeq coll) (implements? ISequential coll))\n   (if\n    (neg? n)\n    (throw (js/Error. \"Index out of bounds\"))\n    (linear-traversal-nth coll n))\n   (native-satisfies? IIndexed coll)\n   (-nth coll n)\n   :else\n   (throw\n    (js/Error.\n     (str\n      \"nth not supported on this type \"\n      (type->str (type coll)))))))\n ([coll n not-found]\n  (cond\n   (not (number? n))\n   (throw (js/Error. \"Index argument to nth must be a number.\"))\n   (nil? coll)\n   not-found\n   (implements? IIndexed coll)\n   (-nth coll n not-found)\n   (array? coll)\n   (if (and (< -1 n (.-length coll))) (aget coll (int n)) not-found)\n   (string? coll)\n   (if (and (< -1 n (.-length coll))) (.charAt coll (int n)) not-found)\n   (or (implements? ISeq coll) (implements? ISequential coll))\n   (if (neg? n) not-found (linear-traversal-nth coll n not-found))\n   (native-satisfies? IIndexed coll)\n   (-nth coll n not-found)\n   :else\n   (throw\n    (js/Error.\n     (str\n      \"nth not supported on this type \"\n      (type->str (type coll))))))))\n"} {:sym sorted?, :meta {:doc "Returns true if coll satisfies ISorted", :arglists ([x])}, :source "(defn\n sorted?\n \"Returns true if coll satisfies ISorted\"\n [x]\n (satisfies? ISorted x))\n"} {:sym nil?, :meta {:doc "Returns true if x is nil, false otherwise.", :arglists ([x])}, :source "(defn\n nil?\n \"Returns true if x is nil, false otherwise.\"\n [x]\n (coercive-= x nil))\n"} {:sym split-at, :meta {:doc "Returns a vector of [(take n coll) (drop n coll)]", :arglists ([n coll])}, :source "(defn\n split-at\n \"Returns a vector of [(take n coll) (drop n coll)]\"\n [n coll]\n [(take n coll) (drop n coll)])\n"} {:sym prn-str-with-opts, :meta {:doc "Same as pr-str-with-opts followed by (newline)", :arglists ([objs opts])}, :source "(defn\n prn-str-with-opts\n \"Same as pr-str-with-opts followed by (newline)\"\n [objs opts]\n (if\n  (empty? objs)\n  \"\\n\"\n  (let\n   [sb (pr-sb-with-opts objs opts)]\n   (.append sb \\newline)\n   (str sb))))\n"} {:sym not-native, :meta {}, :source "(def not-native nil)\n"} {:sym random-sample, :meta {:doc "Returns items from coll with random probability of prob (0.0 -\n  1.0).  Returns a transducer when no collection is provided.", :arglists [[prob] [prob coll]]}, :source "(defn\n random-sample\n \"Returns items from coll with random probability of prob (0.0 -\\n  1.0).  Returns a transducer when no collection is provided.\"\n ([prob] (filter (fn [_] (< (rand) prob))))\n ([prob coll] (filter (fn [_] (< (rand) prob)) coll)))\n"} {:sym select-keys, :meta {:doc "Returns a map containing only those entries in map whose key is in keys", :arglists ([map keyseq])}, :source "(defn\n select-keys\n \"Returns a map containing only those entries in map whose key is in keys\"\n [map keyseq]\n (loop\n  [ret {} keys (seq keyseq)]\n  (if\n   keys\n   (let\n    [key (first keys) entry (get map key :cljs.core/not-found)]\n    (recur\n     (if (not= entry :cljs.core/not-found) (assoc ret key entry) ret)\n     (next keys)))\n   (-with-meta ret (meta map)))))\n"} {:sym bit-and, :meta {:doc "Bitwise and", :arglists [[x y] [x y & more]]}, :source "(defn\n bit-and\n \"Bitwise and\"\n ([x y] (cljs.core/bit-and x y))\n ([x y & more] (reduce bit-and (cljs.core/bit-and x y) more)))\n"} {:sym bounded-count, :meta {:doc "If coll is counted? returns its count, else will count at most the first n\n   elements of coll using its seq", :arglists ([n coll])}, :source "(defn\n bounded-count\n \"If coll is counted? returns its count, else will count at most the first n\\n   elements of coll using its seq\"\n {:added \"1.9\"}\n [n coll]\n (if\n  (counted? coll)\n  (count coll)\n  (loop\n   [i 0 s (seq coll)]\n   (if (and (not (nil? s)) (< i n)) (recur (inc i) (next s)) i))))\n"} {:sym update, :meta {:doc "'Updates' a value in an associative structure, where k is a\n  key and f is a function that will take the old value\n  and any supplied args and return the new value, and returns a new\n  structure.  If the key does not exist, nil is passed as the old value.", :arglists [[m k f] [m k f x] [m k f x y] [m k f x y z] [m k f x y z & more]]}, :source "(defn\n update\n \"'Updates' a value in an associative structure, where k is a\\n  key and f is a function that will take the old value\\n  and any supplied args and return the new value, and returns a new\\n  structure.  If the key does not exist, nil is passed as the old value.\"\n ([m k f] (assoc m k (f (get m k))))\n ([m k f x] (assoc m k (f (get m k) x)))\n ([m k f x y] (assoc m k (f (get m k) x y)))\n ([m k f x y z] (assoc m k (f (get m k) x y z)))\n ([m k f x y z & more] (assoc m k (apply f (get m k) x y z more))))\n"} {:sym gensym_counter, :meta {}, :source "(def gensym_counter nil)\n"} {:sym find-macros-ns, :meta {:doc "Returns the macros namespace named by the symbol or nil if it doesn't exist.\n  Bootstrap only.", :arglists ([ns])}, :source "(defn\n find-macros-ns\n \"Returns the macros namespace named by the symbol or nil if it doesn't exist.\\n  Bootstrap only.\"\n [ns]\n (when (nil? NS_CACHE) (set! NS_CACHE (atom {})))\n (let\n  [ns-str\n   (str ns)\n   ns\n   (if\n    (not (gstring/contains ns-str \"$macros\"))\n    (symbol (str ns-str \"$macros\"))\n    ns)\n   the-ns\n   (get @NS_CACHE ns)]\n  (if-not\n   (nil? the-ns)\n   the-ns\n   (let\n    [ns-obj (find-ns-obj ns)]\n    (when-not\n     (nil? ns-obj)\n     (let\n      [new-ns (create-ns ns ns-obj)]\n      (swap! NS_CACHE assoc ns new-ns)\n      new-ns))))))\n"} {:sym list*, :meta {:doc "Creates a new list containing the items prepended to the rest, the\n  last of which will be treated as a sequence.", :arglists [[args] [a args] [a b args] [a b c args] [a b c d & more]]}, :source "(defn\n list*\n \"Creates a new list containing the items prepended to the rest, the\\n  last of which will be treated as a sequence.\"\n ([args] (seq args))\n ([a args] (cons a args))\n ([a b args] (cons a (cons b args)))\n ([a b c args] (cons a (cons b (cons c args))))\n ([a b c d & more] (cons a (cons b (cons c (cons d (spread more)))))))\n"} {:sym update-in, :meta {:doc "'Updates' a value in a nested associative structure, where ks is a\n  sequence of keys and f is a function that will take the old value\n  and any supplied args and return the new value, and returns a new\n  nested structure.  If any levels do not exist, hash-maps will be\n  created.", :arglists [[m [k & ks] f] [m [k & ks] f a] [m [k & ks] f a b] [m [k & ks] f a b c] [m [k & ks] f a b c & args]]}, :source "(defn\n update-in\n \"'Updates' a value in a nested associative structure, where ks is a\\n  sequence of keys and f is a function that will take the old value\\n  and any supplied args and return the new value, and returns a new\\n  nested structure.  If any levels do not exist, hash-maps will be\\n  created.\"\n ([m [k & ks] f]\n  (if\n   ks\n   (assoc m k (update-in (get m k) ks f))\n   (assoc m k (f (get m k)))))\n ([m [k & ks] f a]\n  (if\n   ks\n   (assoc m k (update-in (get m k) ks f a))\n   (assoc m k (f (get m k) a))))\n ([m [k & ks] f a b]\n  (if\n   ks\n   (assoc m k (update-in (get m k) ks f a b))\n   (assoc m k (f (get m k) a b))))\n ([m [k & ks] f a b c]\n  (if\n   ks\n   (assoc m k (update-in (get m k) ks f a b c))\n   (assoc m k (f (get m k) a b c))))\n ([m [k & ks] f a b c & args]\n  (if\n   ks\n   (assoc m k (apply update-in (get m k) ks f a b c args))\n   (assoc m k (apply f (get m k) a b c args)))))\n"} {:sym prefer-method, :meta {:doc "Causes the multimethod to prefer matches of dispatch-val-x over dispatch-val-y\n   when there is a conflict", :arglists ([multifn dispatch-val-x dispatch-val-y])}, :source "(defn\n prefer-method\n \"Causes the multimethod to prefer matches of dispatch-val-x over dispatch-val-y\\n   when there is a conflict\"\n [multifn dispatch-val-x dispatch-val-y]\n (-prefer-method multifn dispatch-val-x dispatch-val-y))\n"} {:sym ensure-reduced, :meta {:doc "If x is already reduced?, returns it, else returns (reduced x)", :arglists ([x])}, :source "(defn\n ensure-reduced\n \"If x is already reduced?, returns it, else returns (reduced x)\"\n [x]\n (if (reduced? x) x (reduced x)))\n"} {:sym instance?, :meta {:doc "Evaluates x and tests if it is an instance of the type\n  c. Returns true or false", :arglists ([c x])}, :source "(defn\n instance?\n \"Evaluates x and tests if it is an instance of the type\\n  c. Returns true or false\"\n [c x]\n (cljs.core/instance? c x))\n"} {:sym mix-collection-hash, :meta {:doc "Mix final collection hash for ordered or unordered collections.\n   hash-basis is the combined collection hash, count is the number\n   of elements included in the basis. Note this is the hash code\n   consistent with =, different from .hashCode.\n   See http://clojure.org/data_structures#hash for full algorithms.", :arglists ([hash-basis count])}, :source "(defn\n mix-collection-hash\n \"Mix final collection hash for ordered or unordered collections.\\n   hash-basis is the combined collection hash, count is the number\\n   of elements included in the basis. Note this is the hash code\\n   consistent with =, different from .hashCode.\\n   See http://clojure.org/data_structures#hash for full algorithms.\"\n [hash-basis count]\n (let\n  [h1 m3-seed k1 (m3-mix-K1 hash-basis) h1 (m3-mix-H1 h1 k1)]\n  (m3-fmix h1 count)))\n"} {:sym re-find, :meta {:doc "Returns the first regex match, if any, of s to re, using\n  re.exec(s). Returns a vector, containing first the matching\n  substring, then any capturing groups if the regular expression contains\n  capturing groups.", :arglists ([re s])}, :source "(defn\n re-find\n \"Returns the first regex match, if any, of s to re, using\\n  re.exec(s). Returns a vector, containing first the matching\\n  substring, then any capturing groups if the regular expression contains\\n  capturing groups.\"\n [re s]\n (if\n  (string? s)\n  (let\n   [matches (.exec re s)]\n   (when-not\n    (nil? matches)\n    (if (== (count matches) 1) (aget matches 0) (vec matches))))\n  (throw (js/TypeError. \"re-find must match against a string.\"))))\n"} {:sym run!, :meta {:doc "Runs the supplied procedure (via reduce), for purposes of side\n  effects, on successive items in the collection. Returns nil", :arglists ([proc coll])}, :source "(defn\n run!\n \"Runs the supplied procedure (via reduce), for purposes of side\\n  effects, on successive items in the collection. Returns nil\"\n [proc coll]\n (reduce (fn* [p1__45441# p2__45440#] (proc p2__45440#)) nil coll)\n nil)\n"} {:sym val, :meta {:doc "Returns the value in the map entry.", :arglists ([map-entry])}, :source "(defn\n val\n \"Returns the value in the map entry.\"\n [map-entry]\n (-val map-entry))\n"} {:sym unchecked-add, :meta {:doc "Returns the sum of nums. (+) returns 0.", :arglists [[] [x] [x y] [x y & more]]}, :source "(defn\n unchecked-add\n \"Returns the sum of nums. (+) returns 0.\"\n ([] 0)\n ([x] x)\n ([x y] (cljs.core/unchecked-add x y))\n ([x y & more]\n  (reduce unchecked-add (cljs.core/unchecked-add x y) more)))\n"} {:sym transformer-iterator, :meta {:doc nil, :arglists ([xform sourceIter multi])}, :source "(defn\n transformer-iterator\n [xform sourceIter multi]\n (let\n  [iterator\n   (TransformerIterator. EMPTY NONE false nil sourceIter multi)]\n  (set!\n   (.-xf iterator)\n   (xform\n    (fn\n     ([] nil)\n     ([acc] acc)\n     ([acc o]\n      (set! (.-buffer iterator) (.add (.-buffer iterator) o))\n      acc))))\n  iterator))\n"} {:sym not, :meta {:doc "Returns true if x is logical false, false otherwise.", :arglists ([x])}, :source "(defn\n not\n \"Returns true if x is logical false, false otherwise.\"\n [x]\n (cond (nil? x) true (false? x) true :else false))\n"} {:sym -vreset!, :meta {:doc "Sets the value of volatile o to new-value without regard for the\n     current value. Returns new-value.", :arglists ([o new-value])}, :protocol IVolatile} {:sym with-meta, :meta {:doc "Returns an object of the same type and value as obj, with\n  map m as its metadata.", :arglists ([o meta])}, :source "(defn\n with-meta\n \"Returns an object of the same type and value as obj, with\\n  map m as its metadata.\"\n [o meta]\n (if\n  (js-fn? o)\n  (MetaFn. o meta)\n  (when-not (nil? o) (-with-meta o meta))))\n"} {:sym unreduced, :meta {:doc "If x is reduced?, returns (deref x), else returns x", :arglists ([x])}, :source "(defn\n unreduced\n \"If x is reduced?, returns (deref x), else returns x\"\n [x]\n (if (reduced? x) (deref x) x))\n"} {:sym record?, :meta {:doc "Return true if x satisfies IRecord", :arglists ([x])}, :source "(defn\n record?\n \"Return true if x satisfies IRecord\"\n [x]\n (satisfies? IRecord x))\n"} {:sym type, :meta {:doc "Return x's constructor.", :arglists ([x])}, :source "(defn\n type\n \"Return x's constructor.\"\n [x]\n (when-not (nil? x) (.-constructor x)))\n"} {:sym identical?, :meta {:doc "Tests if 2 arguments are the same object", :arglists ([x y])}, :source "(defn\n identical?\n \"Tests if 2 arguments are the same object\"\n [x y]\n (cljs.core/identical? x y))\n"} {:sym -namespace, :meta {:doc "Returns the namespace String of x.", :arglists ([x])}, :protocol INamed} {:sym unchecked-divide-int, :meta {:doc "If no denominators are supplied, returns 1/numerator,\n  else returns numerator divided by all of the denominators.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n unchecked-divide-int\n \"If no denominators are supplied, returns 1/numerator,\\n  else returns numerator divided by all of the denominators.\"\n ([x] (unchecked-divide-int 1 x))\n ([x y] (cljs.core/divide x y))\n ([x y & more]\n  (reduce unchecked-divide-int (unchecked-divide-int x y) more)))\n"} {:sym ns-name, :meta {:doc "Returns the name of the namespace, a Namespace object.\n  Bootstrap only.", :arglists ([ns-obj])}, :source "(defn\n ns-name\n \"Returns the name of the namespace, a Namespace object.\\n  Bootstrap only.\"\n [ns-obj]\n (.-name ns-obj))\n"} {:sym max-key, :meta {:doc "Returns the x for which (k x), a number, is greatest.\n\n  If there are multiple such xs, the last one is returned.", :arglists [[k x] [k x y] [k x y & more]]}, :source "(defn\n max-key\n \"Returns the x for which (k x), a number, is greatest.\\n\\n  If there are multiple such xs, the last one is returned.\"\n ([k x] x)\n ([k x y] (if (> (k x) (k y)) x y))\n ([k x y & more]\n  (reduce\n   (fn* [p1__45423# p2__45424#] (max-key k p1__45423# p2__45424#))\n   (max-key k x y)\n   more)))\n"} {:sym *out*, :meta {}, :source "(def *out* nil)\n"} {:sym hash-string, :meta {:doc nil, :arglists ([k])}, :source "(defn\n hash-string\n [k]\n (when\n  (> string-hash-cache-count 255)\n  (set! string-hash-cache (js-obj))\n  (set! string-hash-cache-count 0))\n (if\n  (nil? k)\n  0\n  (let\n   [h (unchecked-get string-hash-cache k)]\n   (if (number? h) h (add-to-string-hash-cache k)))))\n"} {:sym -prefers, :meta {:doc nil, :arglists ([mf])}, :protocol IMultiFn} {:sym set-validator!, :meta {:doc "Sets the validator-fn for an atom. validator-fn must be nil or a\n  side-effect-free fn of one argument, which will be passed the intended\n  new state on any state change. If the new state is unacceptable, the\n  validator-fn should return false or throw an Error. If the current state\n  is not acceptable to the new validator, an Error will be thrown and the\n  validator will not be changed.", :arglists ([iref val])}, :source "(defn\n set-validator!\n \"Sets the validator-fn for an atom. validator-fn must be nil or a\\n  side-effect-free fn of one argument, which will be passed the intended\\n  new state on any state change. If the new state is unacceptable, the\\n  validator-fn should return false or throw an Error. If the current state\\n  is not acceptable to the new validator, an Error will be thrown and the\\n  validator will not be changed.\"\n [iref val]\n (when\n  (and (some? val) (not (val (-deref iref))))\n  (throw (js/Error. \"Validator rejected reference state\")))\n (set! (.-validator iref) val))\n"} {:sym ident?, :meta {:doc "Return true if x is a symbol or keyword", :arglists ([x])}, :source "(defn\n ident?\n \"Return true if x is a symbol or keyword\"\n [x]\n (or (keyword? x) (symbol? x)))\n"} {:sym -meta, :meta {:doc "Returns the metadata of object o.", :arglists ([o])}, :protocol IMeta} {:sym -dispatch-fn, :meta {:doc nil, :arglists ([mf])}, :protocol IMultiFn} {:sym -add-method, :meta {:doc nil, :arglists ([mf dispatch-val method])}, :protocol IMultiFn} {:sym swap!, :meta {:doc "Atomically swaps the value of atom to be:\n  (apply f current-value-of-atom args). Note that f may be called\n  multiple times, and thus should be free of side effects.  Returns\n  the value that was swapped in.", :arglists [[a f] [a f x] [a f x y] [a f x y & more]]}, :source "(defn\n swap!\n \"Atomically swaps the value of atom to be:\\n  (apply f current-value-of-atom args). Note that f may be called\\n  multiple times, and thus should be free of side effects.  Returns\\n  the value that was swapped in.\"\n ([a f]\n  (if (instance? Atom a) (reset! a (f (.-state a))) (-swap! a f)))\n ([a f x]\n  (if (instance? Atom a) (reset! a (f (.-state a) x)) (-swap! a f x)))\n ([a f x y]\n  (if\n   (instance? Atom a)\n   (reset! a (f (.-state a) x y))\n   (-swap! a f x y)))\n ([a f x y & more]\n  (if\n   (instance? Atom a)\n   (reset! a (apply f (.-state a) x y more))\n   (-swap! a f x y more))))\n"} {:sym vals, :meta {:doc "Returns a sequence of the map's values, in the same order as (seq map).", :arglists ([map])}, :source "(defn\n vals\n \"Returns a sequence of the map's values, in the same order as (seq map).\"\n [map]\n (when-let [mseq (seq map)] (ValSeq. mseq nil)))\n"} {:sym -chunked-next, :meta {:doc "Returns a new collection of coll without the first chunk.", :arglists ([coll])}, :protocol IChunkedNext} {:sym unchecked-subtract, :meta {:doc "If no ys are supplied, returns the negation of x, else subtracts\n  the ys from x and returns the result.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n unchecked-subtract\n \"If no ys are supplied, returns the negation of x, else subtracts\\n  the ys from x and returns the result.\"\n ([x] (cljs.core/unchecked-subtract x))\n ([x y] (cljs.core/unchecked-subtract x y))\n ([x y & more]\n  (reduce unchecked-subtract (cljs.core/unchecked-subtract x y) more)))\n"} {:sym tap>, :meta {:doc "Sends x to any taps. Returns the result of *exec-tap-fn*, a Boolean value.", :arglists ([x])}, :source "(defn\n tap>\n \"Sends x to any taps. Returns the result of *exec-tap-fn*, a Boolean value.\"\n [x]\n (maybe-init-tapset)\n (*exec-tap-fn*\n  (fn [] (doseq [tap @tapset] (try (tap x) (catch js/Error ex))))))\n"} {:sym IMap, :meta {:doc "Protocol for adding mapping functionality to collections."}, :methods (-dissoc)} {:sym sorted-set-by, :meta {:doc "Returns a new sorted set with supplied keys, using the supplied comparator.", :arglists [[comparator & keys]]}, :source "(defn\n sorted-set-by\n \"Returns a new sorted set with supplied keys, using the supplied comparator.\"\n ([comparator & keys]\n  (reduce\n   -conj\n   (PersistentTreeSet. nil (sorted-map-by comparator) 0)\n   keys)))\n"} {:sym cloneable?, :meta {:doc "Return true if x implements ICloneable protocol.", :arglists ([value])}, :source "(defn\n cloneable?\n \"Return true if x implements ICloneable protocol.\"\n [value]\n (satisfies? ICloneable value))\n"} {:sym qualified-ident?, :meta {:doc "Return true if x is a symbol or keyword with a namespace", :arglists ([x])}, :source "(defn\n qualified-ident?\n \"Return true if x is a symbol or keyword with a namespace\"\n [x]\n (boolean (and (ident? x) (namespace x) true)))\n"} {:sym hash-string*, :meta {:doc nil, :arglists ([s])}, :source "(defn\n hash-string*\n [s]\n (if-not\n  (nil? s)\n  (let\n   [len (.-length s)]\n   (if\n    (pos? len)\n    (loop\n     [i 0 hash 0]\n     (if\n      (< i len)\n      (recur (inc i) (+ (imul 31 hash) (.charCodeAt s i)))\n      hash))\n    0))\n  0))\n"} {:sym key-test, :meta {:doc nil, :arglists ([key other])}, :source "(defn\n key-test\n [key other]\n (cond\n  (identical? key other)\n  true\n  (keyword-identical? key other)\n  true\n  :else\n  (= key other)))\n"} {:sym -reset, :meta {:doc nil, :arglists ([mf])}, :protocol IMultiFn} {:sym true?, :meta {:doc "Returns true if x is the value true, false otherwise.", :arglists ([x])}, :source "(defn\n true?\n \"Returns true if x is the value true, false otherwise.\"\n [x]\n (cljs.core/true? x))\n"} {:sym array, :meta {:doc "Creates a new javascript array.\n@param {...*} var_args", :arglists ([var-args])}, :source "(defn\n array\n \"Creates a new javascript array.\\n@param {...*} var_args\"\n [var-args]\n (let\n  [a (js/Array. (alength (cljs.core/js-arguments)))]\n  (loop\n   [i 0]\n   (if\n    (< i (alength a))\n    (do (aset a i (aget (cljs.core/js-arguments) i)) (recur (inc i)))\n    a))))\n"} {:sym print, :meta {:doc "Prints the object(s) using string-print.\n  print and println produce output for human consumption."}, :source "(def\n print\n (fn\n  cljs-core-print\n  [& objs]\n  (pr-with-opts objs (assoc (pr-opts) :readably false))))\n"} {:sym -peek, :meta {:doc "Returns the item from the top of the stack. Is used by cljs.core/peek.", :arglists ([coll])}, :protocol IStack} {:sym ISeq, :meta {:doc "Protocol for collections to provide access to their items as sequences."}, :methods (-first -rest)} {:sym empty, :meta {:doc "Returns an empty collection of the same category as coll, or nil", :arglists ([coll])}, :source "(defn\n empty\n \"Returns an empty collection of the same category as coll, or nil\"\n [coll]\n (when-not\n  (nil? coll)\n  (cond\n   (implements? IEmptyableCollection coll)\n   (-empty coll)\n   (satisfies? IEmptyableCollection coll)\n   (-empty coll)\n   :else\n   nil)))\n"} {:sym remove-method, :meta {:doc "Removes the method of multimethod associated with dispatch-value.", :arglists ([multifn dispatch-val])}, :source "(defn\n remove-method\n \"Removes the method of multimethod associated with dispatch-value.\"\n [multifn dispatch-val]\n (-remove-method multifn dispatch-val))\n"} {:sym volatile!, :meta {:doc "Creates and returns a Volatile with an initial value of val.", :arglists ([val])}, :source "(defn\n volatile!\n \"Creates and returns a Volatile with an initial value of val.\"\n [val]\n (Volatile. val))\n"} {:sym /, :meta {:doc "If no denominators are supplied, returns 1/numerator,\n  else returns numerator divided by all of the denominators.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n /\n \"If no denominators are supplied, returns 1/numerator,\\n  else returns numerator divided by all of the denominators.\"\n ([x] (/ 1 x))\n ([x y] (cljs.core/divide x y))\n ([x y & more] (reduce / (/ x y) more)))\n"} {:sym bit-or, :meta {:doc "Bitwise or", :arglists [[x y] [x y & more]]}, :source "(defn\n bit-or\n \"Bitwise or\"\n ([x y] (cljs.core/bit-or x y))\n ([x y & more] (reduce bit-or (cljs.core/bit-or x y) more)))\n"} {:sym m3-fmix, :meta {:doc nil, :arglists ([h1 len])}, :source "(defn\n m3-fmix\n [h1 len]\n (as->\n  (int h1)\n  h1\n  (bit-xor h1 len)\n  (bit-xor h1 (unsigned-bit-shift-right h1 16))\n  (imul h1 (int 2246822507))\n  (bit-xor h1 (unsigned-bit-shift-right h1 13))\n  (imul h1 (int 3266489909))\n  (bit-xor h1 (unsigned-bit-shift-right h1 16))))\n"} {:sym vector, :meta {:doc "Creates a new vector containing the args.", :arglists ([& args])}, :source "(defn\n vector\n \"Creates a new vector containing the args.\"\n [& args]\n (if\n  (and (instance? IndexedSeq args) (zero? (.-i args)))\n  (.fromArray\n   PersistentVector\n   (.-arr args)\n   (not (array? (.-arr args))))\n  (vec args)))\n"} {:sym >=, :meta {:doc "Returns non-nil if nums are in monotonically non-increasing order,\n  otherwise false.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n >=\n \"Returns non-nil if nums are in monotonically non-increasing order,\\n  otherwise false.\"\n ([x] true)\n ([x y] (cljs.core/>= x y))\n ([x y & more]\n  (if\n   (cljs.core/>= x y)\n   (if\n    (next more)\n    (recur y (first more) (next more))\n    (cljs.core/>= y (first more)))\n   false)))\n"} {:sym drop-last, :meta {:doc "Return a lazy sequence of all but the last n (default 1) items in coll", :arglists [[s] [n s]]}, :source "(defn\n drop-last\n \"Return a lazy sequence of all but the last n (default 1) items in coll\"\n ([s] (drop-last 1 s))\n ([n s] (map (fn [x _] x) s (drop n s))))\n"} {:sym object?, :meta {:doc "Returns true if x's constructor is Object", :arglists ([x])}, :source "(defn\n object?\n \"Returns true if x's constructor is Object\"\n [x]\n (if-not (nil? x) (identical? (.-constructor x) js/Object) false))\n"} {:sym not-empty, :meta {:doc "If coll is empty, returns nil, else coll", :arglists ([coll])}, :source "(defn\n not-empty\n \"If coll is empty, returns nil, else coll\"\n [coll]\n (when (seq coll) coll))\n"} {:sym distinct, :meta {:doc "Returns a lazy sequence of the elements of coll with duplicates removed.\n  Returns a stateful transducer when no collection is provided.", :arglists [[] [coll]]}, :source "(defn\n distinct\n \"Returns a lazy sequence of the elements of coll with duplicates removed.\\n  Returns a stateful transducer when no collection is provided.\"\n ([]\n  (fn\n   [rf]\n   (let\n    [seen (volatile! #{})]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (if\n       (contains? @seen input)\n       result\n       (do (vswap! seen conj input) (rf result input))))))))\n ([coll]\n  (let\n   [step\n    (fn\n     step\n     [xs seen]\n     (lazy-seq\n      ((fn\n        [[f :as xs] seen]\n        (when-let\n         [s (seq xs)]\n         (if\n          (contains? seen f)\n          (recur (rest s) seen)\n          (cons f (step (rest s) (conj seen f))))))\n       xs\n       seen)))]\n   (step coll #{}))))\n"} {:sym partition, :meta {:doc "Returns a lazy sequence of lists of n items each, at offsets step\n  apart. If step is not supplied, defaults to n, i.e. the partitions\n  do not overlap. If a pad collection is supplied, use its elements as\n  necessary to complete last partition up to n items. In case there are\n  not enough padding elements, return a partition with less than n items.", :arglists [[n coll] [n step coll] [n step pad coll]]}, :source "(defn\n partition\n \"Returns a lazy sequence of lists of n items each, at offsets step\\n  apart. If step is not supplied, defaults to n, i.e. the partitions\\n  do not overlap. If a pad collection is supplied, use its elements as\\n  necessary to complete last partition up to n items. In case there are\\n  not enough padding elements, return a partition with less than n items.\"\n ([n coll] (partition n n coll))\n ([n step coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (let\n     [p (take n s)]\n     (when\n      (== n (count p))\n      (cons p (partition n step (drop step s))))))))\n ([n step pad coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (let\n     [p (take n s)]\n     (if\n      (== n (count p))\n      (cons p (partition n step pad (drop step s)))\n      (list (take n (concat p pad)))))))))\n"} {:sym IMultiFn, :meta {:doc nil}, :methods (-add-method -default-dispatch-val -dispatch-fn -get-method -methods -prefer-method -prefers -remove-method -reset)} {:sym DEMUNGE_PATTERN, :meta {}, :source "(def DEMUNGE_PATTERN nil)\n"} {:sym IAssociative, :meta {:doc "Protocol for adding associativity to collections."}, :methods (-assoc -contains-key?)} {:sym bit-flip, :meta {:doc "Flip bit at index n", :arglists ([x n])}, :source "(defn bit-flip \"Flip bit at index n\" [x n] (cljs.core/bit-flip x n))\n"} {:sym long-array, :meta {:doc "Creates an array of longs. Does not coerce array, provided for compatibility\n  with Clojure.", :arglists [[size-or-seq] [size init-val-or-seq]]}, :source "(defn\n long-array\n \"Creates an array of longs. Does not coerce array, provided for compatibility\\n  with Clojure.\"\n ([size-or-seq]\n  (if\n   (number? size-or-seq)\n   (long-array size-or-seq nil)\n   (into-array size-or-seq)))\n ([size init-val-or-seq]\n  (let\n   [a (make-array size)]\n   (if\n    (seq? init-val-or-seq)\n    (let\n     [s (seq init-val-or-seq)]\n     (loop\n      [i 0 s s]\n      (if\n       (and s (< i size))\n       (do (aset a i (first s)) (recur (inc i) (next s)))\n       a)))\n    (do (dotimes [i size] (aset a i init-val-or-seq)) a)))))\n"} {:sym descendants, :meta {:doc "Returns the immediate and indirect children of tag, through a\n  relationship established via derive. h must be a hierarchy obtained\n  from make-hierarchy, if not supplied defaults to the global\n  hierarchy. Note: does not work on JavaScript type inheritance\n  relationships.", :arglists [[tag] [h tag]]}, :source "(defn\n descendants\n \"Returns the immediate and indirect children of tag, through a\\n  relationship established via derive. h must be a hierarchy obtained\\n  from make-hierarchy, if not supplied defaults to the global\\n  hierarchy. Note: does not work on JavaScript type inheritance\\n  relationships.\"\n ([tag] (descendants @(get-global-hierarchy) tag))\n ([h tag] (not-empty (get (:descendants h) tag))))\n"} {:sym merge, :meta {:doc "Returns a map that consists of the rest of the maps conj-ed onto\n  the first.  If a key occurs in more than one map, the mapping from\n  the latter (left-to-right) will be the mapping in the result.", :arglists ([& maps])}, :source "(defn\n merge\n \"Returns a map that consists of the rest of the maps conj-ed onto\\n  the first.  If a key occurs in more than one map, the mapping from\\n  the latter (left-to-right) will be the mapping in the result.\"\n [& maps]\n (when\n  (some identity maps)\n  (reduce\n   (fn* [p1__45415# p2__45416#] (conj (or p1__45415# {}) p2__45416#))\n   maps)))\n"} {:sym ISeqable, :meta {:doc "Protocol for adding the ability to a type to be transformed into a sequence."}, :methods (-seq)} {:sym js-mod, :meta {:doc "Modulus of num and div with original javascript behavior. i.e. bug for negative numbers", :arglists ([n d])}, :source "(defn\n js-mod\n \"Modulus of num and div with original javascript behavior. i.e. bug for negative numbers\"\n [n d]\n (cljs.core/js-mod n d))\n"} {:sym integer?, :meta {:doc "Returns true if n is a JavaScript number with no decimal part.", :arglists ([n])}, :source "(defn\n integer?\n \"Returns true if n is a JavaScript number with no decimal part.\"\n [n]\n (and\n  (number? n)\n  (not (js/isNaN n))\n  (not (identical? n js/Infinity))\n  (== (js/parseFloat n) (js/parseInt n 10))))\n"} {:sym NS_CACHE, :meta {:doc "Bootstrap only."}, :source "(def NS_CACHE nil)\n"} {:sym mapv, :meta {:doc "Returns a vector consisting of the result of applying f to the\n  set of first items of each coll, followed by applying f to the set\n  of second items in each coll, until any one of the colls is\n  exhausted.  Any remaining items in other colls are ignored. Function\n  f should accept number-of-colls arguments.", :arglists [[f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls]]}, :source "(defn\n mapv\n \"Returns a vector consisting of the result of applying f to the\\n  set of first items of each coll, followed by applying f to the set\\n  of second items in each coll, until any one of the colls is\\n  exhausted.  Any remaining items in other colls are ignored. Function\\n  f should accept number-of-colls arguments.\"\n ([f coll]\n  (->\n   (reduce (fn [v o] (conj! v (f o))) (transient []) coll)\n   persistent!))\n ([f c1 c2] (into [] (map f c1 c2)))\n ([f c1 c2 c3] (into [] (map f c1 c2 c3)))\n ([f c1 c2 c3 & colls] (into [] (apply map f c1 c2 c3 colls))))\n"} {:sym infinite?, :meta {:doc "Returns true for Infinity and -Infinity values.", :arglists ([x])}, :source "(defn\n infinite?\n \"Returns true for Infinity and -Infinity values.\"\n [x]\n (or\n  (identical? x js/Number.POSITIVE_INFINITY)\n  (identical? x js/Number.NEGATIVE_INFINITY)))\n"} {:sym partition-all, :meta {:doc "Returns a lazy sequence of lists like partition, but may include\n  partitions with fewer than n items at the end.  Returns a stateful\n  transducer when no collection is provided.", :arglists [[n] [n coll] [n step coll]]}, :source "(defn\n partition-all\n \"Returns a lazy sequence of lists like partition, but may include\\n  partitions with fewer than n items at the end.  Returns a stateful\\n  transducer when no collection is provided.\"\n ([n]\n  (fn\n   [rf]\n   (let\n    [a (array-list)]\n    (fn\n     ([] (rf))\n     ([result]\n      (let\n       [result\n        (if\n         (.isEmpty a)\n         result\n         (let\n          [v (vec (.toArray a))]\n          (.clear a)\n          (unreduced (rf result v))))]\n       (rf result)))\n     ([result input]\n      (.add a input)\n      (if\n       (== n (.size a))\n       (let [v (vec (.toArray a))] (.clear a) (rf result v))\n       result))))))\n ([n coll] (partition-all n n coll))\n ([n step coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (cons (take n s) (partition-all n step (drop step s)))))))\n"} {:sym partition-by, :meta {:doc "Applies f to each value in coll, splitting it each time f returns a\n   new value.  Returns a lazy seq of partitions.  Returns a stateful\n   transducer when no collection is provided.", :arglists [[f] [f coll]]}, :source "(defn\n partition-by\n \"Applies f to each value in coll, splitting it each time f returns a\\n   new value.  Returns a lazy seq of partitions.  Returns a stateful\\n   transducer when no collection is provided.\"\n ([f]\n  (fn\n   [rf]\n   (let\n    [a (array-list) pa (volatile! :cljs.core/none)]\n    (fn\n     ([] (rf))\n     ([result]\n      (let\n       [result\n        (if\n         (.isEmpty a)\n         result\n         (let\n          [v (vec (.toArray a))]\n          (.clear a)\n          (unreduced (rf result v))))]\n       (rf result)))\n     ([result input]\n      (let\n       [pval @pa val (f input)]\n       (vreset! pa val)\n       (if\n        (or (keyword-identical? pval :cljs.core/none) (= val pval))\n        (do (.add a input) result)\n        (let\n         [v (vec (.toArray a))]\n         (.clear a)\n         (let\n          [ret (rf result v)]\n          (when-not (reduced? ret) (.add a input))\n          ret)))))))))\n ([f coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (let\n     [fst\n      (first s)\n      fv\n      (f fst)\n      run\n      (cons\n       fst\n       (take-while (fn* [p1__45427#] (= fv (f p1__45427#))) (next s)))]\n     (cons run (partition-by f (lazy-seq (drop (count run) s)))))))))\n"} {:sym ISequential, :meta {:doc "Marker interface indicating a persistent collection of sequential items"}, :methods ()} {:sym equiv-map, :meta {:doc "Test map equivalence. Returns true if x equals y, otherwise returns false.", :arglists ([x y])}, :source "(defn\n equiv-map\n \"Test map equivalence. Returns true if x equals y, otherwise returns false.\"\n [x y]\n (boolean\n  (when\n   (and (map? y) (not (record? y)))\n   (when\n    (== (count x) (count y))\n    (if\n     (satisfies? IKVReduce x)\n     (reduce-kv\n      (fn\n       [_ k v]\n       (if (= (get y k never-equiv) v) true (reduced false)))\n      true\n      x)\n     (every?\n      (fn [xkv] (= (get y (first xkv) never-equiv) (second xkv)))\n      x))))))\n"} {:sym object-array, :meta {:doc "Creates an array of objects. Does not coerce array, provided for compatibility\n  with Clojure.", :arglists [[size-or-seq] [size init-val-or-seq]]}, :source "(defn\n object-array\n \"Creates an array of objects. Does not coerce array, provided for compatibility\\n  with Clojure.\"\n ([size-or-seq]\n  (if\n   (number? size-or-seq)\n   (object-array size-or-seq nil)\n   (into-array size-or-seq)))\n ([size init-val-or-seq]\n  (let\n   [a (make-array size)]\n   (if\n    (seq? init-val-or-seq)\n    (let\n     [s (seq init-val-or-seq)]\n     (loop\n      [i 0 s s]\n      (if\n       (and s (< i size))\n       (do (aset a i (first s)) (recur (inc i) (next s)))\n       a)))\n    (do (dotimes [i size] (aset a i init-val-or-seq)) a)))))\n"} {:sym derive, :meta {:doc "Establishes a parent/child relationship between parent and\n  tag. Parent must be a namespace-qualified symbol or keyword and\n  child can be either a namespace-qualified symbol or keyword or a\n  class. h must be a hierarchy obtained from make-hierarchy, if not\n  supplied defaults to, and modifies, the global hierarchy.", :arglists [[tag parent] [h tag parent]]}, :source "(defn\n derive\n \"Establishes a parent/child relationship between parent and\\n  tag. Parent must be a namespace-qualified symbol or keyword and\\n  child can be either a namespace-qualified symbol or keyword or a\\n  class. h must be a hierarchy obtained from make-hierarchy, if not\\n  supplied defaults to, and modifies, the global hierarchy.\"\n ([tag parent]\n  (assert (namespace parent))\n  (swap-global-hierarchy! derive tag parent)\n  nil)\n ([h tag parent]\n  (assert (not= tag parent))\n  (let\n   [tp\n    (:parents h)\n    td\n    (:descendants h)\n    ta\n    (:ancestors h)\n    tf\n    (fn\n     [m source sources target targets]\n     (reduce\n      (fn\n       [ret k]\n       (assoc\n        ret\n        k\n        (reduce\n         conj\n         (get targets k #{})\n         (cons target (targets target)))))\n      m\n      (cons source (sources source))))]\n   (or\n    (when-not\n     (contains? (tp tag) parent)\n     (when\n      (contains? (ta tag) parent)\n      (throw (js/Error. (str tag \"already has\" parent \"as ancestor\"))))\n     (when\n      (contains? (ta parent) tag)\n      (throw\n       (js/Error.\n        (str \"Cyclic derivation:\" parent \"has\" tag \"as ancestor\"))))\n     {:parents (assoc (:parents h) tag (conj (get tp tag #{}) parent)),\n      :ancestors (tf (:ancestors h) tag td parent ta),\n      :descendants (tf (:descendants h) parent ta tag td)})\n    h))))\n"} {:sym seq-iter, :meta {:doc nil, :arglists ([coll])}, :source "(defn seq-iter [coll] (SeqIter. INIT coll))\n"} {:sym IChunkedSeq, :meta {:doc "Protocol for accessing a collection as sequential chunks."}, :methods (-chunked-first -chunked-rest)} {:sym special-symbol?, :meta {:doc "Returns true if x names a special form", :arglists ([x])}, :source "(defn\n special-symbol?\n \"Returns true if x names a special form\"\n [x]\n (contains?\n  '#{&\n     case*\n     defrecord*\n     try\n     ns*\n     finally\n     loop*\n     do\n     letfn*\n     if\n     new\n     ns\n     deftype*\n     let*\n     js*\n     fn*\n     recur\n     set!\n     .\n     var\n     quote\n     catch\n     throw\n     def}\n  x))\n"} {:sym ancestors, :meta {:doc "Returns the immediate and indirect parents of tag, either via a JavaScript type\n  inheritance relationship or a relationship established via derive. h\n  must be a hierarchy obtained from make-hierarchy, if not supplied\n  defaults to the global hierarchy", :arglists [[tag] [h tag]]}, :source "(defn\n ancestors\n \"Returns the immediate and indirect parents of tag, either via a JavaScript type\\n  inheritance relationship or a relationship established via derive. h\\n  must be a hierarchy obtained from make-hierarchy, if not supplied\\n  defaults to the global hierarchy\"\n ([tag] (ancestors @(get-global-hierarchy) tag))\n ([h tag] (not-empty (get (:ancestors h) tag))))\n"} {:sym subseq, :meta {:doc "sc must be a sorted collection, test(s) one of <, <=, > or\n  >=. Returns a seq of those entries with keys ek for\n  which (test (.. sc comparator (compare ek key)) 0) is true", :arglists [[sc test key] [sc start-test start-key end-test end-key]]}, :source "(defn\n subseq\n \"sc must be a sorted collection, test(s) one of <, <=, > or\\n  >=. Returns a seq of those entries with keys ek for\\n  which (test (.. sc comparator (compare ek key)) 0) is true\"\n ([sc test key]\n  (let\n   [include (mk-bound-fn sc test key)]\n   (if\n    (#{> >=} test)\n    (when-let\n     [[e :as s] (-sorted-seq-from sc key true)]\n     (if (include e) s (next s)))\n    (take-while include (-sorted-seq sc true)))))\n ([sc start-test start-key end-test end-key]\n  (when-let\n   [[e :as s] (-sorted-seq-from sc start-key true)]\n   (take-while\n    (mk-bound-fn sc end-test end-key)\n    (if ((mk-bound-fn sc start-test start-key) e) s (next s))))))\n"} {:sym gensym, :meta {:doc "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__'.", :arglists [[] [prefix-string]]}, :source "(defn\n gensym\n \"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__'.\"\n ([] (gensym \"G__\"))\n ([prefix-string]\n  (when (nil? gensym_counter) (set! gensym_counter (atom 0)))\n  (symbol (str prefix-string (swap! gensym_counter inc)))))\n"} {:sym -next, :meta {:doc "Returns a new collection of coll without the first item. In contrast to\n     rest, it should return nil if there are no more items, e.g.\n     (next []) => nil\n     (next nil) => nil", :arglists ([coll])}, :protocol INext} {:sym delay?, :meta {:doc "returns true if x is a Delay created with delay", :arglists ([x])}, :source "(defn\n delay?\n \"returns true if x is a Delay created with delay\"\n [x]\n (instance? Delay x))\n"} {:sym flatten, :meta {:doc "Takes any nested combination of sequential things (lists, vectors,\n  etc.) and returns their contents as a single, flat sequence.\n  (flatten nil) returns nil.", :arglists ([x])}, :source "(defn\n flatten\n \"Takes any nested combination of sequential things (lists, vectors,\\n  etc.) and returns their contents as a single, flat sequence.\\n  (flatten nil) returns nil.\"\n [x]\n (filter\n  (fn* [p1__45413#] (not (sequential? p1__45413#)))\n  (rest (tree-seq sequential? seq x))))\n"} {:sym -dissoc, :meta {:doc "Returns a new collection of coll without the mapping for key k.", :arglists ([coll k])}, :protocol IMap} {:sym doubles, :meta {:doc nil, :arglists ([x])}, :source "(defn doubles [x] x)\n"} {:sym halt-when, :meta {:doc "Returns a transducer that ends transduction when pred returns true\n  for an input. When retf is supplied it must be a fn of 2 arguments -\n  it will be passed the (completed) result so far and the input that\n  triggered the predicate, and its return value (if it does not throw\n  an exception) will be the return value of the transducer. If retf\n  is not supplied, the input that triggered the predicate will be\n  returned. If the predicate never returns true the transduction is\n  unaffected.", :arglists [[pred] [pred retf]]}, :source "(defn\n halt-when\n \"Returns a transducer that ends transduction when pred returns true\\n  for an input. When retf is supplied it must be a fn of 2 arguments -\\n  it will be passed the (completed) result so far and the input that\\n  triggered the predicate, and its return value (if it does not throw\\n  an exception) will be the return value of the transducer. If retf\\n  is not supplied, the input that triggered the predicate will be\\n  returned. If the predicate never returns true the transduction is\\n  unaffected.\"\n {:added \"1.9\"}\n ([pred] (halt-when pred nil))\n ([pred retf]\n  (fn\n   [rf]\n   (fn\n    ([] (rf))\n    ([result]\n     (if\n      (and (map? result) (contains? result :cljs.core/halt))\n      (:cljs.core/halt result)\n      (rf result)))\n    ([result input]\n     (if\n      (pred input)\n      (reduced\n       {:cljs.core/halt (if retf (retf (rf result) input) input)})\n      (rf result input)))))))\n"} {:sym -contains-key?, :meta {:doc "Returns true if k is a key in coll.", :arglists ([coll k])}, :protocol IAssociative} {:sym remove-watch, :meta {:doc "Removes a watch (set by add-watch) from a reference", :arglists ([iref key])}, :source "(defn\n remove-watch\n \"Removes a watch (set by add-watch) from a reference\"\n [iref key]\n (-remove-watch iref key)\n iref)\n"} {:sym ex-info, :meta {:doc "Create an instance of ExceptionInfo, an Error type that carries a\n  map of additional data.", :arglists [[msg data] [msg data cause]]}, :source "(defn\n ex-info\n \"Create an instance of ExceptionInfo, an Error type that carries a\\n  map of additional data.\"\n ([msg data] (ex-info msg data nil))\n ([msg data cause] (ExceptionInfo. msg data cause)))\n"} {:sym ifn?, :meta {:doc "Returns true if f returns true for fn? or satisfies IFn.", :arglists ([f])}, :source "(defn\n ifn?\n \"Returns true if f returns true for fn? or satisfies IFn.\"\n [f]\n (or (fn? f) (satisfies? IFn f)))\n"} {:sym IAtom, :meta {:doc "Marker protocol indicating an atom."}, :methods ()} {:sym nat-int?, :meta {:doc "Return true if x satisfies int? and is a natural integer value.", :arglists ([x])}, :source "(defn\n nat-int?\n \"Return true if x satisfies int? and is a natural integer value.\"\n [x]\n (cond\n  (integer? x)\n  (not (neg? x))\n  (instance? goog.math.Integer x)\n  (not (.isNegative x))\n  (instance? goog.math.Long x)\n  (not (.isNegative x))\n  :else\n  false))\n"} {:sym IWatchable, :meta {:doc "Protocol for types that can be watched. Currently only implemented by Atom."}, :methods (-add-watch -notify-watches -remove-watch)} {:sym subvec, :meta {:doc "Returns a persistent vector of the items in vector from\n  start (inclusive) to end (exclusive).  If end is not supplied,\n  defaults to (count vector). This operation is O(1) and very fast, as\n  the resulting vector shares structure with the original and no\n  trimming is done.", :arglists [[v start] [v start end]]}, :source "(defn\n subvec\n \"Returns a persistent vector of the items in vector from\\n  start (inclusive) to end (exclusive).  If end is not supplied,\\n  defaults to (count vector). This operation is O(1) and very fast, as\\n  the resulting vector shares structure with the original and no\\n  trimming is done.\"\n ([v start] (subvec v start (count v)))\n ([v start end]\n  (assert (and (not (nil? start)) (not (nil? end))))\n  (build-subvec nil v (int start) (int end) nil)))\n"} {:sym -pop!, :meta {:doc "Returns tcoll with the last item removed from it.", :arglists ([tcoll])}, :protocol ITransientVector} {:sym partial, :meta {:doc "Takes a function f and fewer than the normal arguments to f, and\n  returns a fn that takes a variable number of additional args. When\n  called, the returned function calls f with args + additional args.", :arglists [[f] [f arg1] [f arg1 arg2] [f arg1 arg2 arg3] [f arg1 arg2 arg3 & more]]}, :source "(defn\n partial\n \"Takes a function f and fewer than the normal arguments to f, and\\n  returns a fn that takes a variable number of additional args. When\\n  called, the returned function calls f with args + additional args.\"\n ([f] f)\n ([f arg1]\n  (fn\n   ([] (f arg1))\n   ([x] (f arg1 x))\n   ([x y] (f arg1 x y))\n   ([x y z] (f arg1 x y z))\n   ([x y z & args] (apply f arg1 x y z args))))\n ([f arg1 arg2]\n  (fn\n   ([] (f arg1 arg2))\n   ([x] (f arg1 arg2 x))\n   ([x y] (f arg1 arg2 x y))\n   ([x y z] (f arg1 arg2 x y z))\n   ([x y z & args] (apply f arg1 arg2 x y z args))))\n ([f arg1 arg2 arg3]\n  (fn\n   ([] (f arg1 arg2 arg3))\n   ([x] (f arg1 arg2 arg3 x))\n   ([x y] (f arg1 arg2 arg3 x y))\n   ([x y z] (f arg1 arg2 arg3 x y z))\n   ([x y z & args] (apply f arg1 arg2 arg3 x y z args))))\n ([f arg1 arg2 arg3 & more]\n  (fn [& args] (apply f arg1 arg2 arg3 (concat more args)))))\n"} {:sym chunked-seq?, :meta {:doc "Return true if x satisfies IChunkedSeq.", :arglists ([x])}, :source "(defn\n chunked-seq?\n \"Return true if x satisfies IChunkedSeq.\"\n [x]\n (implements? IChunkedSeq x))\n"} {:sym replicate, :meta {:doc "DEPRECATED: Use 'repeat' instead.\n  Returns a lazy seq of n xs.", :arglists ([n x])}, :source "(defn\n replicate\n \"DEPRECATED: Use 'repeat' instead.\\n  Returns a lazy seq of n xs.\"\n [n x]\n (take n (repeat x)))\n"} {:sym min-key, :meta {:doc "Returns the x for which (k x), a number, is least.\n\n  If there are multiple such xs, the last one is returned.", :arglists [[k x] [k x y] [k x y & more]]}, :source "(defn\n min-key\n \"Returns the x for which (k x), a number, is least.\\n\\n  If there are multiple such xs, the last one is returned.\"\n ([k x] x)\n ([k x y] (if (< (k x) (k y)) x y))\n ([k x y & more]\n  (reduce\n   (fn* [p1__45425# p2__45426#] (min-key k p1__45425# p2__45426#))\n   (min-key k x y)\n   more)))\n"} {:sym reduced, :meta {:doc "Wraps x in a way such that a reduce will terminate with the value x", :arglists ([x])}, :source "(defn\n reduced\n \"Wraps x in a way such that a reduce will terminate with the value x\"\n [x]\n (Reduced. x))\n"} {:sym re-matches, :meta {:doc "Returns the result of (re-find re s) if re fully matches s.", :arglists ([re s])}, :source "(defn\n re-matches\n \"Returns the result of (re-find re s) if re fully matches s.\"\n [re s]\n (if\n  (string? s)\n  (let\n   [matches (.exec re s)]\n   (when\n    (and (not (nil? matches)) (= (aget matches 0) s))\n    (if (== (count matches) 1) (aget matches 0) (vec matches))))\n  (throw (js/TypeError. \"re-matches must match against a string.\"))))\n"} {:sym array-map, :meta {:doc "keyval => key val\n  Returns a new array map with supplied mappings.", :arglists ([& keyvals])}, :source "(defn\n array-map\n \"keyval => key val\\n  Returns a new array map with supplied mappings.\"\n [& keyvals]\n (let\n  [arr\n   (if\n    (and (instance? IndexedSeq keyvals) (zero? (.-i keyvals)))\n    (.-arr keyvals)\n    (into-array keyvals))]\n  (.createAsIfByAssoc PersistentArrayMap arr)))\n"} {:sym ITransientSet, :meta {:doc "Protocol for adding set functionality to a transient collection."}, :methods (-disjoin!)} {:sym unchecked-byte, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-byte [x] x)\n"} {:sym every-pred, :meta {:doc "Takes a set of predicates and returns a function f that returns true if all of its\n  composing predicates return a logical true value against all of its arguments, else it returns\n  false. Note that f is short-circuiting in that it will stop execution on the first\n  argument that triggers a logical false result against the original predicates.", :arglists [[p] [p1 p2] [p1 p2 p3] [p1 p2 p3 & ps]]}, :source "(defn\n every-pred\n \"Takes a set of predicates and returns a function f that returns true if all of its\\n  composing predicates return a logical true value against all of its arguments, else it returns\\n  false. Note that f is short-circuiting in that it will stop execution on the first\\n  argument that triggers a logical false result against the original predicates.\"\n ([p]\n  (fn\n   ep1\n   ([] true)\n   ([x] (boolean (p x)))\n   ([x y] (boolean (and (p x) (p y))))\n   ([x y z] (boolean (and (p x) (p y) (p z))))\n   ([x y z & args] (boolean (and (ep1 x y z) (every? p args))))))\n ([p1 p2]\n  (fn\n   ep2\n   ([] true)\n   ([x] (boolean (and (p1 x) (p2 x))))\n   ([x y] (boolean (and (p1 x) (p1 y) (p2 x) (p2 y))))\n   ([x y z] (boolean (and (p1 x) (p1 y) (p1 z) (p2 x) (p2 y) (p2 z))))\n   ([x y z & args]\n    (boolean\n     (and\n      (ep2 x y z)\n      (every?\n       (fn* [p1__45400#] (and (p1 p1__45400#) (p2 p1__45400#)))\n       args))))))\n ([p1 p2 p3]\n  (fn\n   ep3\n   ([] true)\n   ([x] (boolean (and (p1 x) (p2 x) (p3 x))))\n   ([x y] (boolean (and (p1 x) (p2 x) (p3 x) (p1 y) (p2 y) (p3 y))))\n   ([x y z]\n    (boolean\n     (and\n      (p1 x)\n      (p2 x)\n      (p3 x)\n      (p1 y)\n      (p2 y)\n      (p3 y)\n      (p1 z)\n      (p2 z)\n      (p3 z))))\n   ([x y z & args]\n    (boolean\n     (and\n      (ep3 x y z)\n      (every?\n       (fn*\n        [p1__45401#]\n        (and (p1 p1__45401#) (p2 p1__45401#) (p3 p1__45401#)))\n       args))))))\n ([p1 p2 p3 & ps]\n  (let\n   [ps (list* p1 p2 p3 ps)]\n   (fn\n    epn\n    ([] true)\n    ([x] (every? (fn* [p1__45402#] (p1__45402# x)) ps))\n    ([x y]\n     (every?\n      (fn* [p1__45403#] (and (p1__45403# x) (p1__45403# y)))\n      ps))\n    ([x y z]\n     (every?\n      (fn*\n       [p1__45404#]\n       (and (p1__45404# x) (p1__45404# y) (p1__45404# z)))\n      ps))\n    ([x y z & args]\n     (boolean\n      (and\n       (epn x y z)\n       (every? (fn* [p1__45405#] (every? p1__45405# args)) ps))))))))\n"} {:sym keys, :meta {:doc "Returns a sequence of the map's keys, in the same order as (seq map).", :arglists ([map])}, :source "(defn\n keys\n \"Returns a sequence of the map's keys, in the same order as (seq map).\"\n [map]\n (when-let [mseq (seq map)] (KeySeq. mseq nil)))\n"} {:sym missing-protocol, :meta {:doc nil, :arglists ([proto obj])}, :source "(defn\n missing-protocol\n [proto obj]\n (let\n  [ty\n   (type obj)\n   ty\n   (if\n    (and ty (.-cljs$lang$type ty))\n    (.-cljs$lang$ctorStr ty)\n    (goog/typeOf obj))]\n  (js/Error.\n   (.join\n    (array\n     \"No protocol method \"\n     proto\n     \" defined for type \"\n     ty\n     \": \"\n     obj)\n    \"\"))))\n"} {:sym load-file, :meta {:doc nil, :arglists ([file])}, :source "(defn\n load-file\n [file]\n (when-not js/COMPILED (cljs.core/load-file* file)))\n"} {:sym distinct?, :meta {:doc "Returns true if no two of the arguments are =", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n distinct?\n \"Returns true if no two of the arguments are =\"\n ([x] true)\n ([x y] (not (= x y)))\n ([x y & more]\n  (if\n   (not (= x y))\n   (loop\n    [s #{x y} xs more]\n    (let\n     [x (first xs) etc (next xs)]\n     (if xs (if (contains? s x) false (recur (conj s x) etc)) true)))\n   false)))\n"} {:sym pos-int?, :meta {:doc "Return true if x satisfies int? and is positive.", :arglists ([x])}, :source "(defn\n pos-int?\n \"Return true if x satisfies int? and is positive.\"\n [x]\n (cond\n  (integer? x)\n  (pos? x)\n  (instance? goog.math.Integer x)\n  (and (not (.isNegative x)) (not (.isZero x)))\n  (instance? goog.math.Long x)\n  (and (not (.isNegative x)) (not (.isZero x)))\n  :else\n  false))\n"} {:sym unchecked-short, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-short [x] x)\n"} {:sym methods, :meta {:doc "Given a multimethod, returns a map of dispatch values -> dispatch fns", :arglists ([multifn])}, :source "(defn\n methods\n \"Given a multimethod, returns a map of dispatch values -> dispatch fns\"\n [multifn]\n (-methods multifn))\n"} {:sym odd?, :meta {:doc "Returns true if n is odd, throws an exception if n is not an integer", :arglists ([n])}, :source "(defn\n odd?\n \"Returns true if n is odd, throws an exception if n is not an integer\"\n [n]\n (not (even? n)))\n"} {:sym -get-method, :meta {:doc nil, :arglists ([mf dispatch-val])}, :protocol IMultiFn} {:sym frequencies, :meta {:doc "Returns a map from distinct items in coll to the number of times\n  they appear.", :arglists ([coll])}, :source "(defn\n frequencies\n \"Returns a map from distinct items in coll to the number of times\\n  they appear.\"\n [coll]\n (persistent!\n  (reduce\n   (fn [counts x] (assoc! counts x (inc (get counts x 0))))\n   (transient {})\n   coll)))\n"} {:sym reduceable?, :meta {:doc "Returns true if coll satisfies IReduce", :arglists ([x])}, :source "(defn\n reduceable?\n \"Returns true if coll satisfies IReduce\"\n [x]\n (satisfies? IReduce x))\n"} {:sym string-hash-cache, :meta {}, :source "(def string-hash-cache (js-obj))\n"} {:sym rsubseq, :meta {:doc "sc must be a sorted collection, test(s) one of <, <=, > or\n  >=. Returns a reverse seq of those entries with keys ek for\n  which (test (.. sc comparator (compare ek key)) 0) is true", :arglists [[sc test key] [sc start-test start-key end-test end-key]]}, :source "(defn\n rsubseq\n \"sc must be a sorted collection, test(s) one of <, <=, > or\\n  >=. Returns a reverse seq of those entries with keys ek for\\n  which (test (.. sc comparator (compare ek key)) 0) is true\"\n ([sc test key]\n  (let\n   [include (mk-bound-fn sc test key)]\n   (if\n    (#{< <=} test)\n    (when-let\n     [[e :as s] (-sorted-seq-from sc key false)]\n     (if (include e) s (next s)))\n    (take-while include (-sorted-seq sc false)))))\n ([sc start-test start-key end-test end-key]\n  (when-let\n   [[e :as s] (-sorted-seq-from sc end-key false)]\n   (take-while\n    (mk-bound-fn sc start-test start-key)\n    (if ((mk-bound-fn sc end-test end-key) e) s (next s))))))\n"} {:sym inc, :meta {:doc "Returns a number one greater than num.", :arglists ([x])}, :source "(defn\n inc\n \"Returns a number one greater than num.\"\n [x]\n (cljs.core/+ x 1))\n"} {:sym type->str, :meta {:doc nil, :arglists ([ty])}, :source "(defn type->str [ty] (if-let [s (.-cljs$lang$ctorStr ty)] s (str ty)))\n"} {:sym get-method, :meta {:doc "Given a multimethod and a dispatch value, returns the dispatch fn\n  that would apply to that value, or nil if none apply and no default", :arglists ([multifn dispatch-val])}, :source "(defn\n get-method\n \"Given a multimethod and a dispatch value, returns the dispatch fn\\n  that would apply to that value, or nil if none apply and no default\"\n [multifn dispatch-val]\n (-get-method multifn dispatch-val))\n"} {:sym uuid?, :meta {:doc nil, :arglists ([x])}, :source "(defn uuid? [x] (implements? IUUID x))\n"} {:sym es6-entries-iterator, :meta {:doc nil, :arglists ([coll])}, :source "(defn es6-entries-iterator [coll] (ES6EntriesIterator. (seq coll)))\n"} {:sym bit-clear, :meta {:doc "Clear bit at index n", :arglists ([x n])}, :source "(defn bit-clear \"Clear bit at index n\" [x n] (cljs.core/bit-clear x n))\n"} {:sym filter, :meta {:doc "Returns a lazy sequence of the items in coll for which\n  (pred item) returns logical true. pred must be free of side-effects.\n  Returns a transducer when no collection is provided.", :arglists [[pred] [pred coll]]}, :source "(defn\n filter\n \"Returns a lazy sequence of the items in coll for which\\n  (pred item) returns logical true. pred must be free of side-effects.\\n  Returns a transducer when no collection is provided.\"\n ([pred]\n  (fn\n   [rf]\n   (fn\n    ([] (rf))\n    ([result] (rf result))\n    ([result input] (if (pred input) (rf result input) result)))))\n ([pred coll]\n  (lazy-seq\n   (when-let\n    [s (seq coll)]\n    (if\n     (chunked-seq? s)\n     (let\n      [c (chunk-first s) size (count c) b (chunk-buffer size)]\n      (dotimes\n       [i size]\n       (when (pred (-nth c i)) (chunk-append b (-nth c i))))\n      (chunk-cons (chunk b) (filter pred (chunk-rest s))))\n     (let\n      [f (first s) r (rest s)]\n      (if (pred f) (cons f (filter pred r)) (filter pred r))))))))\n"} {:sym -assoc-n!, :meta {:doc "Returns tcoll with value val added at position n.", :arglists ([tcoll n val])}, :protocol ITransientVector} {:sym IWithMeta, :meta {:doc "Protocol for adding metadata to an object."}, :methods (-with-meta)} {:sym list, :meta {:doc "Creates a new list containing the items.", :arglists ([& xs])}, :source "(defn\n list\n \"Creates a new list containing the items.\"\n [& xs]\n (let\n  [arr\n   (if\n    (and (instance? IndexedSeq xs) (zero? (.-i xs)))\n    (.-arr xs)\n    (let\n     [arr (array)]\n     (loop\n      [xs xs]\n      (if-not\n       (nil? xs)\n       (do (.push arr (-first xs)) (recur (-next xs)))\n       arr))))]\n  (loop\n   [i (alength arr) r ()]\n   (if (> i 0) (recur (dec i) (-conj r (aget arr (dec i)))) r))))\n"} {:sym +, :meta {:doc "Returns the sum of nums. (+) returns 0.", :arglists [[] [x] [x y] [x y & more]]}, :source "(defn\n +\n \"Returns the sum of nums. (+) returns 0.\"\n ([] 0)\n ([x] x)\n ([x y] (cljs.core/+ x y))\n ([x y & more] (reduce + (cljs.core/+ x y) more)))\n"} {:sym split-with, :meta {:doc "Returns a vector of [(take-while pred coll) (drop-while pred coll)]", :arglists ([pred coll])}, :source "(defn\n split-with\n \"Returns a vector of [(take-while pred coll) (drop-while pred coll)]\"\n [pred coll]\n [(take-while pred coll) (drop-while pred coll)])\n"} {:sym aset, :meta {:doc "Sets the value at the index/indices. Works on JavaScript arrays.\n  Returns val.", :arglists [[array idx val] [array idx idx2 & idxv]]}, :source "(defn\n aset\n \"Sets the value at the index/indices. Works on JavaScript arrays.\\n  Returns val.\"\n ([array idx val] (cljs.core/aset array idx val))\n ([array idx idx2 & idxv] (apply aset (aget array idx) idx2 idxv)))\n"} {:sym int-rotate-left, :meta {:doc nil, :arglists ([x n])}, :source "(defn\n int-rotate-left\n [x n]\n (bit-or (bit-shift-left x n) (unsigned-bit-shift-right x (- n))))\n"} {:sym keyword, :meta {:doc "Returns a Keyword with the given namespace and name.  Do not use :\n  in the keyword strings, it will be added automatically.", :arglists [[name] [ns name]]}, :source "(defn\n keyword\n \"Returns a Keyword with the given namespace and name.  Do not use :\\n  in the keyword strings, it will be added automatically.\"\n ([name]\n  (cond\n   (keyword? name)\n   name\n   (symbol? name)\n   (Keyword.\n    (cljs.core/namespace name)\n    (cljs.core/name name)\n    (.-str name)\n    nil)\n   (= \"/\" name)\n   (Keyword. nil name name nil)\n   (string? name)\n   (let\n    [parts (.split name \"/\")]\n    (if\n     (== (alength parts) 2)\n     (Keyword. (aget parts 0) (aget parts 1) name nil)\n     (Keyword. nil (aget parts 0) name nil)))))\n ([ns name]\n  (let\n   [ns\n    (cond\n     (keyword? ns)\n     (cljs.core/name ns)\n     (symbol? ns)\n     (cljs.core/name ns)\n     :else\n     ns)\n    name\n    (cond\n     (keyword? name)\n     (cljs.core/name name)\n     (symbol? name)\n     (cljs.core/name name)\n     :else\n     name)]\n   (Keyword. ns name (str (when ns (str ns \"/\")) name) nil))))\n"} {:sym *ns*, :meta {:doc "Var bound to the current namespace. Only used for bootstrapping."}, :source "(def *ns* nil)\n"} {:sym *assert*, :meta {}, :source "(def *assert* true)\n"} {:sym ICollection, :meta {:doc "Protocol for adding to a collection."}, :methods (-conj)} {:sym chars, :meta {:doc nil, :arglists ([x])}, :source "(defn chars [x] x)\n"} {:sym str, :meta {:doc "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.", :arglists [[] [x] [x & ys]]}, :source "(defn\n str\n \"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.\"\n ([] \"\")\n ([x] (if (nil? x) \"\" (.join #js [x] \"\")))\n ([x & ys]\n  (loop\n   [sb (StringBuffer. (str x)) more ys]\n   (if\n    more\n    (recur (. sb (append (str (first more)))) (next more))\n    (.toString sb)))))\n"} {:sym next, :meta {:doc "Returns a seq of the items after the first. Calls seq on its\n  argument.  If there are no more items, returns nil", :arglists ([coll])}, :source "(defn\n next\n \"Returns a seq of the items after the first. Calls seq on its\\n  argument.  If there are no more items, returns nil\"\n [coll]\n (when-not\n  (nil? coll)\n  (if (implements? INext coll) (-next coll) (seq (rest coll)))))\n"} {:sym ASeq, :meta {:doc "Marker protocol indicating an array sequence."}, :methods ()} {:sym pr-seq-writer, :meta {:doc nil, :arglists ([objs writer opts])}, :source "(defn\n pr-seq-writer\n [objs writer opts]\n (pr-writer (first objs) writer opts)\n (doseq\n  [obj (next objs)]\n  (-write writer \" \")\n  (pr-writer obj writer opts)))\n"} {:sym IFn, :meta {:doc "Protocol for adding the ability to invoke an object as a function.\n  For example, a vector can also be used to look up a value:\n  ([1 2 3 4] 1) => 2"}, :methods (-invoke)} {:sym regexp?, :meta {:doc "Returns true if x is a JavaScript RegExp instance.", :arglists ([x])}, :source "(defn\n regexp?\n \"Returns true if x is a JavaScript RegExp instance.\"\n [x]\n (instance? js/RegExp x))\n"} {:sym hash-map, :meta {:doc "keyval => key val\n  Returns a new hash map with supplied mappings.", :arglists ([& keyvals])}, :source "(defn\n hash-map\n \"keyval => key val\\n  Returns a new hash map with supplied mappings.\"\n [& keyvals]\n (loop\n  [in (seq keyvals) out (transient (.-EMPTY PersistentHashMap))]\n  (if\n   in\n   (let\n    [in' (next in)]\n    (if\n     (nil? in')\n     (throw (js/Error. (str \"No value supplied for key: \" (first in))))\n     (recur (next in') (assoc! out (first in) (first in')))))\n   (persistent! out))))\n"} {:sym *exec-tap-fn*, :meta {:doc "Arranges to have tap functions executed via the supplied f, a\n  function of no arguments. Returns true if successful, false otherwise.", :arglists ([f])}, :source "(defn\n *exec-tap-fn*\n [f]\n (and (exists? js/setTimeout) (boolean (js/setTimeout f 0))))\n"} {:sym underive, :meta {:doc "Removes a parent/child relationship between parent and\n  tag. h must be a hierarchy obtained from make-hierarchy, if not\n  supplied defaults to, and modifies, the global hierarchy.", :arglists [[tag parent] [h tag parent]]}, :source "(defn\n underive\n \"Removes a parent/child relationship between parent and\\n  tag. h must be a hierarchy obtained from make-hierarchy, if not\\n  supplied defaults to, and modifies, the global hierarchy.\"\n ([tag parent] (swap-global-hierarchy! underive tag parent) nil)\n ([h tag parent]\n  (let\n   [parentMap\n    (:parents h)\n    childsParents\n    (if (parentMap tag) (disj (parentMap tag) parent) #{})\n    newParents\n    (if\n     (not-empty childsParents)\n     (assoc parentMap tag childsParents)\n     (dissoc parentMap tag))\n    deriv-seq\n    (flatten\n     (map\n      (fn*\n       [p1__45444#]\n       (cons\n        (first p1__45444#)\n        (interpose (first p1__45444#) (second p1__45444#))))\n      (seq newParents)))]\n   (if\n    (contains? (parentMap tag) parent)\n    (reduce\n     (fn* [p1__45445# p2__45446#] (apply derive p1__45445# p2__45446#))\n     (make-hierarchy)\n     (partition 2 deriv-seq))\n    h))))\n"} {:sym -reset!, :meta {:doc "Sets the value of o to new-value.", :arglists ([o new-value])}, :protocol IReset} {:sym -rest, :meta {:doc "Returns a new collection of coll without the first item. It should\n     always return a seq, e.g.\n     (rest []) => ()\n     (rest nil) => ()", :arglists ([coll])}, :protocol ISeq} {:sym --destructure-map, :meta {:doc nil, :arglists ([x])}, :source "(defn\n --destructure-map\n [x]\n (if (implements? ISeq x) (apply cljs.core/hash-map x) x))\n"} {:sym nil-iter, :meta {:doc nil, :arglists ([])}, :source "(defn\n nil-iter\n []\n (reify\n  Object\n  (hasNext [_] false)\n  (next [_] (js/Error. \"No such element\"))\n  (remove [_] (js/Error. \"Unsupported operation\"))))\n"} {:sym false?, :meta {:doc "Returns true if x is the value false, false otherwise.", :arglists ([x])}, :source "(defn\n false?\n \"Returns true if x is the value false, false otherwise.\"\n [x]\n (cljs.core/false? x))\n"} {:sym *print-readably*, :meta {:doc "When set to logical false, strings and characters will be printed with\n  non-alphanumeric characters converted to the appropriate escape sequences.\n\n  Defaults to true"}, :source "(def *print-readably* true)\n"} {:sym ints, :meta {:doc nil, :arglists ([x])}, :source "(defn ints [x] x)\n"} {:sym some-fn, :meta {:doc "Takes a set of predicates and returns a function f that returns the first logical true value\n  returned by one of its composing predicates against any of its arguments, else it returns\n  logical false. Note that f is short-circuiting in that it will stop execution on the first\n  argument that triggers a logical true result against the original predicates.", :arglists [[p] [p1 p2] [p1 p2 p3] [p1 p2 p3 & ps]]}, :source "(defn\n some-fn\n \"Takes a set of predicates and returns a function f that returns the first logical true value\\n  returned by one of its composing predicates against any of its arguments, else it returns\\n  logical false. Note that f is short-circuiting in that it will stop execution on the first\\n  argument that triggers a logical true result against the original predicates.\"\n ([p]\n  (fn\n   sp1\n   ([] nil)\n   ([x] (p x))\n   ([x y] (or (p x) (p y)))\n   ([x y z] (or (p x) (p y) (p z)))\n   ([x y z & args] (or (sp1 x y z) (some p args)))))\n ([p1 p2]\n  (fn\n   sp2\n   ([] nil)\n   ([x] (or (p1 x) (p2 x)))\n   ([x y] (or (p1 x) (p1 y) (p2 x) (p2 y)))\n   ([x y z] (or (p1 x) (p1 y) (p1 z) (p2 x) (p2 y) (p2 z)))\n   ([x y z & args]\n    (or\n     (sp2 x y z)\n     (some\n      (fn* [p1__45406#] (or (p1 p1__45406#) (p2 p1__45406#)))\n      args)))))\n ([p1 p2 p3]\n  (fn\n   sp3\n   ([] nil)\n   ([x] (or (p1 x) (p2 x) (p3 x)))\n   ([x y] (or (p1 x) (p2 x) (p3 x) (p1 y) (p2 y) (p3 y)))\n   ([x y z]\n    (or\n     (p1 x)\n     (p2 x)\n     (p3 x)\n     (p1 y)\n     (p2 y)\n     (p3 y)\n     (p1 z)\n     (p2 z)\n     (p3 z)))\n   ([x y z & args]\n    (or\n     (sp3 x y z)\n     (some\n      (fn*\n       [p1__45407#]\n       (or (p1 p1__45407#) (p2 p1__45407#) (p3 p1__45407#)))\n      args)))))\n ([p1 p2 p3 & ps]\n  (let\n   [ps (list* p1 p2 p3 ps)]\n   (fn\n    spn\n    ([] nil)\n    ([x] (some (fn* [p1__45408#] (p1__45408# x)) ps))\n    ([x y]\n     (some (fn* [p1__45409#] (or (p1__45409# x) (p1__45409# y))) ps))\n    ([x y z]\n     (some\n      (fn*\n       [p1__45410#]\n       (or (p1__45410# x) (p1__45410# y) (p1__45410# z)))\n      ps))\n    ([x y z & args]\n     (or\n      (spn x y z)\n      (some (fn* [p1__45411#] (some p1__45411# args)) ps)))))))\n"} {:sym *flush-on-newline*, :meta {:doc "When set to true, output will be flushed whenever a newline is printed.\n\n  Defaults to true."}, :source "(def *flush-on-newline* true)\n"} {:sym to-array, :meta {:doc "Returns an array containing the contents of coll.", :arglists ([coll])}, :source "(defn\n to-array\n \"Returns an array containing the contents of coll.\"\n [coll]\n (let\n  [ary (array)]\n  (loop\n   [s (seq coll)]\n   (if-not (nil? s) (do (. ary push (first s)) (recur (next s))) ary))))\n"} {:sym list?, :meta {:doc "Returns true if x implements IList", :arglists ([x])}, :source "(defn\n list?\n \"Returns true if x implements IList\"\n [x]\n (satisfies? IList x))\n"} {:sym array?, :meta {:doc "Returns true if x is a JavaScript array.", :arglists ([x])}, :source "(defn\n array?\n \"Returns true if x is a JavaScript array.\"\n [x]\n (if\n  (identical? *target* \"nodejs\")\n  (.isArray js/Array x)\n  (instance? js/Array x)))\n"} {:sym simple-ident?, :meta {:doc "Return true if x is a symbol or keyword without a namespace", :arglists ([x])}, :source "(defn\n simple-ident?\n \"Return true if x is a symbol or keyword without a namespace\"\n [x]\n (and (ident? x) (nil? (namespace x))))\n"} {:sym clone, :meta {:doc "Clone the supplied value which must implement ICloneable.", :arglists ([value])}, :source "(defn\n clone\n \"Clone the supplied value which must implement ICloneable.\"\n [value]\n (-clone value))\n"} {:sym demunge, :meta {:doc nil, :arglists ([name])}, :source "(defn\n demunge\n [name]\n ((if (symbol? name) symbol str)\n  (let\n   [name' (str name)]\n   (if (identical? name' \"_DOT__DOT_\") \"..\" (demunge-str name')))))\n"} {:sym bit-not, :meta {:doc "Bitwise complement", :arglists ([x])}, :source "(defn bit-not \"Bitwise complement\" [x] (cljs.core/bit-not x))\n"} {:sym byte, :meta {:doc nil, :arglists ([x])}, :source "(defn byte [x] x)\n"} {:sym max, :meta {:doc "Returns the greatest of the nums.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n max\n \"Returns the greatest of the nums.\"\n ([x] x)\n ([x y] (cljs.core/max x y))\n ([x y & more] (reduce max (cljs.core/max x y) more)))\n"} {:sym IComparable, :meta {:doc "Protocol for values that can be compared."}, :methods (-compare)} {:sym ==, :meta {:doc "Returns non-nil if nums all have the equivalent\n  value, otherwise false. Behavior on non nums is\n  undefined.", :arglists [[x] [x y] [x y & more]]}, :source "(defn\n ==\n \"Returns non-nil if nums all have the equivalent\\n  value, otherwise false. Behavior on non nums is\\n  undefined.\"\n ([x] true)\n ([x y] (-equiv x y))\n ([x y & more]\n  (if\n   (== x y)\n   (if\n    (next more)\n    (recur y (first more) (next more))\n    (== y (first more)))\n   false)))\n"} {:sym parents, :meta {:doc "Returns the immediate parents of tag, either via a JavaScript type\n  inheritance relationship or a relationship established via derive. h\n  must be a hierarchy obtained from make-hierarchy, if not supplied\n  defaults to the global hierarchy", :arglists [[tag] [h tag]]}, :source "(defn\n parents\n \"Returns the immediate parents of tag, either via a JavaScript type\\n  inheritance relationship or a relationship established via derive. h\\n  must be a hierarchy obtained from make-hierarchy, if not supplied\\n  defaults to the global hierarchy\"\n ([tag] (parents @(get-global-hierarchy) tag))\n ([h tag] (not-empty (get (:parents h) tag))))\n"} {:sym count, :meta {:doc "Returns the number of items in the collection. (count nil) returns\n  0.  Also works on strings, arrays, and Maps", :arglists ([coll])}, :source "(defn\n count\n \"Returns the number of items in the collection. (count nil) returns\\n  0.  Also works on strings, arrays, and Maps\"\n [coll]\n (if-not\n  (nil? coll)\n  (cond\n   (implements? ICounted coll)\n   (-count coll)\n   (array? coll)\n   (alength coll)\n   (string? coll)\n   (.-length coll)\n   (implements? ISeqable coll)\n   (accumulating-seq-count coll)\n   :else\n   (-count coll))\n  0))\n"} {:sym -disjoin!, :meta {:doc "Returns tcoll without v.", :arglists ([tcoll v])}, :protocol ITransientSet} {:sym *loaded-libs*, :meta {}, :source "(defonce *loaded-libs* nil)\n"} {:sym sorted-map-by, :meta {:doc "keyval => key val\n  Returns a new sorted map with supplied mappings, using the supplied comparator.", :arglists [[comparator & keyvals]]}, :source "(defn\n sorted-map-by\n \"keyval => key val\\n  Returns a new sorted map with supplied mappings, using the supplied comparator.\"\n ([comparator & keyvals]\n  (loop\n   [in\n    (seq keyvals)\n    out\n    (PersistentTreeMap. (fn->comparator comparator) nil 0 nil 0)]\n   (if in (recur (nnext in) (assoc out (first in) (second in))) out))))\n"} {:sym apply, :meta {:doc "Applies fn f to the argument list formed by prepending intervening arguments to args.", :arglists [[f args] [f x args] [f x y args] [f x y z args] [f a b c d & args]]}, :source "(defn\n apply\n \"Applies fn f to the argument list formed by prepending intervening arguments to args.\"\n ([f args]\n  (if\n   (.-cljs$lang$applyTo f)\n   (let\n    [fixed-arity\n     (.-cljs$lang$maxFixedArity f)\n     bc\n     (bounded-count (inc fixed-arity) args)]\n    (if\n     (<= bc fixed-arity)\n     (apply-to f bc args)\n     (.cljs$lang$applyTo f args)))\n   (apply-to-simple f (seq args))))\n ([f x args]\n  (if\n   (.-cljs$lang$applyTo f)\n   (let\n    [arglist\n     (list* x args)\n     fixed-arity\n     (.-cljs$lang$maxFixedArity f)\n     bc\n     (inc (bounded-count fixed-arity args))]\n    (if\n     (<= bc fixed-arity)\n     (apply-to f bc arglist)\n     (.cljs$lang$applyTo f arglist)))\n   (apply-to-simple f x (seq args))))\n ([f x y args]\n  (if\n   (.-cljs$lang$applyTo f)\n   (let\n    [arglist\n     (list* x y args)\n     fixed-arity\n     (.-cljs$lang$maxFixedArity f)\n     bc\n     (+ 2 (bounded-count (dec fixed-arity) args))]\n    (if\n     (<= bc fixed-arity)\n     (apply-to f bc arglist)\n     (.cljs$lang$applyTo f arglist)))\n   (apply-to-simple f x y (seq args))))\n ([f x y z args]\n  (if\n   (.-cljs$lang$applyTo f)\n   (let\n    [arglist\n     (list* x y z args)\n     fixed-arity\n     (.-cljs$lang$maxFixedArity f)\n     bc\n     (+ 3 (bounded-count (- fixed-arity 2) args))]\n    (if\n     (<= bc fixed-arity)\n     (apply-to f bc arglist)\n     (.cljs$lang$applyTo f arglist)))\n   (apply-to-simple f x y z (seq args))))\n ([f a b c d & args]\n  (if\n   (.-cljs$lang$applyTo f)\n   (let\n    [spread-args\n     (spread args)\n     arglist\n     (cons a (cons b (cons c (cons d spread-args))))\n     fixed-arity\n     (.-cljs$lang$maxFixedArity f)\n     bc\n     (+ 4 (bounded-count (- fixed-arity 3) spread-args))]\n    (if\n     (<= bc fixed-arity)\n     (apply-to f bc arglist)\n     (.cljs$lang$applyTo f arglist)))\n   (apply-to-simple f a b c d (spread args)))))\n"} {:sym add-to-string-hash-cache, :meta {:doc nil, :arglists ([k])}, :source "(defn\n add-to-string-hash-cache\n [k]\n (let\n  [h (hash-string* k)]\n  (gobject/set string-hash-cache k h)\n  (set! string-hash-cache-count (inc string-hash-cache-count))\n  h))\n"} {:sym clj->js, :meta {:doc "Recursively transforms ClojureScript values to JavaScript.\n  sets/vectors/lists become Arrays, Keywords and Symbol become Strings,\n  Maps become Objects. Arbitrary keys are encoded to by `key->js`.\n  Options is a key-value pair, where the only valid key is\n  :keyword-fn, which should point to a single-argument function to be\n  called on keyword keys. Default to `name`.", :arglists ([x & {:keys [keyword-fn], :or {keyword-fn name}, :as options}])}, :source "(defn\n clj->js\n \"Recursively transforms ClojureScript values to JavaScript.\\n  sets/vectors/lists become Arrays, Keywords and Symbol become Strings,\\n  Maps become Objects. Arbitrary keys are encoded to by `key->js`.\\n  Options is a key-value pair, where the only valid key is\\n  :keyword-fn, which should point to a single-argument function to be\\n  called on keyword keys. Default to `name`.\"\n [x & {:keys [keyword-fn], :or {keyword-fn name}, :as options}]\n (letfn\n  [(keyfn [k] (key->js k thisfn))\n   (thisfn\n    [x]\n    (cond\n     (nil? x)\n     nil\n     (satisfies? IEncodeJS x)\n     (-clj->js x)\n     (keyword? x)\n     (keyword-fn x)\n     (symbol? x)\n     (str x)\n     (map? x)\n     (let\n      [m (js-obj)]\n      (doseq [[k v] x] (gobject/set m (keyfn k) (thisfn v)))\n      m)\n     (coll? x)\n     (let [arr (array)] (doseq [x (map thisfn x)] (.push arr x)) arr)\n     :else\n     x))]\n  (thisfn x)))\n"} {:sym IChunkedNext, :meta {:doc "Protocol for accessing the chunks of a collection."}, :methods (-chunked-next)} {:sym interpose, :meta {:doc "Returns a lazy seq of the elements of coll separated by sep.\n  Returns a stateful transducer when no collection is provided.", :arglists [[sep] [sep coll]]}, :source "(defn\n interpose\n \"Returns a lazy seq of the elements of coll separated by sep.\\n  Returns a stateful transducer when no collection is provided.\"\n ([sep]\n  (fn\n   [rf]\n   (let\n    [started (volatile! false)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (if\n       @started\n       (let\n        [sepr (rf result sep)]\n        (if (reduced? sepr) sepr (rf sepr input)))\n       (do (vreset! started true) (rf result input))))))))\n ([sep coll] (drop 1 (interleave (repeat sep) coll))))\n"} {:sym deref, :meta {:doc "Also reader macro: @var/@atom/@delay. Returns the\n   most-recently-committed value of ref. When applied to a var\n   or atom, returns its current state. When applied to a delay, forces\n   it if not already forced. See also - realized?.", :arglists ([o])}, :source "(defn\n deref\n \"Also reader macro: @var/@atom/@delay. Returns the\\n   most-recently-committed value of ref. When applied to a var\\n   or atom, returns its current state. When applied to a delay, forces\\n   it if not already forced. See also - realized?.\"\n [o]\n (-deref o))\n"} {:sym assoc, :meta {:doc "assoc[iate]. When applied to a map, returns a new map of the\n   same (hashed/sorted) type, that contains the mapping of key(s) to\n   val(s). When applied to a vector, returns a new vector that\n   contains val at index. Note - index must be <= (count vector).", :arglists [[coll k v] [coll k v & kvs]]}, :source "(defn\n assoc\n \"assoc[iate]. When applied to a map, returns a new map of the\\n   same (hashed/sorted) type, that contains the mapping of key(s) to\\n   val(s). When applied to a vector, returns a new vector that\\n   contains val at index. Note - index must be <= (count vector).\"\n ([coll k v]\n  (if\n   (implements? IAssociative coll)\n   (-assoc coll k v)\n   (if-not (nil? coll) (-assoc coll k v) (array-map k v))))\n ([coll k v & kvs]\n  (let\n   [ret (assoc coll k v)]\n   (if kvs (recur ret (first kvs) (second kvs) (nnext kvs)) ret))))\n"} {:sym transient, :meta {:doc "Returns a new, transient version of the collection, in constant time.", :arglists ([coll])}, :source "(defn\n transient\n \"Returns a new, transient version of the collection, in constant time.\"\n [coll]\n (-as-transient coll))\n"} {:sym -disjoin, :meta {:doc "Returns a new collection of coll that does not contain v.", :arglists ([coll v])}, :protocol ISet} {:sym chunk-cons, :meta {:doc nil, :arglists ([chunk rest])}, :source "(defn\n chunk-cons\n [chunk rest]\n (if (zero? (-count chunk)) rest (ChunkedCons. chunk rest nil nil)))\n"} {:sym comparator, :meta {:doc "Returns an JavaScript compatible comparator based upon pred.", :arglists ([pred])}, :source "(defn\n comparator\n \"Returns an JavaScript compatible comparator based upon pred.\"\n [pred]\n (fn [x y] (cond (pred x y) -1 (pred y x) 1 :else 0)))\n"} {:sym print-prefix-map, :meta {:doc nil, :arglists ([prefix m print-one writer opts])}, :source "(defn\n print-prefix-map\n [prefix m print-one writer opts]\n (pr-sequential-writer\n  writer\n  (fn\n   [e w opts]\n   (do\n    (print-one (key e) w opts)\n    (-write w \\space)\n    (print-one (val e) w opts)))\n  (str prefix \"{\")\n  \", \"\n  \"}\"\n  opts\n  (seq m)))\n"} {:sym sorted-map, :meta {:doc "keyval => key val\n  Returns a new sorted map with supplied mappings.", :arglists [[& keyvals]]}, :source "(defn\n sorted-map\n \"keyval => key val\\n  Returns a new sorted map with supplied mappings.\"\n ([& keyvals]\n  (loop\n   [in (seq keyvals) out (.-EMPTY PersistentTreeMap)]\n   (if in (recur (nnext in) (assoc out (first in) (second in))) out))))\n"} {:sym drop-while, :meta {:doc "Returns a lazy sequence of the items in coll starting from the\n  first item for which (pred item) returns logical false.  Returns a\n  stateful transducer when no collection is provided.", :arglists [[pred] [pred coll]]}, :source "(defn\n drop-while\n \"Returns a lazy sequence of the items in coll starting from the\\n  first item for which (pred item) returns logical false.  Returns a\\n  stateful transducer when no collection is provided.\"\n ([pred]\n  (fn\n   [rf]\n   (let\n    [da (volatile! true)]\n    (fn\n     ([] (rf))\n     ([result] (rf result))\n     ([result input]\n      (let\n       [drop? @da]\n       (if\n        (and drop? (pred input))\n        result\n        (do (vreset! da nil) (rf result input)))))))))\n ([pred coll]\n  (let\n   [step\n    (fn\n     [pred coll]\n     (let\n      [s (seq coll)]\n      (if (and s (pred (first s))) (recur pred (rest s)) s)))]\n   (lazy-seq (step pred coll)))))\n"} {:sym IWriter, :meta {:doc "Protocol for writing. Currently only implemented by StringBufferWriter."}, :methods (-flush -write)} {:sym realized?, :meta {:doc "Returns true if a value has been produced for a delay or lazy sequence.", :arglists ([x])}, :source "(defn\n realized?\n \"Returns true if a value has been produced for a delay or lazy sequence.\"\n [x]\n (-realized? x))\n"} {:sym *print-fn*, :meta {:doc "Each runtime environment provides a different way to print output.\n  Whatever function *print-fn* is bound to will be passed any\n  Strings which should be printed."}, :source "(defonce *print-fn* nil)\n"} {:sym compare, :meta {:doc "Comparator. Returns a negative number, zero, or a positive number\n  when x is logically 'less than', 'equal to', or 'greater than'\n  y. Uses IComparable if available and google.array.defaultCompare for objects\n of the same type and special-cases nil to be less than any other object.", :arglists ([x y])}, :source "(defn\n compare\n \"Comparator. Returns a negative number, zero, or a positive number\\n  when x is logically 'less than', 'equal to', or 'greater than'\\n  y. Uses IComparable if available and google.array.defaultCompare for objects\\n of the same type and special-cases nil to be less than any other object.\"\n [x y]\n (cond\n  (identical? x y)\n  0\n  (nil? x)\n  -1\n  (nil? y)\n  1\n  (number? x)\n  (if\n   (number? y)\n   (garray/defaultCompare x y)\n   (throw (js/Error. (str \"Cannot compare \" x \" to \" y))))\n  (satisfies? IComparable x)\n  (-compare x y)\n  :else\n  (if\n   (and\n    (or (string? x) (array? x) (true? x) (false? x))\n    (identical? (type x) (type y)))\n   (garray/defaultCompare x y)\n   (throw (js/Error. (str \"Cannot compare \" x \" to \" y))))))\n"} {:sym complement, :meta {:doc "Takes a fn f and returns a fn that takes the same arguments as f,\n  has the same effects, if any, and returns the opposite truth value.", :arglists ([f])}, :source "(defn\n complement\n \"Takes a fn f and returns a fn that takes the same arguments as f,\\n  has the same effects, if any, and returns the opposite truth value.\"\n [f]\n (fn\n  ([] (not (f)))\n  ([x] (not (f x)))\n  ([x y] (not (f x y)))\n  ([x y & zs] (not (apply f x y zs)))))\n"} {:sym -assoc!, :meta {:doc "Returns a new transient collection of tcoll with a mapping from key to\n     val added to it.", :arglists ([tcoll key val])}, :protocol ITransientAssociative} {:sym *print-dup*, :meta {:doc "When set to logical true, objects will be printed in a way that preserves\n  their type when read in later.\n\n  Defaults to false."}, :source "(def *print-dup* false)\n"} {:sym string-iter, :meta {:doc nil, :arglists ([x])}, :source "(defn string-iter [x] (StringIter. x 0))\n"} {:sym -key->js, :meta {:doc "Transforms map keys to valid JavaScript keys. Arbitrary keys are\n  encoded to their string representation via (pr-str x)", :arglists ([x])}, :protocol IEncodeJS} {:sym IDeref, :meta {:doc "Protocol for adding dereference functionality to a reference."}, :methods (-deref)} {:sym sequence, :meta {:doc "Coerces coll to a (possibly empty) sequence, if it is not already\n  one. Will not force a lazy seq. (sequence nil) yields (), When a\n  transducer is supplied, returns a lazy sequence of applications of\n  the transform to the items in coll(s), i.e. to the set of first\n  items of each coll, followed by the set of second\n  items in each coll, until any one of the colls is exhausted.  Any\n  remaining items in other colls are ignored. The transform should accept\n  number-of-colls arguments", :arglists [[coll] [xform coll] [xform coll & colls]]}, :source "(defn\n sequence\n \"Coerces coll to a (possibly empty) sequence, if it is not already\\n  one. Will not force a lazy seq. (sequence nil) yields (), When a\\n  transducer is supplied, returns a lazy sequence of applications of\\n  the transform to the items in coll(s), i.e. to the set of first\\n  items of each coll, followed by the set of second\\n  items in each coll, until any one of the colls is exhausted.  Any\\n  remaining items in other colls are ignored. The transform should accept\\n  number-of-colls arguments\"\n ([coll] (if (seq? coll) coll (or (seq coll) ())))\n ([xform coll]\n  (or\n   (chunkIteratorSeq (.create TransformerIterator xform (iter coll)))\n   ()))\n ([xform coll & colls]\n  (or\n   (chunkIteratorSeq\n    (.createMulti\n     TransformerIterator\n     xform\n     (map iter (cons coll colls))))\n   ())))\n"} {:sym constantly, :meta {:doc "Returns a function that takes any number of arguments and returns x.", :arglists ([x])}, :source "(defn\n constantly\n \"Returns a function that takes any number of arguments and returns x.\"\n [x]\n (fn [& args] x))\n"} {:sym chunked-seq, :meta {:doc nil, :arglists [[vec i off] [vec node i off] [vec node i off meta]]}, :source "(defn\n chunked-seq\n ([vec i off] (ChunkedSeq. vec (array-for vec i) i off nil nil))\n ([vec node i off] (ChunkedSeq. vec node i off nil nil))\n ([vec node i off meta] (ChunkedSeq. vec node i off meta nil)))\n"} {:sym ISorted, :meta {:doc "Protocol for a collection which can represent their items\n  in a sorted manner. "}, :methods (-comparator -entry-key -sorted-seq -sorted-seq-from)} {:sym make-array, :meta {:doc "Construct a JavaScript array of the specified dimensions. Accepts ignored\n  type argument for compatibility with Clojure. Note that there is no efficient\n  way to allocate multi-dimensional arrays in JavaScript; as such, this function\n  will run in polynomial time when called with 3 or more arguments.", :arglists [[size] [type size] [type size & more-sizes]]}, :source "(defn\n make-array\n \"Construct a JavaScript array of the specified dimensions. Accepts ignored\\n  type argument for compatibility with Clojure. Note that there is no efficient\\n  way to allocate multi-dimensional arrays in JavaScript; as such, this function\\n  will run in polynomial time when called with 3 or more arguments.\"\n ([size] (js/Array. size))\n ([type size] (make-array size))\n ([type size & more-sizes]\n  (let\n   [dims more-sizes dimarray (make-array size)]\n   (dotimes\n    [i (alength dimarray)]\n    (aset dimarray i (apply make-array nil dims)))\n   dimarray)))\n"} {:sym shorts, :meta {:doc nil, :arglists ([x])}, :source "(defn shorts [x] x)\n"} {:sym *unchecked-if*, :meta {}, :source "(def *unchecked-if* false)\n"} {:sym enable-console-print!, :meta {:doc "Set *print-fn* to console.log", :arglists ([])}, :source "(defn\n enable-console-print!\n \"Set *print-fn* to console.log\"\n []\n (set! *print-newline* false)\n (set-print-fn!\n  (fn\n   []\n   (let\n    [xs (js-arguments)]\n    (.apply (.-log js/console) js/console (garray/clone xs)))))\n (set-print-err-fn!\n  (fn\n   []\n   (let\n    [xs (js-arguments)]\n    (.apply (.-error js/console) js/console (garray/clone xs)))))\n nil)\n"} {:sym -flush, :meta {:doc "Flush writer.", :arglists ([writer])}, :protocol IWriter} {:sym completing, :meta {:doc "Takes a reducing function f of 2 args and returns a fn suitable for\n  transduce by adding an arity-1 signature that calls cf (default -\n  identity) on the result argument.", :arglists [[f] [f cf]]}, :source "(defn\n completing\n \"Takes a reducing function f of 2 args and returns a fn suitable for\\n  transduce by adding an arity-1 signature that calls cf (default -\\n  identity) on the result argument.\"\n ([f] (completing f identity))\n ([f cf] (fn ([] (f)) ([x] (cf x)) ([x y] (f x y)))))\n"} {:sym unchecked-negate-int, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-negate-int [x] (cljs.core/unchecked-negate-int x))\n"} {:sym hash-unordered-coll, :meta {:doc "Returns the hash code, consistent with =, for an external unordered\n   collection implementing Iterable. For maps, the iterator should\n   return map entries whose hash is computed as\n     (hash-ordered-coll [k v]).\n   See http://clojure.org/data_structures#hash for full algorithms.", :arglists ([coll])}, :source "(defn\n hash-unordered-coll\n \"Returns the hash code, consistent with =, for an external unordered\\n   collection implementing Iterable. For maps, the iterator should\\n   return map entries whose hash is computed as\\n     (hash-ordered-coll [k v]).\\n   See http://clojure.org/data_structures#hash for full algorithms.\"\n [coll]\n (loop\n  [n 0 hash-code 0 coll (seq coll)]\n  (if-not\n   (nil? coll)\n   (recur\n    (inc n)\n    (bit-or (+ hash-code (hash (first coll))) 0)\n    (next coll))\n   (mix-collection-hash hash-code n))))\n"} {:sym repeat, :meta {:doc "Returns a lazy (infinite!, or length n if supplied) sequence of xs.", :arglists [[x] [n x]]}, :source "(defn\n repeat\n \"Returns a lazy (infinite!, or length n if supplied) sequence of xs.\"\n ([x] (Repeat. nil -1 x nil nil))\n ([n x] (if (pos? n) (Repeat. nil n x nil nil) (.-EMPTY List))))\n"} {:sym unchecked-inc, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-inc [x] (cljs.core/unchecked-inc x))\n"} {:sym nthnext, :meta {:doc "Returns the nth next of coll, (seq coll) when n is 0.", :arglists ([coll n])}, :source "(defn\n nthnext\n \"Returns the nth next of coll, (seq coll) when n is 0.\"\n [coll n]\n (loop\n  [n n xs (seq coll)]\n  (if (and xs (pos? n)) (recur (dec n) (next xs)) xs)))\n"} {:sym get-validator, :meta {:doc "Gets the validator-fn for a var/ref/agent/atom.", :arglists ([iref])}, :source "(defn\n get-validator\n \"Gets the validator-fn for a var/ref/agent/atom.\"\n [iref]\n (.-validator iref))\n"} {:sym number?, :meta {:doc "Returns true if x is a JavaScript number.", :arglists ([x])}, :source "(defn\n number?\n \"Returns true if x is a JavaScript number.\"\n [x]\n (cljs.core/number? x))\n"} {:sym -conj!, :meta {:doc "Adds value val to tcoll and returns tcoll.", :arglists ([tcoll val])}, :protocol ITransientCollection} {:sym chunk-next, :meta {:doc nil, :arglists ([s])}, :source "(defn\n chunk-next\n [s]\n (if\n  (implements? IChunkedNext s)\n  (-chunked-next s)\n  (seq (-chunked-rest s))))\n"} {:sym print-str, :meta {:doc "print to a string, returning it", :arglists ([& objs])}, :source "(defn\n print-str\n \"print to a string, returning it\"\n [& objs]\n (pr-str-with-opts objs (assoc (pr-opts) :readably false)))\n"} {:sym not-any?, :meta {:doc "Returns false if (pred x) is logical true for any x in coll,\n  else true.", :arglists ([pred coll])}, :source "(defn\n not-any?\n \"Returns false if (pred x) is logical true for any x in coll,\\n  else true.\"\n [pred coll]\n (not (some pred coll)))\n"} {:sym into-array, :meta {:doc "Returns an array with components set to the values in aseq. Optional type\n  argument accepted for compatibility with Clojure.", :arglists [[aseq] [type aseq]]}, :source "(defn\n into-array\n \"Returns an array with components set to the values in aseq. Optional type\\n  argument accepted for compatibility with Clojure.\"\n ([aseq] (into-array nil aseq))\n ([type aseq] (reduce (fn [a x] (.push a x) a) (array) aseq)))\n"} {:sym -hash, :meta {:doc "Returns the hash code of o.", :arglists ([o])}, :protocol IHash} {:sym qualified-symbol?, :meta {:doc "Return true if x is a symbol with a namespace", :arglists ([x])}, :source "(defn\n qualified-symbol?\n \"Return true if x is a symbol with a namespace\"\n [x]\n (boolean (and (symbol? x) (namespace x) true)))\n"} {:sym -dissoc!, :meta {:doc "Returns a new transient collection of tcoll without the mapping for key.", :arglists ([tcoll key])}, :protocol ITransientMap} {:sym chunk-buffer, :meta {:doc nil, :arglists ([capacity])}, :source "(defn chunk-buffer [capacity] (ChunkBuffer. (make-array capacity) 0))\n"} {:sym seqable?, :meta {:doc "Return true if the seq function is supported for s", :arglists ([s])}, :source "(defn\n seqable?\n \"Return true if the seq function is supported for s\"\n [s]\n (or (nil? s) (satisfies? ISeqable s) (array? s) (string? s)))\n"} {:sym symbol?, :meta {:doc "Return true if x is a Symbol", :arglists ([x])}, :source "(defn symbol? \"Return true if x is a Symbol\" [x] (instance? Symbol x))\n"} {:sym m3-hash-unencoded-chars, :meta {:doc nil, :arglists ([in])}, :source "(defn\n m3-hash-unencoded-chars\n [in]\n (let\n  [h1\n   (loop\n    [i 1 h1 m3-seed]\n    (if\n     (< i (.-length in))\n     (recur\n      (+ i 2)\n      (m3-mix-H1\n       h1\n       (m3-mix-K1\n        (bit-or\n         (.charCodeAt in (dec i))\n         (bit-shift-left (.charCodeAt in i) 16)))))\n     h1))\n   h1\n   (if\n    (== (bit-and (.-length in) 1) 1)\n    (bit-xor h1 (m3-mix-K1 (.charCodeAt in (dec (.-length in)))))\n    h1)]\n  (m3-fmix h1 (imul 2 (.-length in)))))\n"} {:sym unchecked-char, :meta {:doc nil, :arglists ([x])}, :source "(defn unchecked-char [x] x)\n"} {:sym system-time, :meta {:doc "Returns highest resolution time offered by host in milliseconds.", :arglists ([])}, :source "(defn\n system-time\n \"Returns highest resolution time offered by host in milliseconds.\"\n []\n (cond\n  (and (exists? js/performance) (not (nil? (. js/performance -now))))\n  (.now js/performance)\n  (and (exists? js/process) (not (nil? (. js/process -hrtime))))\n  (let\n   [t (.hrtime js/process)]\n   (/ (+ (* (aget t 0) 1.0E9) (aget t 1)) 1000000.0))\n  :else\n  (.getTime (js/Date.))))\n"} {:sym -invoke, :meta {:doc nil, :arglists ([this] [this a] [this a b] [this a b c] [this a b c d] [this a b c d e] [this a b c d e f] [this a b c d e f g] [this a b c d e f g h] [this a b c d e f g h i] [this a b c d e f g h i j] [this a b c d e f g h i j k] [this a b c d e f g h i j k l] [this a b c d e f g h i j k l m] [this a b c d e f g h i j k l m n] [this a b c d e f g h i j k l m n o] [this a b c d e f g h i j k l m n o p] [this a b c d e f g h i j k l m n o p q] [this a b c d e f g h i j k l m n o p q r] [this a b c d e f g h i j k l m n o p q r s] [this a b c d e f g h i j k l m n o p q r s t] [this a b c d e f g h i j k l m n o p q r s t rest])}, :protocol IFn} {:sym coll?, :meta {:doc "Returns true if x satisfies ICollection", :arglists ([x])}, :source "(defn\n coll?\n \"Returns true if x satisfies ICollection\"\n [x]\n (if (nil? x) false (satisfies? ICollection x)))\n"} {:sym get-in, :meta {:doc "Returns the value in a nested associative structure,\n  where ks is a sequence of keys. Returns nil if the key is not present,\n  or the not-found value if supplied.", :arglists [[m ks] [m ks not-found]]}, :source "(defn\n get-in\n \"Returns the value in a nested associative structure,\\n  where ks is a sequence of keys. Returns nil if the key is not present,\\n  or the not-found value if supplied.\"\n {:added \"1.2\", :static true}\n ([m ks] (reduce get m ks))\n ([m ks not-found]\n  (loop\n   [sentinel lookup-sentinel m m ks (seq ks)]\n   (if-not\n    (nil? ks)\n    (let\n     [m (get m (first ks) sentinel)]\n     (if\n      (identical? sentinel m)\n      not-found\n      (recur sentinel m (next ks))))\n    m))))\n"} {:sym fnext, :meta {:doc "Same as (first (next x))", :arglists ([coll])}, :source "(defn fnext \"Same as (first (next x))\" [coll] (first (next coll)))\n"} {:sym IList, :meta {:doc "Marker interface indicating a persistent list"}, :methods ()} {:sym -val, :meta {:doc "Returns the value of the map entry.", :arglists ([coll])}, :protocol IMapEntry} {:sym bytes, :meta {:doc nil, :arglists ([x])}, :source "(defn bytes [x] x)\n"} {:sym -seq, :meta {:doc "Returns a seq of o, or nil if o is empty.", :arglists ([o])}, :protocol ISeqable}), cljs.tools.reader.reader-types ({:sym indexing-push-back-reader, :meta {:doc "Creates an IndexingPushbackReader from a given string or PushbackReader", :arglists [[s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]]}, :source "(defn\n indexing-push-back-reader\n \"Creates an IndexingPushbackReader from a given string or PushbackReader\"\n ([s-or-rdr] (indexing-push-back-reader s-or-rdr 1))\n ([s-or-rdr buf-len] (indexing-push-back-reader s-or-rdr buf-len nil))\n ([s-or-rdr buf-len file-name]\n  (IndexingPushbackReader.\n   (if\n    (string? s-or-rdr)\n    (string-push-back-reader s-or-rdr buf-len)\n    s-or-rdr)\n   1\n   1\n   true\n   nil\n   0\n   file-name)))\n"} {:sym log-source*, :meta {:doc nil, :arglists ([reader f])}, :source "(defn\n log-source*\n [reader f]\n (let\n  [buffer (:buffer @(.-frames reader))]\n  (try\n   (swap!\n    (.-frames reader)\n    update-in\n    [:offset]\n    conj\n    (.getLength buffer))\n   (let\n    [ret (f)]\n    (if\n     (implements? IMeta ret)\n     (merge-meta ret {:source (peek-source-log @(.-frames reader))})\n     ret))\n   (finally (swap! (.-frames reader) update-in [:offset] rest)))))\n"} {:sym merge-meta, :meta {:doc "Returns an object of the same type and value as `obj`, with its\nmetadata merged over `m`.", :arglists ([obj m])}, :source "(defn\n merge-meta\n \"Returns an object of the same type and value as `obj`, with its\\nmetadata merged over `m`.\"\n [obj m]\n (let\n  [orig-meta (meta obj)]\n  (with-meta obj (merge m (dissoc orig-meta :source)))))\n"} {:sym Reader, :meta {:doc nil}, :methods (peek-char read-char)} {:sym source-logging-push-back-reader, :meta {:doc "Creates a SourceLoggingPushbackReader from a given string or PushbackReader", :arglists [[s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]]}, :source "(defn\n source-logging-push-back-reader\n \"Creates a SourceLoggingPushbackReader from a given string or PushbackReader\"\n ([s-or-rdr] (source-logging-push-back-reader s-or-rdr 1))\n ([s-or-rdr buf-len]\n  (source-logging-push-back-reader s-or-rdr buf-len nil))\n ([s-or-rdr buf-len file-name]\n  (SourceLoggingPushbackReader.\n   (if\n    (string? s-or-rdr)\n    (string-push-back-reader s-or-rdr buf-len)\n    s-or-rdr)\n   1\n   1\n   true\n   nil\n   0\n   file-name\n   (atom {:buffer (StringBuffer.), :offset '(0)}))))\n"} {:sym unread, :meta {:doc "Pushes back a single character on to the stream", :arglists ([reader ch])}, :protocol IPushbackReader} {:sym peek-char, :meta {:doc "Returns the next char from the Reader without removing it from the reader stream", :arglists ([reader])}, :protocol Reader} {:sym IPushbackReader, :meta {:doc nil}, :methods (unread)} {:sym indexing-reader?, :meta {:doc "Returns true if the reader satisfies IndexingReader", :arglists ([rdr])}, :source "(defn\n indexing-reader?\n \"Returns true if the reader satisfies IndexingReader\"\n [rdr]\n (implements? IndexingReader rdr))\n"} {:sym string-reader, :meta {:doc "Creates a StringReader from a given string", :arglists [[s]]}, :source "(defn\n string-reader\n \"Creates a StringReader from a given string\"\n ([s] (StringReader. s (count s) 0)))\n"} {:sym read-char, :meta {:doc "Returns the next char from the Reader, nil if the end of stream has been reached", :arglists ([reader])}, :protocol Reader} {:sym get-column-number, :meta {:doc "Returns the column number of the next character to be read from the stream", :arglists ([reader])}, :protocol IndexingReader} {:sym get-file-name, :meta {:doc "Returns the file name the reader is reading from, or nil", :arglists ([reader])}, :protocol IndexingReader} {:sym read-line, :meta {:doc "Reads a line from the reader or from *in* if no reader is specified", :arglists [[rdr]]}, :source "(defn\n read-line\n \"Reads a line from the reader or from *in* if no reader is specified\"\n ([rdr]\n  (loop\n   [c (read-char rdr) s (StringBuffer.)]\n   (if (newline? c) (str s) (recur (read-char rdr) (.append s c))))))\n"} {:sym string-push-back-reader, :meta {:doc "Creates a PushbackReader from a given string", :arglists [[s] [s buf-len]]}, :source "(defn\n string-push-back-reader\n \"Creates a PushbackReader from a given string\"\n ([s] (string-push-back-reader s 1))\n ([s buf-len]\n  (PushbackReader.\n   (string-reader s)\n   (object-array buf-len)\n   buf-len\n   buf-len)))\n"} {:sym line-start?, :meta {:doc "Returns true if rdr is an IndexingReader and the current char starts a new line", :arglists ([rdr])}, :source "(defn\n line-start?\n \"Returns true if rdr is an IndexingReader and the current char starts a new line\"\n [rdr]\n (when (indexing-reader? rdr) (== 1 (get-column-number rdr))))\n"} {:sym source-logging-reader?, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n source-logging-reader?\n [rdr]\n (instance? SourceLoggingPushbackReader rdr))\n"} {:sym IndexingReader, :meta {:doc nil}, :methods (get-column-number get-file-name get-line-number)} {:sym node-readable-push-back-reader, :meta {:doc nil, :arglists ([readable])}, :source "(defn\n node-readable-push-back-reader\n [readable]\n (PushbackReader.\n  (NodeReadableReader. readable nil)\n  (object-array 1)\n  1\n  1))\n"} {:sym get-line-number, :meta {:doc "Returns the line number of the next character to be read from the stream", :arglists ([reader])}, :protocol IndexingReader}), play-cljc.transforms ({:sym IRotate, :meta {:doc nil}, :methods (rotate)} {:sym crop, :meta {:doc "Crops the visible area of the entity.", :arglists ([entity x y width height])}, :protocol ICrop} {:sym IInvert, :meta {:doc nil}, :methods (invert)} {:sym invert, :meta {:doc "Applies a camera to the entity after creating an inverse matrix of it.", :arglists ([entity camera])}, :protocol IInvert} {:sym look-at, :meta {:doc "Applies a look at matrix to the camera.", :arglists ([camera target up])}, :protocol ILookAt} {:sym ICamera, :meta {:doc nil}, :methods (camera)} {:sym transform, :meta {:doc "Work in progress! Subject to change/break in future releases.", :arglists [[content] [[content-type content-val] entities transforms]]}, :source "(defn\n transform\n \"Work in progress! Subject to change/break in future releases.\"\n ([content]\n  (transform (parse :play-cljc.transforms/content content) [] []))\n ([[content-type content-val] entities transforms]\n  (case\n   content-type\n   :subcontent\n   (reduce\n    (fn\n     [entities content]\n     (transform\n      content\n      entities\n      (into transforms ((juxt :name :args) content-val))))\n    entities\n    (:content content-val))\n   :entity\n   (conj entities (transform-entity content-val transforms)))))\n"} {:sym color, :meta {:doc "Applies a color to the entity.", :arglists ([entity rgba])}, :protocol IColor} {:sym IScale, :meta {:doc nil}, :methods (scale)} {:sym scale, :meta {:doc "Applies a scaling matrix to the entity or camera.", :arglists ([entity x y] [entity x y z])}, :protocol IScale} {:sym IProject, :meta {:doc nil}, :methods (project)} {:sym IColor, :meta {:doc nil}, :methods (color)} {:sym ICrop, :meta {:doc nil}, :methods (crop)} {:sym project, :meta {:doc "Applies a projection matrix to the entity.", :arglists ([entity width height] [entity left right bottom top near far] [entity field-of-view aspect near far])}, :protocol IProject} {:sym ITranslate, :meta {:doc nil}, :methods (translate)} {:sym parse, :meta {:doc nil, :arglists ([spec content])}, :source "(defn\n parse\n [spec content]\n (let\n  [res (s/conform spec content)]\n  (if\n   (= :clojure.spec.alpha/invalid res)\n   (throw (ex-info (expound/expound-str spec content) {}))\n   res)))\n"} {:sym rotate, :meta {:doc "Applies a rotation matrix to the entity or camera.", :arglists ([entity angle] [entity angle axis])}, :protocol IRotate} {:sym transform-entity, :meta {:doc "Work in progress! Subject to change/break in future releases.", :arglists ([entity transforms])}, :source "(defn\n transform-entity\n \"Work in progress! Subject to change/break in future releases.\"\n [entity transforms]\n (concat\n  ['-> entity]\n  (map\n   (fn [[name args]] (transform-entity* name args))\n   (partition 2 transforms))))\n"} {:sym camera, :meta {:doc "This function is deprecated -- use `invert` instead!", :arglists ([entity camera])}, :protocol ICamera} {:sym translate, :meta {:doc "Applies a translation matrix to the entity or camera.", :arglists ([entity x y] [entity x y z])}, :protocol ITranslate} {:sym ILookAt, :meta {:doc nil}, :methods (look-at)}), cljs.env ({:sym *compiler*, :meta {}, :source "(def *compiler* nil)\n"} {:sym default-compiler-env*, :meta {:doc nil, :arglists ([options])}, :source "(defn\n default-compiler-env*\n [options]\n (merge\n  {:cljs.analyzer/namespaces {'cljs.user {:name 'cljs.user}},\n   :cljs.analyzer/constant-table {},\n   :cljs.analyzer/data-readers {},\n   :cljs.analyzer/externs\n   #?(:clj (externs/externs-map (:externs-sources options)) :cljs nil),\n   :options options}\n  #?@(:clj [(when (and (= :nodejs (:target options)) (not (false? (:nodejs-rt options)))) {:node-module-index deps/native-node-modules}) {:js-dependency-index (deps/js-dependency-index options)}])))\n"} {:sym default-compiler-env, :meta {:doc nil, :arglists [[] [options]]}, :source "(defn\n default-compiler-env\n ([] (default-compiler-env {}))\n ([options] (atom (default-compiler-env* options))))\n"}), paren-soup.console ({:sym create-console-history, :meta {:doc nil, :arglists ([])}, :source "(defn\n create-console-history\n []\n (atom {:current-line 0, :lines [], :start 0}))\n"} {:sym get-console-start, :meta {:doc nil, :arglists ([*console-history])}, :source "(defn\n get-console-start\n [*console-history]\n (-> *console-history deref :start))\n"} {:sym update-console-start!, :meta {:doc nil, :arglists ([*console-history start])}, :source "(defn\n update-console-start!\n [*console-history start]\n (swap! *console-history assoc :start start))\n"} {:sym update-console-history!, :meta {:doc "Updates the console history atom.", :arglists ([*console-history line])}, :source "(defn\n update-console-history!\n \"Updates the console history atom.\"\n [*console-history line]\n (let\n  [{:keys [current-line lines]} @*console-history]\n  (swap!\n   *console-history\n   (fn\n    [console-history]\n    (let\n     [lines\n      (if\n       (and (seq line) (not= line (last lines)))\n       (conj lines line)\n       lines)]\n     (assoc\n      console-history\n      :current-line\n      (count lines)\n      :lines\n      lines))))))\n"} {:sym get-previous-line, :meta {:doc "Returns the previous line from console-history, or nil if there is none.", :arglists ([*console-history])}, :source "(defn\n get-previous-line\n \"Returns the previous line from console-history, or nil if there is none.\"\n [*console-history]\n (let\n  [{:keys [current-line lines]} @*console-history]\n  (get lines (dec current-line))))\n"} {:sym get-next-line, :meta {:doc "Returns the next line from console-history, or nil if there is none.", :arglists ([*console-history])}, :source "(defn\n get-next-line\n \"Returns the next line from console-history, or nil if there is none.\"\n [*console-history]\n (let\n  [{:keys [current-line lines]} @*console-history]\n  (get lines (inc current-line))))\n"} {:sym up!, :meta {:doc "Changes the current line and returns the previous line from console-history, or nil if there is none.", :arglists ([*console-history])}, :source "(defn\n up!\n \"Changes the current line and returns the previous line from console-history, or nil if there is none.\"\n [*console-history]\n (let\n  [line (get-previous-line *console-history)]\n  (if\n   line\n   (swap! *console-history update :current-line dec)\n   (swap! *console-history assoc :current-line -1))\n  line))\n"} {:sym down!, :meta {:doc "Changes the current line and returns the next line from console-history, or nil if there is none.", :arglists ([*console-history])}, :source "(defn\n down!\n \"Changes the current line and returns the next line from console-history, or nil if there is none.\"\n [*console-history]\n (let\n  [line (get-next-line *console-history)]\n  (if\n   line\n   (swap! *console-history update :current-line inc)\n   (swap!\n    *console-history\n    assoc\n    :current-line\n    (-> @*console-history :lines count)))\n  line))\n"}), play-cljc.gl.examples-text ({:sym load-roboto, :meta {:doc nil, :arglists ([callback])}, :source "(defn\n load-roboto\n [callback]\n (#?(:clj load-font-clj :cljs load-font-cljs) :roboto callback))\n"} {:sym init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n init\n [game]\n (gl game enable (gl game BLEND))\n (gl game blendFunc (gl game SRC_ALPHA) (gl game ONE_MINUS_SRC_ALPHA))\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST)))\n"}), cljs.core.async ({:sym Pub, :meta {:doc nil}, :methods (sub* unsub* unsub-all*)} {:sym reduce, :meta {:doc "f should be a function of 2 arguments. Returns a channel containing\n  the single result of applying f to init and the first item from the\n  channel, then applying f to that result and the 2nd item, etc. If\n  the channel closes without yielding items, returns init and f is not\n  called. ch must close before reduce produces a result.", :arglists ([f init ch])}, :source "(defn\n reduce\n \"f should be a function of 2 arguments. Returns a channel containing\\n  the single result of applying f to init and the first item from the\\n  channel, then applying f to that result and the 2nd item, etc. If\\n  the channel closes without yielding items, returns init and f is not\\n  called. ch must close before reduce produces a result.\"\n [f init ch]\n (go-loop\n  [ret init]\n  (let\n   [v (<! ch)]\n   (if\n    (nil? v)\n    ret\n    (let [ret' (f ret v)] (if (reduced? ret') @ret' (recur ret')))))))\n"} {:sym remove>, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists ([p ch])}, :source "(defn\n remove>\n \"Deprecated - this function will be removed. Use transducer instead\"\n [p ch]\n (filter> (complement p) ch))\n"} {:sym timeout, :meta {:doc "Returns a channel that will close after msecs", :arglists ([msecs])}, :source "(defn\n timeout\n \"Returns a channel that will close after msecs\"\n [msecs]\n (timers/timeout msecs))\n"} {:sym unsub*, :meta {:doc nil, :arglists ([p v ch])}, :protocol Pub} {:sym admix*, :meta {:doc nil, :arglists ([m ch])}, :protocol Mix} {:sym unmix*, :meta {:doc nil, :arglists ([m ch])}, :protocol Mix} {:sym mix, :meta {:doc "Creates and returns a mix of one or more input channels which will\n  be put on the supplied out channel. Input sources can be added to\n  the mix with 'admix', and removed with 'unmix'. A mix supports\n  soloing, muting and pausing multiple inputs atomically using\n  'toggle', and can solo using either muting or pausing as determined\n  by 'solo-mode'.\n\n  Each channel can have zero or more boolean modes set via 'toggle':\n\n  :solo - when true, only this (ond other soloed) channel(s) will appear\n          in the mix output channel. :mute and :pause states of soloed\n          channels are ignored. If solo-mode is :mute, non-soloed\n          channels are muted, if :pause, non-soloed channels are\n          paused.\n\n  :mute - muted channels will have their contents consumed but not included in the mix\n  :pause - paused channels will not have their contents consumed (and thus also not included in the mix)\n", :arglists ([out])}, :source "(defn\n mix\n \"Creates and returns a mix of one or more input channels which will\\n  be put on the supplied out channel. Input sources can be added to\\n  the mix with 'admix', and removed with 'unmix'. A mix supports\\n  soloing, muting and pausing multiple inputs atomically using\\n  'toggle', and can solo using either muting or pausing as determined\\n  by 'solo-mode'.\\n\\n  Each channel can have zero or more boolean modes set via 'toggle':\\n\\n  :solo - when true, only this (ond other soloed) channel(s) will appear\\n          in the mix output channel. :mute and :pause states of soloed\\n          channels are ignored. If solo-mode is :mute, non-soloed\\n          channels are muted, if :pause, non-soloed channels are\\n          paused.\\n\\n  :mute - muted channels will have their contents consumed but not included in the mix\\n  :pause - paused channels will not have their contents consumed (and thus also not included in the mix)\\n\"\n [out]\n (let\n  [cs\n   (atom {})\n   solo-modes\n   #{:pause :mute}\n   attrs\n   (conj solo-modes :solo)\n   solo-mode\n   (atom :mute)\n   change\n   (chan (sliding-buffer 1))\n   changed\n   (fn* [] (put! change true))\n   pick\n   (fn\n    [attr chs]\n    (reduce-kv (fn [ret c v] (if (attr v) (conj ret c) ret)) #{} chs))\n   calc-state\n   (fn\n    []\n    (let\n     [chs\n      @cs\n      mode\n      @solo-mode\n      solos\n      (pick :solo chs)\n      pauses\n      (pick :pause chs)]\n     {:solos solos,\n      :mutes (pick :mute chs),\n      :reads\n      (conj\n       (if\n        (and (= mode :pause) (not (empty? solos)))\n        (vec solos)\n        (vec (remove pauses (keys chs))))\n       change)}))\n   m\n   (reify\n    Mux\n    (muxch* [_] out)\n    Mix\n    (admix* [_ ch] (swap! cs assoc ch {}) (changed))\n    (unmix* [_ ch] (swap! cs dissoc ch) (changed))\n    (unmix-all* [_] (reset! cs {}) (changed))\n    (toggle*\n     [_ state-map]\n     (swap! cs (partial merge-with cljs.core/merge) state-map)\n     (changed))\n    (solo-mode*\n     [_ mode]\n     (assert\n      (solo-modes mode)\n      (str \"mode must be one of: \" solo-modes))\n     (reset! solo-mode mode)\n     (changed)))]\n  (go-loop\n   [{:keys [solos mutes reads], :as state} (calc-state)]\n   (let\n    [[v c] (alts! reads)]\n    (if\n     (or (nil? v) (= c change))\n     (do (when (nil? v) (swap! cs dissoc c)) (recur (calc-state)))\n     (if\n      (or (solos c) (and (empty? solos) (not (mutes c))))\n      (when (>! out v) (recur state))\n      (recur state)))))\n  m))\n"} {:sym pub, :meta {:doc "Creates and returns a pub(lication) of the supplied channel,\n  partitioned into topics by the topic-fn. topic-fn will be applied to\n  each value on the channel and the result will determine the 'topic'\n  on which that value will be put. Channels can be subscribed to\n  receive copies of topics using 'sub', and unsubscribed using\n  'unsub'. Each topic will be handled by an internal mult on a\n  dedicated channel. By default these internal channels are\n  unbuffered, but a buf-fn can be supplied which, given a topic,\n  creates a buffer with desired properties.\n\n  Each item is distributed to all subs in parallel and synchronously,\n  i.e. each sub must accept before the next item is distributed. Use\n  buffering/windowing to prevent slow subs from holding up the pub.\n\n  Items received when there are no matching subs get dropped.\n\n  Note that if buf-fns are used then each topic is handled\n  asynchronously, i.e. if a channel is subscribed to more than one\n  topic it should not expect them to be interleaved identically with\n  the source.", :arglists [[ch topic-fn] [ch topic-fn buf-fn]]}, :source "(defn\n pub\n \"Creates and returns a pub(lication) of the supplied channel,\\n  partitioned into topics by the topic-fn. topic-fn will be applied to\\n  each value on the channel and the result will determine the 'topic'\\n  on which that value will be put. Channels can be subscribed to\\n  receive copies of topics using 'sub', and unsubscribed using\\n  'unsub'. Each topic will be handled by an internal mult on a\\n  dedicated channel. By default these internal channels are\\n  unbuffered, but a buf-fn can be supplied which, given a topic,\\n  creates a buffer with desired properties.\\n\\n  Each item is distributed to all subs in parallel and synchronously,\\n  i.e. each sub must accept before the next item is distributed. Use\\n  buffering/windowing to prevent slow subs from holding up the pub.\\n\\n  Items received when there are no matching subs get dropped.\\n\\n  Note that if buf-fns are used then each topic is handled\\n  asynchronously, i.e. if a channel is subscribed to more than one\\n  topic it should not expect them to be interleaved identically with\\n  the source.\"\n ([ch topic-fn] (pub ch topic-fn (constantly nil)))\n ([ch topic-fn buf-fn]\n  (let\n   [mults\n    (atom {})\n    ensure-mult\n    (fn\n     [topic]\n     (or\n      (get @mults topic)\n      (get\n       (swap!\n        mults\n        (fn*\n         [p1__45127#]\n         (if\n          (p1__45127# topic)\n          p1__45127#\n          (assoc p1__45127# topic (mult (chan (buf-fn topic)))))))\n       topic)))\n    p\n    (reify\n     Mux\n     (muxch* [_] ch)\n     Pub\n     (sub*\n      [p topic ch close?]\n      (let [m (ensure-mult topic)] (tap m ch close?)))\n     (unsub*\n      [p topic ch]\n      (when-let [m (get @mults topic)] (untap m ch)))\n     (unsub-all* [_] (reset! mults {}))\n     (unsub-all* [_ topic] (swap! mults dissoc topic)))]\n   (go-loop\n    []\n    (let\n     [val (<! ch)]\n     (if\n      (nil? val)\n      (doseq [m (vals @mults)] (close! (muxch* m)))\n      (let\n       [topic (topic-fn val) m (get @mults topic)]\n       (when\n        m\n        (when-not (>! (muxch* m) val) (swap! mults dissoc topic)))\n       (recur)))))\n   p)))\n"} {:sym take, :meta {:doc "Returns a channel that will return, at most, n items from ch. After n items\n   have been returned, or ch has been closed, the return chanel will close.\n\n  The output channel is unbuffered by default, unless buf-or-n is given.", :arglists [[n ch] [n ch buf-or-n]]}, :source "(defn\n take\n \"Returns a channel that will return, at most, n items from ch. After n items\\n   have been returned, or ch has been closed, the return chanel will close.\\n\\n  The output channel is unbuffered by default, unless buf-or-n is given.\"\n ([n ch] (take n ch nil))\n ([n ch buf-or-n]\n  (let\n   [out (chan buf-or-n)]\n   (go\n    (loop\n     [x 0]\n     (when\n      (< x n)\n      (let\n       [v (<! ch)]\n       (when (not (nil? v)) (>! out v) (recur (inc x))))))\n    (close! out))\n   out)))\n"} {:sym unsub-all*, :meta {:doc nil, :arglists ([p] [p v])}, :protocol Pub} {:sym <!, :meta {:doc "takes a val from port. Must be called inside a (go ...) block. Will\n  return nil if closed. Will park if nothing is available.\n  Returns true unless port is already closed", :arglists ([port])}, :source "(defn\n <!\n \"takes a val from port. Must be called inside a (go ...) block. Will\\n  return nil if closed. Will park if nothing is available.\\n  Returns true unless port is already closed\"\n [port]\n (throw (js/Error. \"<! used not in (go ...) block\")))\n"} {:sym map, :meta {:doc "Takes a function and a collection of source channels, and returns a\n  channel which contains the values produced by applying f to the set\n  of first items taken from each source channel, followed by applying\n  f to the set of second items from each channel, until any one of the\n  channels is closed, at which point the output channel will be\n  closed. The returned channel will be unbuffered by default, or a\n  buf-or-n can be supplied", :arglists [[f chs] [f chs buf-or-n]]}, :source "(defn\n map\n \"Takes a function and a collection of source channels, and returns a\\n  channel which contains the values produced by applying f to the set\\n  of first items taken from each source channel, followed by applying\\n  f to the set of second items from each channel, until any one of the\\n  channels is closed, at which point the output channel will be\\n  closed. The returned channel will be unbuffered by default, or a\\n  buf-or-n can be supplied\"\n ([f chs] (map f chs nil))\n ([f chs buf-or-n]\n  (let\n   [chs\n    (vec chs)\n    out\n    (chan buf-or-n)\n    cnt\n    (count chs)\n    rets\n    (object-array cnt)\n    dchan\n    (chan 1)\n    dctr\n    (atom nil)\n    done\n    (mapv\n     (fn\n      [i]\n      (fn\n       [ret]\n       (aset rets i ret)\n       (when (zero? (swap! dctr dec)) (put! dchan (.slice rets 0)))))\n     (range cnt))]\n   (go-loop\n    []\n    (reset! dctr cnt)\n    (dotimes\n     [i cnt]\n     (try\n      (take! (chs i) (done i))\n      (catch js/Object e (swap! dctr dec))))\n    (let\n     [rets (<! dchan)]\n     (if\n      (some nil? rets)\n      (close! out)\n      (do (>! out (apply f rets)) (recur)))))\n   out)))\n"} {:sym Mux, :meta {:doc nil}, :methods (muxch*)} {:sym mapcat>, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[f out] [f out buf-or-n]]}, :source "(defn\n mapcat>\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([f out] (mapcat> f out nil))\n ([f out buf-or-n] (let [in (chan buf-or-n)] (mapcat* f in out) in)))\n"} {:sym buffer, :meta {:doc "Returns a fixed buffer of size n. When full, puts will block/park.", :arglists ([n])}, :source "(defn\n buffer\n \"Returns a fixed buffer of size n. When full, puts will block/park.\"\n [n]\n (buffers/fixed-buffer n))\n"} {:sym close!, :meta {:doc nil, :arglists [[port]]}, :source "(defn close! ([port] (impl/close! port)))\n"} {:sym offer!, :meta {:doc "Puts a val into port if it's possible to do so immediately.\n  nil values are not allowed. Never blocks. Returns true if offer succeeds.", :arglists ([port val])}, :source "(defn\n offer!\n \"Puts a val into port if it's possible to do so immediately.\\n  nil values are not allowed. Never blocks. Returns true if offer succeeds.\"\n [port val]\n (let\n  [ret (impl/put! port val (fn-handler nop false))]\n  (when ret @ret)))\n"} {:sym chan, :meta {:doc "Creates a channel with an optional buffer, an optional transducer (like (map f),\n  (filter p) etc or a composition thereof), and an optional exception handler.\n  If buf-or-n is a number, will create and use a fixed buffer of that size. If a\n  transducer is supplied a buffer must be specified. ex-handler must be a\n  fn of one argument - if an exception occurs during transformation it will be called\n  with the thrown value as an argument, and any non-nil return value will be placed\n  in the channel.", :arglists [[] [buf-or-n] [buf-or-n xform] [buf-or-n xform ex-handler]]}, :source "(defn\n chan\n \"Creates a channel with an optional buffer, an optional transducer (like (map f),\\n  (filter p) etc or a composition thereof), and an optional exception handler.\\n  If buf-or-n is a number, will create and use a fixed buffer of that size. If a\\n  transducer is supplied a buffer must be specified. ex-handler must be a\\n  fn of one argument - if an exception occurs during transformation it will be called\\n  with the thrown value as an argument, and any non-nil return value will be placed\\n  in the channel.\"\n ([] (chan nil))\n ([buf-or-n] (chan buf-or-n nil nil))\n ([buf-or-n xform] (chan buf-or-n xform nil))\n ([buf-or-n xform ex-handler]\n  (let\n   [buf-or-n (if (= buf-or-n 0) nil buf-or-n)]\n   (when\n    xform\n    (assert buf-or-n \"buffer must be supplied when transducer is\"))\n   (channels/chan\n    (if (number? buf-or-n) (buffer buf-or-n) buf-or-n)\n    xform\n    ex-handler))))\n"} {:sym solo-mode*, :meta {:doc nil, :arglists ([m mode])}, :protocol Mix} {:sym onto-chan!, :meta {:doc "Puts the contents of coll into the supplied channel.\n\n  By default the channel will be closed after the items are copied,\n  but can be determined by the close? parameter.\n\n  Returns a channel which will close after the items are copied.", :arglists [[ch coll] [ch coll close?]]}, :source "(defn\n onto-chan!\n \"Puts the contents of coll into the supplied channel.\\n\\n  By default the channel will be closed after the items are copied,\\n  but can be determined by the close? parameter.\\n\\n  Returns a channel which will close after the items are copied.\"\n ([ch coll] (onto-chan! ch coll true))\n ([ch coll close?]\n  (go-loop\n   [vs (seq coll)]\n   (if\n    (and vs (>! ch (first vs)))\n    (recur (next vs))\n    (when close? (close! ch))))))\n"} {:sym tap, :meta {:doc "Copies the mult source onto the supplied channel.\n\n  By default the channel will be closed when the source closes,\n  but can be determined by the close? parameter.", :arglists [[mult ch] [mult ch close?]]}, :source "(defn\n tap\n \"Copies the mult source onto the supplied channel.\\n\\n  By default the channel will be closed when the source closes,\\n  but can be determined by the close? parameter.\"\n ([mult ch] (tap mult ch true))\n ([mult ch close?] (tap* mult ch close?) ch))\n"} {:sym admix, :meta {:doc "Adds ch as an input to the mix", :arglists ([mix ch])}, :source "(defn admix \"Adds ch as an input to the mix\" [mix ch] (admix* mix ch))\n"} {:sym promise-chan, :meta {:doc "Creates a promise channel with an optional transducer, and an optional\n  exception-handler. A promise channel can take exactly one value that consumers\n  will receive. Once full, puts complete but val is dropped (no transfer).\n  Consumers will block until either a value is placed in the channel or the\n  channel is closed. See chan for the semantics of xform and ex-handler.", :arglists [[] [xform] [xform ex-handler]]}, :source "(defn\n promise-chan\n \"Creates a promise channel with an optional transducer, and an optional\\n  exception-handler. A promise channel can take exactly one value that consumers\\n  will receive. Once full, puts complete but val is dropped (no transfer).\\n  Consumers will block until either a value is placed in the channel or the\\n  channel is closed. See chan for the semantics of xform and ex-handler.\"\n ([] (promise-chan nil))\n ([xform] (promise-chan xform nil))\n ([xform ex-handler] (chan (buffers/promise-buffer) xform ex-handler)))\n"} {:sym unique, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[ch] [ch buf-or-n]]}, :source "(defn\n unique\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([ch] (unique ch nil))\n ([ch buf-or-n]\n  (let\n   [out (chan buf-or-n)]\n   (go\n    (loop\n     [last nil]\n     (let\n      [v (<! ch)]\n      (when\n       (not (nil? v))\n       (if (= v last) (recur last) (do (>! out v) (recur v))))))\n    (close! out))\n   out)))\n"} {:sym muxch*, :meta {:doc nil, :arglists ([_])}, :protocol Mux} {:sym solo-mode, :meta {:doc "Sets the solo mode of the mix. mode must be one of :mute or :pause", :arglists ([mix mode])}, :source "(defn\n solo-mode\n \"Sets the solo mode of the mix. mode must be one of :mute or :pause\"\n [mix mode]\n (solo-mode* mix mode))\n"} {:sym transduce, :meta {:doc "async/reduces a channel with a transformation (xform f).\n  Returns a channel containing the result.  ch must close before\n  transduce produces a result.", :arglists ([xform f init ch])}, :source "(defn\n transduce\n \"async/reduces a channel with a transformation (xform f).\\n  Returns a channel containing the result.  ch must close before\\n  transduce produces a result.\"\n [xform f init ch]\n (let [f (xform f)] (go (let [ret (<! (reduce f init ch))] (f ret)))))\n"} {:sym onto-chan, :meta {:doc "Deprecated - use onto-chan!", :arglists [[ch coll] [ch coll close?]]}, :source "(defn\n onto-chan\n \"Deprecated - use onto-chan!\"\n {:deprecated \"1.2\"}\n ([ch coll] (onto-chan! ch coll true))\n ([ch coll close?] (onto-chan! ch coll close?)))\n"} {:sym to-chan, :meta {:doc "Deprecated - use to-chan!", :arglists ([coll])}, :source "(defn\n to-chan\n \"Deprecated - use to-chan!\"\n {:deprecated \"1.2\"}\n [coll]\n (to-chan! coll))\n"} {:sym dropping-buffer, :meta {:doc "Returns a buffer of size n. When full, puts will complete but\n  val will be dropped (no transfer).", :arglists ([n])}, :source "(defn\n dropping-buffer\n \"Returns a buffer of size n. When full, puts will complete but\\n  val will be dropped (no transfer).\"\n [n]\n (buffers/dropping-buffer n))\n"} {:sym untap-all, :meta {:doc "Disconnects all target channels from a mult", :arglists ([mult])}, :source "(defn\n untap-all\n \"Disconnects all target channels from a mult\"\n [mult]\n (untap-all* mult))\n"} {:sym into, :meta {:doc "Returns a channel containing the single (collection) result of the\n  items taken from the channel conjoined to the supplied\n  collection. ch must close before into produces a result.", :arglists ([coll ch])}, :source "(defn\n into\n \"Returns a channel containing the single (collection) result of the\\n  items taken from the channel conjoined to the supplied\\n  collection. ch must close before into produces a result.\"\n [coll ch]\n (reduce conj coll ch))\n"} {:sym to-chan!, :meta {:doc "Creates and returns a channel which contains the contents of coll,\n  closing when exhausted.", :arglists ([coll])}, :source "(defn\n to-chan!\n \"Creates and returns a channel which contains the contents of coll,\\n  closing when exhausted.\"\n [coll]\n (let [ch (chan (bounded-count 100 coll))] (onto-chan! ch coll) ch))\n"} {:sym pipeline, :meta {:doc "Takes elements from the from channel and supplies them to the to\n  channel, subject to the transducer xf, with parallelism n. Because\n  it is parallel, the transducer will be applied independently to each\n  element, not across elements, and may produce zero or more outputs\n  per input.  Outputs will be returned in order relative to the\n  inputs. By default, the to channel will be closed when the from\n  channel closes, but can be determined by the close?  parameter. Will\n  stop consuming the from channel if the to channel closes.\n\n  Note this is supplied for API compatibility with the Clojure version.\n  Values of N > 1 will not result in actual concurrency in a\n  single-threaded runtime.", :arglists [[n to xf from] [n to xf from close?] [n to xf from close? ex-handler]]}, :source "(defn\n pipeline\n \"Takes elements from the from channel and supplies them to the to\\n  channel, subject to the transducer xf, with parallelism n. Because\\n  it is parallel, the transducer will be applied independently to each\\n  element, not across elements, and may produce zero or more outputs\\n  per input.  Outputs will be returned in order relative to the\\n  inputs. By default, the to channel will be closed when the from\\n  channel closes, but can be determined by the close?  parameter. Will\\n  stop consuming the from channel if the to channel closes.\\n\\n  Note this is supplied for API compatibility with the Clojure version.\\n  Values of N > 1 will not result in actual concurrency in a\\n  single-threaded runtime.\"\n ([n to xf from] (pipeline n to xf from true))\n ([n to xf from close?] (pipeline n to xf from close? nil))\n ([n to xf from close? ex-handler]\n  (pipeline* n to xf from close? ex-handler :compute)))\n"} {:sym sub, :meta {:doc "Subscribes a channel to a topic of a pub.\n\n  By default the channel will be closed when the source closes,\n  but can be determined by the close? parameter.", :arglists [[p topic ch] [p topic ch close?]]}, :source "(defn\n sub\n \"Subscribes a channel to a topic of a pub.\\n\\n  By default the channel will be closed when the source closes,\\n  but can be determined by the close? parameter.\"\n ([p topic ch] (sub p topic ch true))\n ([p topic ch close?] (sub* p topic ch close?)))\n"} {:sym map>, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists ([f ch])}, :source "(defn\n map>\n \"Deprecated - this function will be removed. Use transducer instead\"\n [f ch]\n (reify\n  impl/Channel\n  (close! [_] (impl/close! ch))\n  impl/ReadPort\n  (take! [_ fn1] (impl/take! ch fn1))\n  impl/WritePort\n  (put! [_ val fn1] (impl/put! ch (f val) fn1))))\n"} {:sym pipe, :meta {:doc "Takes elements from the from channel and supplies them to the to\n   channel. By default, the to channel will be closed when the from\n   channel closes, but can be determined by the close?  parameter. Will\n   stop consuming the from channel if the to channel closes", :arglists [[from to] [from to close?]]}, :source "(defn\n pipe\n \"Takes elements from the from channel and supplies them to the to\\n   channel. By default, the to channel will be closed when the from\\n   channel closes, but can be determined by the close?  parameter. Will\\n   stop consuming the from channel if the to channel closes\"\n ([from to] (pipe from to true))\n ([from to close?]\n  (go-loop\n   []\n   (let\n    [v (<! from)]\n    (if (nil? v) (when close? (close! to)) (when (>! to v) (recur)))))\n  to))\n"} {:sym unmix, :meta {:doc "Removes ch as an input to the mix", :arglists ([mix ch])}, :source "(defn\n unmix\n \"Removes ch as an input to the mix\"\n [mix ch]\n (unmix* mix ch))\n"} {:sym filter<, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[p ch] [p ch buf-or-n]]}, :source "(defn\n filter<\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([p ch] (filter< p ch nil))\n ([p ch buf-or-n]\n  (let\n   [out (chan buf-or-n)]\n   (go-loop\n    []\n    (let\n     [val (<! ch)]\n     (if\n      (nil? val)\n      (close! out)\n      (do (when (p val) (>! out val)) (recur)))))\n   out)))\n"} {:sym sub*, :meta {:doc nil, :arglists ([p v ch close?])}, :protocol Pub} {:sym remove<, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[p ch] [p ch buf-or-n]]}, :source "(defn\n remove<\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([p ch] (remove< p ch nil))\n ([p ch buf-or-n] (filter< (complement p) ch buf-or-n)))\n"} {:sym untap*, :meta {:doc nil, :arglists ([m ch])}, :protocol Mult} {:sym toggle, :meta {:doc "Atomically sets the state(s) of one or more channels in a mix. The\n  state map is a map of channels -> channel-state-map. A\n  channel-state-map is a map of attrs -> boolean, where attr is one or\n  more of :mute, :pause or :solo. Any states supplied are merged with\n  the current state.\n\n  Note that channels can be added to a mix via toggle, which can be\n  used to add channels in a particular (e.g. paused) state.", :arglists ([mix state-map])}, :source "(defn\n toggle\n \"Atomically sets the state(s) of one or more channels in a mix. The\\n  state map is a map of channels -> channel-state-map. A\\n  channel-state-map is a map of attrs -> boolean, where attr is one or\\n  more of :mute, :pause or :solo. Any states supplied are merged with\\n  the current state.\\n\\n  Note that channels can be added to a mix via toggle, which can be\\n  used to add channels in a particular (e.g. paused) state.\"\n [mix state-map]\n (toggle* mix state-map))\n"} {:sym untap-all*, :meta {:doc nil, :arglists ([m])}, :protocol Mult} {:sym sliding-buffer, :meta {:doc "Returns a buffer of size n. When full, puts will complete, and be\n  buffered, but oldest elements in buffer will be dropped (not\n  transferred).", :arglists ([n])}, :source "(defn\n sliding-buffer\n \"Returns a buffer of size n. When full, puts will complete, and be\\n  buffered, but oldest elements in buffer will be dropped (not\\n  transferred).\"\n [n]\n (buffers/sliding-buffer n))\n"} {:sym partition, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[n ch] [n ch buf-or-n]]}, :source "(defn\n partition\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([n ch] (partition n ch nil))\n ([n ch buf-or-n]\n  (let\n   [out (chan buf-or-n)]\n   (go\n    (loop\n     [arr (make-array n) idx 0]\n     (let\n      [v (<! ch)]\n      (if\n       (not (nil? v))\n       (do\n        (aset arr idx v)\n        (let\n         [new-idx (inc idx)]\n         (if\n          (< new-idx n)\n          (recur arr new-idx)\n          (do (>! out (vec arr)) (recur (make-array n) 0)))))\n       (do (when (> idx 0) (>! out (vec arr))) (close! out))))))\n   out)))\n"} {:sym Mult, :meta {:doc nil}, :methods (tap* untap* untap-all*)} {:sym merge, :meta {:doc "Takes a collection of source channels and returns a channel which\n  contains all values taken from them. The returned channel will be\n  unbuffered by default, or a buf-or-n can be supplied. The channel\n  will close after all the source channels have closed.", :arglists [[chs] [chs buf-or-n]]}, :source "(defn\n merge\n \"Takes a collection of source channels and returns a channel which\\n  contains all values taken from them. The returned channel will be\\n  unbuffered by default, or a buf-or-n can be supplied. The channel\\n  will close after all the source channels have closed.\"\n ([chs] (merge chs nil))\n ([chs buf-or-n]\n  (let\n   [out (chan buf-or-n)]\n   (go-loop\n    [cs (vec chs)]\n    (if\n     (pos? (count cs))\n     (let\n      [[v c] (alts! cs)]\n      (if\n       (nil? v)\n       (recur (filterv (fn* [p1__45128#] (not= c p1__45128#)) cs))\n       (do (>! out v) (recur cs))))\n     (close! out)))\n   out)))\n"} {:sym partition-by, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[f ch] [f ch buf-or-n]]}, :source "(defn\n partition-by\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([f ch] (partition-by f ch nil))\n ([f ch buf-or-n]\n  (let\n   [out (chan buf-or-n)]\n   (go\n    (loop\n     [lst (make-array 0) last :cljs.core.async/nothing]\n     (let\n      [v (<! ch)]\n      (if\n       (not (nil? v))\n       (let\n        [new-itm (f v)]\n        (if\n         (or\n          (= new-itm last)\n          (keyword-identical? last :cljs.core.async/nothing))\n         (do (.push lst v) (recur lst new-itm))\n         (do\n          (>! out (vec lst))\n          (let\n           [new-lst (make-array 0)]\n           (.push new-lst v)\n           (recur new-lst new-itm)))))\n       (do\n        (when (> (alength lst) 0) (>! out (vec lst)))\n        (close! out))))))\n   out)))\n"} {:sym unsub-all, :meta {:doc "Unsubscribes all channels from a pub, or a topic of a pub", :arglists [[p] [p topic]]}, :source "(defn\n unsub-all\n \"Unsubscribes all channels from a pub, or a topic of a pub\"\n ([p] (unsub-all* p))\n ([p topic] (unsub-all* p topic)))\n"} {:sym >!, :meta {:doc "puts a val into port. nil values are not allowed. Must be called\n  inside a (go ...) block. Will park if no buffer space is available.\n  Returns true unless port is already closed.", :arglists ([port val])}, :source "(defn\n >!\n \"puts a val into port. nil values are not allowed. Must be called\\n  inside a (go ...) block. Will park if no buffer space is available.\\n  Returns true unless port is already closed.\"\n [port val]\n (throw (js/Error. \">! used not in (go ...) block\")))\n"} {:sym unmix-all*, :meta {:doc nil, :arglists ([m])}, :protocol Mix} {:sym split, :meta {:doc "Takes a predicate and a source channel and returns a vector of two\n  channels, the first of which will contain the values for which the\n  predicate returned true, the second those for which it returned\n  false.\n\n  The out channels will be unbuffered by default, or two buf-or-ns can\n  be supplied. The channels will close after the source channel has\n  closed.", :arglists [[p ch] [p ch t-buf-or-n f-buf-or-n]]}, :source "(defn\n split\n \"Takes a predicate and a source channel and returns a vector of two\\n  channels, the first of which will contain the values for which the\\n  predicate returned true, the second those for which it returned\\n  false.\\n\\n  The out channels will be unbuffered by default, or two buf-or-ns can\\n  be supplied. The channels will close after the source channel has\\n  closed.\"\n ([p ch] (split p ch nil nil))\n ([p ch t-buf-or-n f-buf-or-n]\n  (let\n   [tc (chan t-buf-or-n) fc (chan f-buf-or-n)]\n   (go-loop\n    []\n    (let\n     [v (<! ch)]\n     (if\n      (nil? v)\n      (do (close! tc) (close! fc))\n      (when (>! (if (p v) tc fc) v) (recur)))))\n   [tc fc])))\n"} {:sym unmix-all, :meta {:doc "removes all inputs from the mix", :arglists ([mix])}, :source "(defn\n unmix-all\n \"removes all inputs from the mix\"\n [mix]\n (unmix-all* mix))\n"} {:sym filter>, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists ([p ch])}, :source "(defn\n filter>\n \"Deprecated - this function will be removed. Use transducer instead\"\n [p ch]\n (reify\n  impl/Channel\n  (close! [_] (impl/close! ch))\n  (closed? [_] (impl/closed? ch))\n  impl/ReadPort\n  (take! [_ fn1] (impl/take! ch fn1))\n  impl/WritePort\n  (put!\n   [_ val fn1]\n   (if\n    (p val)\n    (impl/put! ch val fn1)\n    (channels/box (not (impl/closed? ch)))))))\n"} {:sym tap*, :meta {:doc nil, :arglists ([m ch close?])}, :protocol Mult} {:sym untap, :meta {:doc "Disconnects a target channel from a mult", :arglists ([mult ch])}, :source "(defn\n untap\n \"Disconnects a target channel from a mult\"\n [mult ch]\n (untap* mult ch))\n"} {:sym alts!, :meta {:doc "Completes at most one of several channel operations. Must be called\n   inside a (go ...) block. ports is a vector of channel endpoints,\n   which can be either a channel to take from or a vector of\n  [channel-to-put-to val-to-put], in any combination. Takes will be\n  made as if by <!, and puts will be made as if by >!. Unless\n  the :priority option is true, if more than one port operation is\n  ready a non-deterministic choice will be made. If no operation is\n  ready and a :default value is supplied, [default-val :default] will\n  be returned, otherwise alts! will park until the first operation to\n  become ready completes. Returns [val port] of the completed\n  operation, where val is the value taken for takes, and a\n  boolean (true unless already closed, as per put!) for puts.\n\n  opts are passed as :key val ... Supported options:\n\n  :default val - the value to use if none of the operations are immediately ready\n  :priority true - (default nil) when true, the operations will be tried in order.\n\n  Note: there is no guarantee that the port exps or val exprs will be\n  used, nor in what order should they be, so they should not be\n  depended upon for side effects.", :arglists ([ports & {:as opts}])}, :source "(defn\n alts!\n \"Completes at most one of several channel operations. Must be called\\n   inside a (go ...) block. ports is a vector of channel endpoints,\\n   which can be either a channel to take from or a vector of\\n  [channel-to-put-to val-to-put], in any combination. Takes will be\\n  made as if by <!, and puts will be made as if by >!. Unless\\n  the :priority option is true, if more than one port operation is\\n  ready a non-deterministic choice will be made. If no operation is\\n  ready and a :default value is supplied, [default-val :default] will\\n  be returned, otherwise alts! will park until the first operation to\\n  become ready completes. Returns [val port] of the completed\\n  operation, where val is the value taken for takes, and a\\n  boolean (true unless already closed, as per put!) for puts.\\n\\n  opts are passed as :key val ... Supported options:\\n\\n  :default val - the value to use if none of the operations are immediately ready\\n  :priority true - (default nil) when true, the operations will be tried in order.\\n\\n  Note: there is no guarantee that the port exps or val exprs will be\\n  used, nor in what order should they be, so they should not be\\n  depended upon for side effects.\"\n [ports & {:as opts}]\n (throw (js/Error. \"alts! used not in (go ...) block\")))\n"} {:sym unsub, :meta {:doc "Unsubscribes a channel from a topic of a pub", :arglists ([p topic ch])}, :source "(defn\n unsub\n \"Unsubscribes a channel from a topic of a pub\"\n [p topic ch]\n (unsub* p topic ch))\n"} {:sym poll!, :meta {:doc "Takes a val from port if it's possible to do so immediately.\n  Never blocks. Returns value if successful, nil otherwise.", :arglists ([port])}, :source "(defn\n poll!\n \"Takes a val from port if it's possible to do so immediately.\\n  Never blocks. Returns value if successful, nil otherwise.\"\n [port]\n (let [ret (impl/take! port (fn-handler nop false))] (when ret @ret)))\n"} {:sym map<, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists ([f ch])}, :source "(defn\n map<\n \"Deprecated - this function will be removed. Use transducer instead\"\n [f ch]\n (reify\n  impl/Channel\n  (close! [_] (impl/close! ch))\n  (closed? [_] (impl/closed? ch))\n  impl/ReadPort\n  (take!\n   [_ fn1]\n   (let\n    [ret\n     (impl/take!\n      ch\n      (reify\n       impl/Handler\n       (active? [_] (impl/active? fn1))\n       (blockable? [_] true)\n       (commit\n        [_]\n        (let\n         [f1 (impl/commit fn1)]\n         (fn*\n          [p1__45129#]\n          (f1 (if (nil? p1__45129#) nil (f p1__45129#))))))))]\n    (if (and ret (not (nil? @ret))) (channels/box (f @ret)) ret)))\n  impl/WritePort\n  (put! [_ val fn1] (impl/put! ch val fn1))))\n"} {:sym do-alts, :meta {:doc "returns derefable [val port] if immediate, nil if enqueued", :arglists ([fret ports opts])}, :source "(defn\n do-alts\n \"returns derefable [val port] if immediate, nil if enqueued\"\n [fret ports opts]\n (assert\n  (pos? (count ports))\n  \"alts must have at least one channel operation\")\n (let\n  [flag\n   (alt-flag)\n   n\n   (count ports)\n   idxs\n   (random-array n)\n   priority\n   (:priority opts)\n   ret\n   (loop\n    [i 0]\n    (when\n     (< i n)\n     (let\n      [idx\n       (if priority i (aget idxs i))\n       port\n       (nth ports idx)\n       wport\n       (when (vector? port) (port 0))\n       vbox\n       (if\n        wport\n        (let\n         [val (port 1)]\n         (impl/put!\n          wport\n          val\n          (alt-handler\n           flag\n           (fn* [p1__45125#] (fret [p1__45125# wport])))))\n        (impl/take!\n         port\n         (alt-handler\n          flag\n          (fn* [p1__45126#] (fret [p1__45126# port])))))]\n      (if\n       vbox\n       (channels/box [@vbox (or wport port)])\n       (recur (inc i))))))]\n  (or\n   ret\n   (when\n    (contains? opts :default)\n    (when-let\n     [got (and (impl/active? flag) (impl/commit flag))]\n     (channels/box [(:default opts) :default]))))))\n"} {:sym pipeline-async, :meta {:doc "Takes elements from the from channel and supplies them to the to\n  channel, subject to the async function af, with parallelism n. af\n  must be a function of two arguments, the first an input value and\n  the second a channel on which to place the result(s). af must close!\n  the channel before returning.  The presumption is that af will\n  return immediately, having launched some asynchronous operation\n  whose completion/callback will manipulate the result channel. Outputs\n  will be returned in order relative to  the inputs. By default, the to\n  channel will be closed when the from channel closes, but can be\n  determined by the close?  parameter. Will stop consuming the from\n  channel if the to channel closes.", :arglists [[n to af from] [n to af from close?]]}, :source "(defn\n pipeline-async\n \"Takes elements from the from channel and supplies them to the to\\n  channel, subject to the async function af, with parallelism n. af\\n  must be a function of two arguments, the first an input value and\\n  the second a channel on which to place the result(s). af must close!\\n  the channel before returning.  The presumption is that af will\\n  return immediately, having launched some asynchronous operation\\n  whose completion/callback will manipulate the result channel. Outputs\\n  will be returned in order relative to  the inputs. By default, the to\\n  channel will be closed when the from channel closes, but can be\\n  determined by the close?  parameter. Will stop consuming the from\\n  channel if the to channel closes.\"\n ([n to af from] (pipeline-async n to af from true))\n ([n to af from close?] (pipeline* n to af from close? nil :async)))\n"} {:sym Mix, :meta {:doc nil}, :methods (admix* solo-mode* toggle* unmix* unmix-all*)} {:sym toggle*, :meta {:doc nil, :arglists ([m state-map])}, :protocol Mix} {:sym mult, :meta {:doc "Creates and returns a mult(iple) of the supplied channel. Channels\n  containing copies of the channel can be created with 'tap', and\n  detached with 'untap'.\n\n  Each item is distributed to all taps in parallel and synchronously,\n  i.e. each tap must accept before the next item is distributed. Use\n  buffering/windowing to prevent slow taps from holding up the mult.\n\n  Items received when there are no taps get dropped.\n\n  If a tap puts to a closed channel, it will be removed from the mult.", :arglists ([ch])}, :source "(defn\n mult\n \"Creates and returns a mult(iple) of the supplied channel. Channels\\n  containing copies of the channel can be created with 'tap', and\\n  detached with 'untap'.\\n\\n  Each item is distributed to all taps in parallel and synchronously,\\n  i.e. each tap must accept before the next item is distributed. Use\\n  buffering/windowing to prevent slow taps from holding up the mult.\\n\\n  Items received when there are no taps get dropped.\\n\\n  If a tap puts to a closed channel, it will be removed from the mult.\"\n [ch]\n (let\n  [cs\n   (atom {})\n   m\n   (reify\n    Mux\n    (muxch* [_] ch)\n    Mult\n    (tap* [_ ch close?] (swap! cs assoc ch close?) nil)\n    (untap* [_ ch] (swap! cs dissoc ch) nil)\n    (untap-all* [_] (reset! cs {}) nil))\n   dchan\n   (chan 1)\n   dctr\n   (atom nil)\n   done\n   (fn [_] (when (zero? (swap! dctr dec)) (put! dchan true)))]\n  (go-loop\n   []\n   (let\n    [val (<! ch)]\n    (if\n     (nil? val)\n     (doseq [[c close?] @cs] (when close? (close! c)))\n     (let\n      [chs (keys @cs)]\n      (reset! dctr (count chs))\n      (doseq [c chs] (when-not (put! c val done) (untap* m c)))\n      (when (seq chs) (<! dchan))\n      (recur)))))\n  m))\n"} {:sym mapcat<, :meta {:doc "Deprecated - this function will be removed. Use transducer instead", :arglists [[f in] [f in buf-or-n]]}, :source "(defn\n mapcat<\n \"Deprecated - this function will be removed. Use transducer instead\"\n ([f in] (mapcat< f in nil))\n ([f in buf-or-n] (let [out (chan buf-or-n)] (mapcat* f in out) out)))\n"} {:sym ioc-alts!, :meta {:doc nil, :arglists ([state cont-block ports & {:as opts}])}, :source "(defn\n ioc-alts!\n [state cont-block ports & {:as opts}]\n (ioc/aset-all! state helpers/STATE-IDX cont-block)\n (when-let\n  [cb\n   (cljs.core.async/do-alts\n    (fn\n     [val]\n     (ioc/aset-all! state helpers/VALUE-IDX val)\n     (helpers/run-state-machine-wrapped state))\n    ports\n    opts)]\n  (ioc/aset-all! state helpers/VALUE-IDX @cb)\n  :recur))\n"} {:sym unblocking-buffer?, :meta {:doc "Returns true if a channel created with buff will never block. That is to say,\n   puts into this buffer will never cause the buffer to be full. ", :arglists ([buff])}, :source "(defn\n unblocking-buffer?\n \"Returns true if a channel created with buff will never block. That is to say,\\n   puts into this buffer will never cause the buffer to be full. \"\n [buff]\n (satisfies? impl/UnblockingBuffer buff))\n"} {:sym put!, :meta {:doc "Asynchronously puts a val into port, calling fn1 (if supplied) when\n   complete. nil values are not allowed. Will throw if closed. If\n   on-caller? (default true) is true, and the put is immediately\n   accepted, will call fn1 on calling thread.  Returns nil.", :arglists [[port val] [port val fn1] [port val fn1 on-caller?]]}, :source "(defn\n put!\n \"Asynchronously puts a val into port, calling fn1 (if supplied) when\\n   complete. nil values are not allowed. Will throw if closed. If\\n   on-caller? (default true) is true, and the put is immediately\\n   accepted, will call fn1 on calling thread.  Returns nil.\"\n ([port val] (if-let [ret (impl/put! port val fhnop)] @ret true))\n ([port val fn1] (put! port val fn1 true))\n ([port val fn1 on-caller?]\n  (if-let\n   [retb (impl/put! port val (fn-handler fn1))]\n   (let\n    [ret @retb]\n    (if on-caller? (fn1 ret) (dispatch/run (fn* [] (fn1 ret))))\n    ret)\n   true)))\n"} {:sym take!, :meta {:doc "Asynchronously takes a val from port, passing to fn1. Will pass nil\n   if closed. If on-caller? (default true) is true, and value is\n   immediately available, will call fn1 on calling thread.\n   Returns nil.", :arglists [[port fn1] [port fn1 on-caller?]]}, :source "(defn\n take!\n \"Asynchronously takes a val from port, passing to fn1. Will pass nil\\n   if closed. If on-caller? (default true) is true, and value is\\n   immediately available, will call fn1 on calling thread.\\n   Returns nil.\"\n ([port fn1] (take! port fn1 true))\n ([port fn1 on-caller?]\n  (let\n   [ret (impl/take! port (fn-handler fn1))]\n   (when\n    ret\n    (let\n     [val @ret]\n     (if on-caller? (fn1 val) (dispatch/run (fn* [] (fn1 val))))))\n   nil)))\n"}), play-cljc.gl.examples-3d ({:sym scale-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n scale-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (f-entity game data/f-3d)\n   tx\n   100\n   ty\n   100\n   *state\n   (atom {:tx tx, :ty ty, :rx 1, :ry 1})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :clear {:color [1 1 1 1], :depth 1} :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project 0 game-width game-height 0 400 -400) (play-cljc.transforms/translate tx ty 0) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 40) :x) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 25) :y) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 325) :z) (play-cljc.transforms/scale rx ry 1)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/scale-3d-example) (play-cljc.gl.example-utils/game-loop (fn scale-3d-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [tx ty rx ry]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :clear\n   {:color [1 1 1 1], :depth 1}\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project 0 game-width game-height 0 400 -400)\n  (play-cljc.transforms/translate tx ty 0)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 40) :x)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 25) :y)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 325) :z)\n  (play-cljc.transforms/scale rx ry 1)))\n", :id "play-cljc.gl.examples-3d/scale-3d-example/0"}]} {:sym perspective-texture-meta-3d-example, :meta {:doc nil, :arglists ([target-width target-height game])}, :source "(defn\n perspective-texture-meta-3d-example\n [target-width target-height game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (->>\n    {:vertex data/texture-vertex-shader,\n     :fragment data/texture-fragment-shader,\n     :attributes\n     {'a_position {:data data/cube, :type (gl game FLOAT), :size 3},\n      'a_texcoord\n      {:data data/cube-texcoords,\n       :type (gl game FLOAT),\n       :size 2,\n       :normalize true}},\n     :uniforms\n     {'u_texture\n      {:data nil,\n       :opts\n       {:mip-level 0,\n        :internal-fmt (gl game RGBA),\n        :width target-width,\n        :height target-height,\n        :border 0,\n        :src-fmt (gl game RGBA),\n        :src-type (gl game UNSIGNED_BYTE)},\n       :params\n       {(gl game TEXTURE_WRAP_S) (gl game CLAMP_TO_EDGE),\n        (gl game TEXTURE_WRAP_T) (gl game CLAMP_TO_EDGE),\n        (gl game TEXTURE_MIN_FILTER) (gl game LINEAR)}}},\n     :clear {:color [1 1 1 1], :depth 1}}\n    e/map->ThreeDEntity\n    (c/compile game))\n   inner-entity\n   (->>\n    {:vertex data/texture-vertex-shader,\n     :fragment data/texture-fragment-shader,\n     :attributes\n     {'a_position {:data data/cube, :type (gl game FLOAT), :size 3},\n      'a_texcoord\n      {:data data/cube-texcoords,\n       :type (gl game FLOAT),\n       :size 2,\n       :normalize true}},\n     :uniforms\n     {'u_texture\n      {:data [128 64 128 0 192 0],\n       :opts\n       {:mip-level 0,\n        :internal-fmt (gl game R8),\n        :width 3,\n        :height 2,\n        :border 0,\n        :src-fmt (gl game RED),\n        :src-type (gl game UNSIGNED_BYTE)},\n       :alignment 1,\n       :params\n       {(gl game TEXTURE_WRAP_S) (gl game CLAMP_TO_EDGE),\n        (gl game TEXTURE_WRAP_T) (gl game CLAMP_TO_EDGE),\n        (gl game TEXTURE_MIN_FILTER) (gl game NEAREST),\n        (gl game TEXTURE_MAG_FILTER) (gl game NEAREST)}}},\n     :clear {:color [0 0 1 1], :depth 1}}\n    e/map->ThreeDEntity\n    (c/compile game))\n   state\n   {:rx (m/deg->rad 190), :ry (m/deg->rad 40)}]\n  (assoc game :entity entity :inner-entity inner-entity :state state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (let [camera (-> (play-cljc.gl.entities-3d/->camera) (play-cljc.transforms/translate 0 0 2) (play-cljc.transforms/look-at [0 0 0] [0 1 0]))] (-> entity (play-cljc.transforms/project (play-cljc.math/deg->rad 60) aspect 1 2000) (play-cljc.transforms/invert camera) (play-cljc.transforms/rotate rx :x) (play-cljc.transforms/rotate ry :y)))}, :body (let [target-width 256 target-height 256 render-cube (fn [entity {:keys [rx ry]} aspect] focus)] (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/perspective-texture-meta-3d-example target-width target-height) (play-cljc.gl.example-utils/game-loop (fn perspective-texture-meta-3d-render [{:keys [entity inner-entity state delta-time], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (render-cube state (/ game-width game-height)) (assoc :render-to-texture {(quote u_texture) [(-> inner-entity (assoc :viewport {:x 0, :y 0, :width target-width, :height target-height}) (render-cube state (/ target-width target-height)))]})))) (-> game (update-in [:state :rx] + (* 1.2 delta-time)) (update-in [:state :ry] + (* 0.7 delta-time))))))), :body-str "(let\n [camera\n  (->\n   (play-cljc.gl.entities-3d/->camera)\n   (play-cljc.transforms/translate 0 0 2)\n   (play-cljc.transforms/look-at [0 0 0] [0 1 0]))]\n (->\n  entity\n  (play-cljc.transforms/project\n   (play-cljc.math/deg->rad 60)\n   aspect\n   1\n   2000)\n  (play-cljc.transforms/invert camera)\n  (play-cljc.transforms/rotate rx :x)\n  (play-cljc.transforms/rotate ry :y)))\n", :id "play-cljc.gl.examples-3d/perspective-texture-meta-3d-example/0"}]} {:sym perspective-texture-data-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n perspective-texture-data-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (->>\n    {:vertex data/texture-vertex-shader,\n     :fragment data/texture-fragment-shader,\n     :attributes\n     {'a_position {:data data/cube, :type (gl game FLOAT), :size 3},\n      'a_texcoord\n      {:data data/cube-texcoords,\n       :type (gl game FLOAT),\n       :size 2,\n       :normalize true}},\n     :uniforms\n     {'u_texture\n      {:data [128 64 128 0 192 0],\n       :opts\n       {:mip-level 0,\n        :internal-fmt (gl game R8),\n        :width 3,\n        :height 2,\n        :border 0,\n        :src-fmt (gl game RED),\n        :src-type (gl game UNSIGNED_BYTE)},\n       :alignment 1,\n       :params\n       {(gl game TEXTURE_WRAP_S) (gl game CLAMP_TO_EDGE),\n        (gl game TEXTURE_WRAP_T) (gl game CLAMP_TO_EDGE),\n        (gl game TEXTURE_MIN_FILTER) (gl game NEAREST),\n        (gl game TEXTURE_MAG_FILTER) (gl game NEAREST)}}},\n     :clear {:color [1 1 1 1], :depth 1}}\n    e/map->ThreeDEntity\n    (c/compile game))\n   state\n   {:rx (m/deg->rad 190), :ry (m/deg->rad 40)}]\n  (assoc game :entity entity :state state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project (play-cljc.math/deg->rad 60) (/ game-width game-height) 1 2000) (play-cljc.transforms/invert camera) (play-cljc.transforms/rotate rx :x) (play-cljc.transforms/rotate ry :y)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/perspective-texture-data-3d-example) (play-cljc.gl.example-utils/game-loop (fn perspective-texture-data-3d-render [{:keys [entity state delta-time], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [camera (-> (play-cljc.gl.entities-3d/->camera) (play-cljc.transforms/translate 0 0 2) (play-cljc.transforms/look-at [0 0 0] [0 1 0])) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) {:keys [rx ry]} state] focus) (-> game (update-in [:state :rx] + (* 1.2 delta-time)) (update-in [:state :ry] + (* 0.7 delta-time)))))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project\n   (play-cljc.math/deg->rad 60)\n   (/ game-width game-height)\n   1\n   2000)\n  (play-cljc.transforms/invert camera)\n  (play-cljc.transforms/rotate rx :x)\n  (play-cljc.transforms/rotate ry :y)))\n", :id "play-cljc.gl.examples-3d/perspective-texture-data-3d-example/0"}]} {:sym perspective-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n perspective-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity (f-entity game data/f-3d) *state (atom {:cx 0, :cy 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :clear {:color [1 1 1 1], :depth 1} :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project (play-cljc.math/deg->rad 60) (/ game-width game-height) 1 2000) (play-cljc.transforms/translate cx cy -150) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 180) :x) (play-cljc.transforms/rotate 0 :y) (play-cljc.transforms/rotate 0 :z)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/perspective-3d-example) (play-cljc.gl.example-utils/game-loop (fn perspective-3d-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [cx cy]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :clear\n   {:color [1 1 1 1], :depth 1}\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project\n   (play-cljc.math/deg->rad 60)\n   (/ game-width game-height)\n   1\n   2000)\n  (play-cljc.transforms/translate cx cy -150)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 180) :x)\n  (play-cljc.transforms/rotate 0 :y)\n  (play-cljc.transforms/rotate 0 :z)))\n", :id "play-cljc.gl.examples-3d/perspective-3d-example/0"}]} {:sym rotation-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n rotation-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (f-entity game data/f-3d)\n   tx\n   100\n   ty\n   100\n   *state\n   (atom {:tx tx, :ty ty, :r 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :clear {:color [1 1 1 1], :depth 1} :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project 0 game-width game-height 0 400 -400) (play-cljc.transforms/translate tx ty 0) (play-cljc.transforms/rotate r :x) (play-cljc.transforms/rotate r :y) (play-cljc.transforms/rotate r :z) (play-cljc.transforms/translate -50 -75 0)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/rotation-3d-example) (play-cljc.gl.example-utils/game-loop (fn rotation-3d-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [tx ty r]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :clear\n   {:color [1 1 1 1], :depth 1}\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project 0 game-width game-height 0 400 -400)\n  (play-cljc.transforms/translate tx ty 0)\n  (play-cljc.transforms/rotate r :x)\n  (play-cljc.transforms/rotate r :y)\n  (play-cljc.transforms/rotate r :z)\n  (play-cljc.transforms/translate -50 -75 0)))\n", :id "play-cljc.gl.examples-3d/rotation-3d-example/0"}]} {:sym perspective-texture-3d-example, :meta {:doc nil, :arglists ([game {:keys [data width height]}])}, :source "(defn\n perspective-texture-3d-example\n [game {:keys [data width height]}]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (->>\n    {:vertex data/texture-vertex-shader,\n     :fragment data/texture-fragment-shader,\n     :attributes\n     {'a_position\n      {:data (transform-f-data data/f-3d),\n       :type (gl game FLOAT),\n       :size 3},\n      'a_texcoord\n      {:data data/f-texcoords,\n       :type (gl game FLOAT),\n       :size 2,\n       :normalize true}},\n     :uniforms\n     {'u_texture\n      {:data data,\n       :opts\n       {:mip-level 0,\n        :internal-fmt (gl game RGBA),\n        :width width,\n        :height height,\n        :border 0,\n        :src-fmt (gl game RGBA),\n        :src-type (gl game UNSIGNED_BYTE)},\n       :mipmap true}},\n     :clear {:color [0 0 0 0], :depth 1}}\n    e/map->ThreeDEntity\n    (c/compile game))\n   state\n   {:rx (m/deg->rad 190), :ry (m/deg->rad 40)}]\n  (assoc game :entity entity :state state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project (play-cljc.math/deg->rad 60) (/ game-width game-height) 1 2000) (play-cljc.transforms/invert camera) (play-cljc.transforms/rotate rx :x) (play-cljc.transforms/rotate ry :y)))}, :body (let [game (play-cljc.gl.example-utils/init-example card)] (play-cljc.gl.example-utils/get-image "f-texture.png" (fn [image] (->> (play-cljc.gl.examples-3d/perspective-texture-3d-example game image) (play-cljc.gl.example-utils/game-loop (fn perspective-texture-3d-render [{:keys [entity state delta-time], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [camera (-> (play-cljc.gl.entities-3d/->camera) (play-cljc.transforms/translate 0 0 200) (play-cljc.transforms/look-at [0 0 0] [0 1 0])) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) {:keys [rx ry]} state] focus) (-> game (update-in [:state :rx] + (* 1.2 delta-time)) (update-in [:state :ry] + (* 0.7 delta-time))))))))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project\n   (play-cljc.math/deg->rad 60)\n   (/ game-width game-height)\n   1\n   2000)\n  (play-cljc.transforms/invert camera)\n  (play-cljc.transforms/rotate rx :x)\n  (play-cljc.transforms/rotate ry :y)))\n", :id "play-cljc.gl.examples-3d/perspective-texture-3d-example/0"}]} {:sym perspective-camera-target-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n perspective-camera-target-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (f-entity game (transform-f-data data/f-3d))\n   *state\n   (atom {:cr 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (dotimes [i num-fs] (let [angle (/ (* i PI 2) num-fs) x (* (cos angle) radius) z (* (sin angle) radius)] (play-cljc.gl.core/render game (play-cljc.transforms/translate entity x 0 z))))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/perspective-camera-target-3d-example) (play-cljc.gl.example-utils/game-loop (fn perspective-camera-target-3d-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (play-cljc.gl.core/render game {:clear {:color [1 1 1 1], :depth 1}}) (let [{:keys [cr]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) radius 200 num-fs 5 camera (-> (play-cljc.gl.entities-3d/->camera) (play-cljc.transforms/rotate cr :y) (play-cljc.transforms/translate 0 0 (* radius 1.5)) (play-cljc.transforms/look-at [radius 0 0] [0 1 0])) entity (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project (play-cljc.math/deg->rad 60) (/ game-width game-height) 1 2000) (play-cljc.transforms/invert camera)) PI play-cljc.gl.example-utils/PI sin play-cljc.gl.example-utils/sin cos play-cljc.gl.example-utils/cos] focus) game))), :body-str "(dotimes\n [i num-fs]\n (let\n  [angle\n   (/ (* i PI 2) num-fs)\n   x\n   (* (cos angle) radius)\n   z\n   (* (sin angle) radius)]\n  (play-cljc.gl.core/render\n   game\n   (play-cljc.transforms/translate entity x 0 z))))\n", :id "play-cljc.gl.examples-3d/perspective-camera-target-3d-example/0"}]} {:sym translation-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n translation-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity (f-entity game data/f-3d) *state (atom {:x 0, :y 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :clear {:color [1 1 1 1], :depth 1} :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project 0 game-width game-height 0 400 -400) (play-cljc.transforms/translate x y 0) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 40) :x) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 25) :y) (play-cljc.transforms/rotate (play-cljc.math/deg->rad 325) :z)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/translation-3d-example) (play-cljc.gl.example-utils/game-loop (fn translation-3d-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [x y]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :clear\n   {:color [1 1 1 1], :depth 1}\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project 0 game-width game-height 0 400 -400)\n  (play-cljc.transforms/translate x y 0)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 40) :x)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 25) :y)\n  (play-cljc.transforms/rotate (play-cljc.math/deg->rad 325) :z)))\n", :id "play-cljc.gl.examples-3d/translation-3d-example/0"}]} {:sym perspective-camera-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n perspective-camera-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (f-entity game (transform-f-data data/f-3d))\n   *state\n   (atom {:cr 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (dotimes [i num-fs] (let [angle (/ (* i PI 2) num-fs) x (* (cos angle) radius) z (* (sin angle) radius)] (play-cljc.gl.core/render game (play-cljc.transforms/translate entity x 0 z))))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/perspective-camera-3d-example) (play-cljc.gl.example-utils/game-loop (fn perspective-camera-3d-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (play-cljc.gl.core/render game {:clear {:color [1 1 1 1], :depth 1}}) (let [{:keys [cr]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) radius 200 num-fs 5 camera (-> (play-cljc.gl.entities-3d/->camera) (play-cljc.transforms/rotate cr :y) (play-cljc.transforms/translate 0 0 (* radius 1.5))) entity (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project (play-cljc.math/deg->rad 60) (/ game-width game-height) 1 2000) (play-cljc.transforms/invert camera)) PI play-cljc.gl.example-utils/PI sin play-cljc.gl.example-utils/sin cos play-cljc.gl.example-utils/cos] focus) game))), :body-str "(dotimes\n [i num-fs]\n (let\n  [angle\n   (/ (* i PI 2) num-fs)\n   x\n   (* (cos angle) radius)\n   z\n   (* (sin angle) radius)]\n  (play-cljc.gl.core/render\n   game\n   (play-cljc.transforms/translate entity x 0 z))))\n", :id "play-cljc.gl.examples-3d/perspective-camera-3d-example/0"}]} {:sym perspective-animation-3d-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n perspective-animation-3d-example\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (f-entity game data/f-3d)\n   state\n   {:rx (m/deg->rad 190), :ry (m/deg->rad 40), :rz (m/deg->rad 320)}]\n  (assoc game :entity entity :state state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :clear {:color [1 1 1 1], :depth 1} :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project (play-cljc.math/deg->rad 60) (/ game-width game-height) 1 2000) (play-cljc.transforms/translate 0 0 -360) (play-cljc.transforms/rotate rx :x) (play-cljc.transforms/rotate ry :y) (play-cljc.transforms/rotate rz :z)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-3d/perspective-animation-3d-example) (play-cljc.gl.example-utils/game-loop (fn perspective-animation-3d-render [{:keys [entity state delta-time], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) {:keys [rx ry rz]} state] focus) (update-in game [:state :ry] + (* 1.2 delta-time))))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :clear\n   {:color [1 1 1 1], :depth 1}\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project\n   (play-cljc.math/deg->rad 60)\n   (/ game-width game-height)\n   1\n   2000)\n  (play-cljc.transforms/translate 0 0 -360)\n  (play-cljc.transforms/rotate rx :x)\n  (play-cljc.transforms/rotate ry :y)\n  (play-cljc.transforms/rotate rz :z)))\n", :id "play-cljc.gl.examples-3d/perspective-animation-3d-example/0"}]}), cljs.core.async.impl.buffers ({:sym acopy, :meta {:doc nil, :arglists ([src src-start dest dest-start len])}, :source "(defn\n acopy\n [src src-start dest dest-start len]\n (loop\n  [cnt 0]\n  (when\n   (< cnt len)\n   (aset dest (+ dest-start cnt) (aget src (+ src-start cnt)))\n   (recur (inc cnt)))))\n"} {:sym ring-buffer, :meta {:doc nil, :arglists ([n])}, :source "(defn\n ring-buffer\n [n]\n (assert (> n 0) \"Can't create a ring buffer of size 0\")\n (RingBuffer. 0 0 0 (make-array n)))\n"} {:sym fixed-buffer, :meta {:doc nil, :arglists ([n])}, :source "(defn fixed-buffer [n] (FixedBuffer. (ring-buffer n) n))\n"} {:sym dropping-buffer, :meta {:doc nil, :arglists ([n])}, :source "(defn dropping-buffer [n] (DroppingBuffer. (ring-buffer n) n))\n"} {:sym sliding-buffer, :meta {:doc nil, :arglists ([n])}, :source "(defn sliding-buffer [n] (SlidingBuffer. (ring-buffer n) n))\n"} {:sym promise-buffer, :meta {:doc nil, :arglists ([])}, :source "(defn promise-buffer [] (PromiseBuffer. NO-VAL))\n"}), cljs.analyzer.passes.and-or ({:sym remove-loop-let, :meta {:doc nil, :arglists ([fn-ast local])}, :source "(defn\n remove-loop-let\n [fn-ast local]\n (update\n  fn-ast\n  :loop-lets\n  (fn\n   [loop-lets]\n   (map\n    (fn\n     [m]\n     (update\n      m\n      :params\n      (fn\n       [xs]\n       (remove (fn* [p1__45450#] (= local (:name p1__45450#))) xs))))\n    loop-lets))))\n"} {:sym simple-ops, :meta {}, :source "(def\n simple-ops\n #{:js\n   :host-field\n   :const\n   :var\n   :quote\n   :invoke\n   :js-var\n   :host-call\n   :local})\n"} {:sym optimize-or, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n optimize-or\n [ast]\n (let\n  [{:keys [init name]} (-> ast :bindings first)]\n  {:op :js,\n   :env (:env ast),\n   :segs [\"((\" \") || (\" \"))\"],\n   :args\n   [init\n    (passes/walk\n     (->expr-env (-> ast :body :ret :else))\n     [(remove-local-pass name)])],\n   :form (:form ast),\n   :children [:args],\n   :tag 'boolean}))\n"} {:sym no-statements?, :meta {:doc nil, :arglists ([let-ast])}, :source "(defn no-statements? [let-ast] (= [] (-> let-ast :body :statements)))\n"} {:sym simple-or?, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n simple-or?\n [ast]\n (and (simple-test-binding-let? ast) (test=then? (-> ast :body :ret))))\n"} {:sym test=then?, :meta {:doc nil, :arglists ([if-ast])}, :source "(defn\n test=then?\n [if-ast]\n (= (dissoc (:test if-ast) :env) (dissoc (:then if-ast) :env)))\n"} {:sym test=else?, :meta {:doc nil, :arglists ([if-ast])}, :source "(defn\n test=else?\n [if-ast]\n (= (dissoc (:test if-ast) :env) (dissoc (:else if-ast) :env)))\n"} {:sym simple-test-binding-let?, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n simple-test-binding-let?\n [ast]\n (and\n  (single-binding-let? ast)\n  (no-statements? ast)\n  (simple-test-expr? (-> ast :bindings first :init))\n  (returns-if? ast)))\n"} {:sym simple-op?, :meta {:doc nil, :arglists ([ast])}, :source "(defn simple-op? [ast] (contains? simple-ops (:op ast)))\n"} {:sym optimizable-and?, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n optimizable-and?\n [ast]\n (and (simple-and? ast) (simple-test-expr? (-> ast :body :ret :then))))\n"} {:sym optimizable-or?, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n optimizable-or?\n [ast]\n (and (simple-or? ast) (simple-test-expr? (-> ast :body :ret :else))))\n"} {:sym ->expr-env, :meta {:doc nil, :arglists ([ast])}, :source "(defn ->expr-env [ast] (assoc-in ast [:env :context] :expr))\n"} {:sym returns-if?, :meta {:doc nil, :arglists ([let-ast])}, :source "(defn returns-if? [let-ast] (= :if (-> let-ast :body :ret :op)))\n"} {:sym remove-local-pass, :meta {:doc nil, :arglists ([local])}, :source "(defn\n remove-local-pass\n [local]\n (fn\n  [env ast opts]\n  (cond->\n   (update-in ast [:env :locals] dissoc local)\n   (= :fn (:op ast))\n   (remove-loop-let local))))\n"} {:sym simple-and?, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n simple-and?\n [ast]\n (and (simple-test-binding-let? ast) (test=else? (-> ast :body :ret))))\n"} {:sym optimize-and, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n optimize-and\n [ast]\n (let\n  [{:keys [init name]} (-> ast :bindings first)]\n  {:op :js,\n   :env (:env ast),\n   :segs [\"((\" \") && (\" \"))\"],\n   :args\n   [init\n    (passes/walk\n     (->expr-env (-> ast :body :ret :then))\n     [(remove-local-pass name)])],\n   :form (:form ast),\n   :children [:args],\n   :tag 'boolean}))\n"} {:sym simple-test-expr?, :meta {:doc nil, :arglists ([{:keys [op], :as ast}])}, :source "(defn\n simple-test-expr?\n [{:keys [op], :as ast}]\n (boolean\n  (and\n   (simple-op? ast)\n   ('#{seq boolean}\n    (or (:tag ast) (when (#{:var :local} op) (-> ast :info :tag)))))))\n"} {:sym single-binding-let?, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n single-binding-let?\n [ast]\n (and (= :let (:op ast)) (= 1 (count (-> ast :bindings)))))\n"} {:sym optimize, :meta {:doc nil, :arglists ([env ast _])}, :source "(defn\n optimize\n [env ast _]\n (cond\n  (optimizable-and? ast)\n  (optimize-and ast)\n  (optimizable-or? ast)\n  (optimize-or ast)\n  :else\n  ast))\n"}), cljs.core.async.impl.protocols ({:sym remove!, :meta {:doc "remove and return next item from buffer, called under chan mutex", :arglists ([b])}, :protocol Buffer} {:sym close-buf!, :meta {:doc "called on chan closed under chan mutex, return ignored", :arglists ([b])}, :protocol Buffer} {:sym close!, :meta {:doc nil, :arglists ([chan])}, :protocol Channel} {:sym Handler, :meta {:doc nil}, :methods (active? blockable? commit)} {:sym blockable?, :meta {:doc "returns true if this handler may be blocked, otherwise it must not block", :arglists ([h])}, :protocol Handler} {:sym active?, :meta {:doc "returns true if has callback. Must work w/o lock", :arglists ([h])}, :protocol Handler} {:sym Buffer, :meta {:doc nil}, :methods (add!* close-buf! full? remove!)} {:sym full?, :meta {:doc "returns true if buffer cannot accept put", :arglists ([b])}, :protocol Buffer} {:sym add!, :meta {:doc nil, :arglists [[b] [b itm]]}, :source "(defn add! ([b] b) ([b itm] (assert (not (nil? itm))) (add!* b itm)))\n"} {:sym add!*, :meta {:doc "if room, add item to the buffer, returns b, called under chan mutex", :arglists ([b itm])}, :protocol Buffer} {:sym ReadPort, :meta {:doc nil}, :methods (take!)} {:sym Channel, :meta {:doc nil}, :methods (close! closed?)} {:sym closed?, :meta {:doc nil, :arglists ([chan])}, :protocol Channel} {:sym UnblockingBuffer, :meta {:doc nil}, :methods ()} {:sym MAX-QUEUE-SIZE, :meta {}, :source "(def MAX-QUEUE-SIZE 1024)\n"} {:sym commit, :meta {:doc "commit to fulfilling its end of the transfer, returns cb. Must be called within lock", :arglists ([h])}, :protocol Handler} {:sym put!, :meta {:doc "derefable boolean (false if already closed) if handled, nil if put was enqueued.\n                               Must throw on nil val.", :arglists ([port val fn1-handler])}, :protocol WritePort} {:sym take!, :meta {:doc "derefable val if taken, nil if take was enqueued", :arglists ([port fn1-handler])}, :protocol ReadPort} {:sym WritePort, :meta {:doc nil}, :methods (put!)}), rum.derived-atom ({:sym derived-atom, :meta {:doc nil, :arglists [[refs key f] [refs key f opts]]}, :source "(defn\n derived-atom\n ([refs key f] (derived-atom refs key f {}))\n ([refs key f opts]\n  (let\n   [{:keys [ref check-equals?], :or {check-equals? true}}\n    opts\n    recalc\n    (case\n     (count refs)\n     1\n     (let [[a] refs] (fn* [] (f @a)))\n     2\n     (let [[a b] refs] (fn* [] (f @a @b)))\n     3\n     (let [[a b c] refs] (fn* [] (f @a @b @c)))\n     (fn* [] (apply f (map deref refs))))\n    sink\n    (if ref (doto ref (reset! (recalc))) (atom (recalc)))\n    watch\n    (if\n     check-equals?\n     (fn\n      [_ _ _ _]\n      (let\n       [new-val (recalc)]\n       (when (not= @sink new-val) (reset! sink new-val))))\n     (fn [_ _ _ _] (reset! sink (recalc))))]\n   (doseq [ref refs] (add-watch ref key watch))\n   sink)))\n"}), mistakes-were-made.core ({:sym can-redo?, :meta {:doc "Returns true if we can redo.", :arglists ([*edit-history])}, :source "(defn\n can-redo?\n \"Returns true if we can redo.\"\n [*edit-history]\n (some? (get-next-state *edit-history)))\n"} {:sym atom?, :meta {}, :source "(def\n atom?\n (fn*\n  [p1__45030#]\n  (instance?\n   #?(:clj clojure.lang.Atom :cljs cljs.core/Atom)\n   p1__45030#)))\n"} {:sym get-current-state, :meta {:doc "Returns the current state from edit-history, or nil if there is none.", :arglists ([*edit-history])}, :source "(defn\n get-current-state\n \"Returns the current state from edit-history, or nil if there is none.\"\n [*edit-history]\n (let\n  [{:keys [current-state states]} @*edit-history]\n  (get states current-state)))\n"} {:sym undo!, :meta {:doc "Changes the current state and returns the previous state from edit-history, or nil if there is none.", :arglists ([*edit-history])}, :source "(defn\n undo!\n \"Changes the current state and returns the previous state from edit-history, or nil if there is none.\"\n [*edit-history]\n (when-let\n  [state (get-previous-state *edit-history)]\n  (swap! *edit-history update :current-state dec)\n  state))\n"} {:sym redo!, :meta {:doc "Changes the current state and returns the next state from edit-history, or nil if there is none.", :arglists ([*edit-history])}, :source "(defn\n redo!\n \"Changes the current state and returns the next state from edit-history, or nil if there is none.\"\n [*edit-history]\n (when-let\n  [state (get-next-state *edit-history)]\n  (swap! *edit-history update :current-state inc)\n  state))\n"} {:sym can-undo?, :meta {:doc "Returns true if we can undo.", :arglists ([*edit-history])}, :source "(defn\n can-undo?\n \"Returns true if we can undo.\"\n [*edit-history]\n (some? (get-previous-state *edit-history)))\n"} {:sym get-next-state, :meta {:doc "Returns the next state from edit-history, or nil if there is none.", :arglists ([*edit-history])}, :source "(defn\n get-next-state\n \"Returns the next state from edit-history, or nil if there is none.\"\n [*edit-history]\n (let\n  [{:keys [current-state states]} @*edit-history]\n  (get states (inc current-state))))\n"} {:sym update-cursor-position!, :meta {:doc "Updates only the cursor position.", :arglists ([*edit-history cursor-position])}, :source "(defn\n update-cursor-position!\n \"Updates only the cursor position.\"\n [*edit-history cursor-position]\n (let\n  [{:keys [current-state]} @*edit-history]\n  (when\n   (>= current-state 0)\n   (swap!\n    *edit-history\n    assoc-in\n    [:states current-state :cursor-position]\n    cursor-position))))\n"} {:sym update-edit-history!, :meta {:doc "Updates the edit history atom.", :arglists ([*edit-history state])}, :source "(defn\n update-edit-history!\n \"Updates the edit history atom.\"\n [*edit-history state]\n (let\n  [{:keys [current-state states limit]}\n   @*edit-history\n   old-state\n   (get states current-state)\n   old-cursor-position\n   (or (first (:original-cursor-position old-state)) 0)\n   new-cursor-position\n   (first (:cursor-position state))\n   new-cursor-change\n   (- new-cursor-position old-cursor-position)\n   state\n   (assoc state :original-cursor-position (:cursor-position state))]\n  (when\n   (or\n    (not= (:text old-state) (:text state))\n    (:selection-change? state))\n   (swap!\n    *edit-history\n    (fn\n     [edit-history]\n     (let\n      [new-current-state\n       (if\n        (or (<= current-state 1) (not= new-cursor-change 1))\n        (inc current-state)\n        current-state)\n       new-states\n       (subvec states 0 new-current-state)\n       new-states\n       (conj new-states state)]\n      (if\n       (and limit (> (count new-states) limit))\n       (assoc\n        edit-history\n        :current-state\n        (dec new-current-state)\n        :states\n        (subvec new-states 1))\n       (assoc\n        edit-history\n        :current-state\n        new-current-state\n        :states\n        new-states))))))))\n"} {:sym create-edit-history, :meta {:doc nil, :arglists ([])}, :source "(defn create-edit-history [] (atom {:current-state -1, :states []}))\n"} {:sym get-previous-state, :meta {:doc "Returns the previous state from edit-history, or nil if there is none.", :arglists ([*edit-history])}, :source "(defn\n get-previous-state\n \"Returns the previous state from edit-history, or nil if there is none.\"\n [*edit-history]\n (let\n  [{:keys [current-state states]} @*edit-history]\n  (get states (dec current-state))))\n"}), cljs.tools.reader.impl.inspect ({:sym inspect, :meta {:doc "Return a string description of the value supplied.\n   May be the a string version of the value itself (e.g. \"true\")\n   or it may be a description (e.g. \"an instance of Foo\").\n   If truncate is true then return a very terse version of\n   the inspection.", :arglists [[x] [truncate x]]}, :source "(defn\n inspect\n \"Return a string description of the value supplied.\\n   May be the a string version of the value itself (e.g. \\\"true\\\")\\n   or it may be a description (e.g. \\\"an instance of Foo\\\").\\n   If truncate is true then return a very terse version of\\n   the inspection.\"\n ([x] (inspect* false x))\n ([truncate x] (inspect* truncate x)))\n"}), sablono.core ({:sym wrap-attrs, :meta {:doc "Add an optional attribute argument to a function that returns a element vector.", :arglists ([func])}, :source "(defn\n wrap-attrs\n \"Add an optional attribute argument to a function that returns a element vector.\"\n [func]\n (fn\n  [& args]\n  (if\n   (map? (first args))\n   (let\n    [[tag & body] (apply func (rest args))]\n    (if\n     (map? (first body))\n     (into [tag (merge (first body) (first args))] (rest body))\n     (into [tag (first args)] body)))\n   (apply func args))))\n"} {:sym include-css, :meta {:doc "Include a list of external stylesheet files.", :arglists ([& styles])}, :source "(defn\n include-css\n \"Include a list of external stylesheet files.\"\n [& styles]\n (for\n  [style styles]\n  [:link {:type \"text/css\", :href (as-str style), :rel \"stylesheet\"}]))\n"} {:sym include-js, :meta {:doc "Include the JavaScript library at `src`.", :arglists ([src])}, :source "(defn\n include-js\n \"Include the JavaScript library at `src`.\"\n [src]\n (dom/appendChild\n  (.-body (dom/getDocument))\n  (dom/createDom \"script\" #js {:src src})))\n"} {:sym include-react, :meta {:doc "Include Facebook's React JavaScript library.", :arglists ([])}, :source "(defn\n include-react\n \"Include Facebook's React JavaScript library.\"\n []\n (include-js \"http://fb.me/react-0.12.2.js\"))\n"} {:sym *group*, :meta {}, :source "(def *group* [])\n"} {:sym file-upload, :meta {}, :source "(def file-upload file-field)\n"}), clojure.set ({:sym union, :meta {:doc "Return a set that is the union of the input sets", :arglists [[] [s1] [s1 s2] [s1 s2 & sets]]}, :source "(defn\n union\n \"Return a set that is the union of the input sets\"\n ([] #{})\n ([s1] s1)\n ([s1 s2]\n  (if\n   (< (count s1) (count s2))\n   (reduce conj s2 s1)\n   (reduce conj s1 s2)))\n ([s1 s2 & sets]\n  (let\n   [bubbled-sets (bubble-max-key count (conj sets s2 s1))]\n   (reduce into (first bubbled-sets) (rest bubbled-sets)))))\n"} {:sym map-invert, :meta {:doc "Returns the map with the vals mapped to the keys.", :arglists ([m])}, :source "(defn\n map-invert\n \"Returns the map with the vals mapped to the keys.\"\n [m]\n (reduce (fn [m [k v]] (assoc m v k)) {} m))\n"} {:sym join, :meta {:doc "When passed 2 rels, returns the rel corresponding to the natural\n  join. When passed an additional keymap, joins on the corresponding\n  keys.", :arglists [[xrel yrel] [xrel yrel km]]}, :source "(defn\n join\n \"When passed 2 rels, returns the rel corresponding to the natural\\n  join. When passed an additional keymap, joins on the corresponding\\n  keys.\"\n ([xrel yrel]\n  (if\n   (and (seq xrel) (seq yrel))\n   (let\n    [ks\n     (intersection (set (keys (first xrel))) (set (keys (first yrel))))\n     [r s]\n     (if (<= (count xrel) (count yrel)) [xrel yrel] [yrel xrel])\n     idx\n     (index r ks)]\n    (reduce\n     (fn\n      [ret x]\n      (let\n       [found (idx (select-keys x ks))]\n       (if\n        found\n        (reduce\n         (fn*\n          [p1__44974# p2__44975#]\n          (conj p1__44974# (merge p2__44975# x)))\n         ret\n         found)\n        ret)))\n     #{}\n     s))\n   #{}))\n ([xrel yrel km]\n  (let\n   [[r s k]\n    (if\n     (<= (count xrel) (count yrel))\n     [xrel yrel (map-invert km)]\n     [yrel xrel km])\n    idx\n    (index r (vals k))]\n   (reduce\n    (fn\n     [ret x]\n     (let\n      [found (idx (rename-keys (select-keys x (keys k)) k))]\n      (if\n       found\n       (reduce\n        (fn*\n         [p1__44976# p2__44977#]\n         (conj p1__44976# (merge p2__44977# x)))\n        ret\n        found)\n       ret)))\n    #{}\n    s))))\n"} {:sym select, :meta {:doc "Returns a set of the elements for which pred is true", :arglists ([pred xset])}, :source "(defn\n select\n \"Returns a set of the elements for which pred is true\"\n [pred xset]\n (reduce (fn [s k] (if (pred k) s (disj s k))) xset xset))\n"} {:sym intersection, :meta {:doc "Return a set that is the intersection of the input sets", :arglists [[s1] [s1 s2] [s1 s2 & sets]]}, :source "(defn\n intersection\n \"Return a set that is the intersection of the input sets\"\n ([s1] s1)\n ([s1 s2]\n  (if\n   (< (count s2) (count s1))\n   (recur s2 s1)\n   (reduce\n    (fn\n     [result item]\n     (if (contains? s2 item) result (disj result item)))\n    s1\n    s1)))\n ([s1 s2 & sets]\n  (let\n   [bubbled-sets\n    (bubble-max-key\n     (fn* [p1__44971#] (- (count p1__44971#)))\n     (conj sets s2 s1))]\n   (reduce intersection (first bubbled-sets) (rest bubbled-sets)))))\n"} {:sym superset?, :meta {:doc "Is set1 a superset of set2?", :arglists ([set1 set2])}, :source "(defn\n superset?\n \"Is set1 a superset of set2?\"\n [set1 set2]\n (and\n  (>= (count set1) (count set2))\n  (every? (fn* [p1__44979#] (contains? set1 p1__44979#)) set2)))\n"} {:sym index, :meta {:doc "Returns a map of the distinct values of ks in the xrel mapped to a\n  set of the maps in xrel with the corresponding values of ks.", :arglists ([xrel ks])}, :source "(defn\n index\n \"Returns a map of the distinct values of ks in the xrel mapped to a\\n  set of the maps in xrel with the corresponding values of ks.\"\n [xrel ks]\n (reduce\n  (fn\n   [m x]\n   (let [ik (select-keys x ks)] (assoc m ik (conj (get m ik #{}) x))))\n  {}\n  xrel))\n"} {:sym subset?, :meta {:doc "Is set1 a subset of set2?", :arglists ([set1 set2])}, :source "(defn\n subset?\n \"Is set1 a subset of set2?\"\n [set1 set2]\n (and\n  (<= (count set1) (count set2))\n  (every? (fn* [p1__44978#] (contains? set2 p1__44978#)) set1)))\n"} {:sym rename, :meta {:doc "Returns a rel of the maps in xrel with the keys in kmap renamed to the vals in kmap", :arglists ([xrel kmap])}, :source "(defn\n rename\n \"Returns a rel of the maps in xrel with the keys in kmap renamed to the vals in kmap\"\n [xrel kmap]\n (set (map (fn* [p1__44973#] (rename-keys p1__44973# kmap)) xrel)))\n"} {:sym rename-keys, :meta {:doc "Returns the map with the keys in kmap renamed to the vals in kmap", :arglists ([map kmap])}, :source "(defn\n rename-keys\n \"Returns the map with the keys in kmap renamed to the vals in kmap\"\n [map kmap]\n (reduce\n  (fn\n   [m [old new]]\n   (if (contains? map old) (assoc m new (get map old)) m))\n  (apply dissoc map (keys kmap))\n  kmap))\n"} {:sym project, :meta {:doc "Returns a rel of the elements of xrel with only the keys in ks", :arglists ([xrel ks])}, :source "(defn\n project\n \"Returns a rel of the elements of xrel with only the keys in ks\"\n [xrel ks]\n (set (map (fn* [p1__44972#] (select-keys p1__44972# ks)) xrel)))\n"} {:sym difference, :meta {:doc "Return a set that is the first set without elements of the remaining sets", :arglists [[s1] [s1 s2] [s1 s2 & sets]]}, :source "(defn\n difference\n \"Return a set that is the first set without elements of the remaining sets\"\n ([s1] s1)\n ([s1 s2]\n  (if\n   (< (count s1) (count s2))\n   (reduce\n    (fn\n     [result item]\n     (if (contains? s2 item) (disj result item) result))\n    s1\n    s1)\n   (reduce disj s1 s2)))\n ([s1 s2 & sets] (reduce difference s1 (conj sets s2))))\n"}), odoyle.rum ({:sym *matches*, :meta {:doc "If bound to a volatile containing a hash map,\n            matches triggered by `fire-rules` will be stored in it\n            rather than in the atom created by `ruleset`.\n            This is important when modifying the session in a server-side\n            route because it ensures the modifications will be local\n            and will not affect other connections happening simultaneously.\n            Do not use it from clojurescript."}, :source "(def *matches* nil)\n"} {:sym atom, :meta {:doc "Returns an atom that can hold local state for a component.\n  Only works in a :then block.", :arglists ([initial-value])}, :source "(defn\n atom\n \"Returns an atom that can hold local state for a component.\\n  Only works in a :then block.\"\n [initial-value]\n (when-not\n  *local-pointer*\n  (throw (ex-info \"You cannot call `atom` here\" {})))\n (when-not\n  @*can-return-atom?*\n  (throw\n   (ex-info \"You can only call `atom` once in each :then block\" {})))\n (vreset! *can-return-atom?* false)\n (if-let\n  [*local @*local-pointer*]\n  *local\n  (let\n   [*local (reset! *local-pointer* (clojure.core/atom initial-value))]\n   (when-let\n    [cmp *react-component*]\n    (add-watch\n     *local\n     :odoyle.rum/local\n     (fn [_ _ p n] (when (not= p n) (.forceUpdate cmp)))))\n   *local)))\n"} {:sym prop, :meta {:doc "Returns the prop sent to the component. Only works in a :then block.", :arglists ([])}, :source "(defn\n prop\n \"Returns the prop sent to the component. Only works in a :then block.\"\n []\n (when-not\n  *local-pointer*\n  (throw (ex-info \"You cannot call `prop` here\" {})))\n *prop*)\n"} {:sym reactive, :meta {:doc "A rum mixin that makes the associated component react to changes from\n  the session and the local atom.", :arglists ([rule-key *match])}, :source "(defn\n reactive\n \"A rum mixin that makes the associated component react to changes from\\n  the session and the local atom.\"\n [rule-key *match]\n {:init\n  (fn\n   [state props]\n   (->\n    state\n    (assoc :odoyle.rum/local-pointer (clojure.core/atom nil))\n    #?(:cljs (assoc :odoyle.rum/global-key (let [global-key (random-uuid) cmp (:rum/react-component state)] (add-watch *match global-key (fn [_ _ p n] (when (not= p n) (.forceUpdate cmp)))) global-key))))),\n  :wrap-render\n  (fn\n   [render-fn]\n   (fn\n    [state]\n    (binding\n     [*local-pointer*\n      (:odoyle.rum/local-pointer state)\n      *react-component*\n      (:rum/react-component state)\n      *can-return-atom?*\n      (volatile! true)\n      *prop*\n      (first (:rum/args state))\n      o/*match*\n      #?(:cljs (clojure.core/deref *match) :clj (or (some-> *matches* deref rule-key) (clojure.core/deref *match)))]\n     (render-fn state)))),\n  :will-unmount\n  (fn\n   [state]\n   #?(:cljs (remove-watch *match (:odoyle.rum/global-key state)))\n   (when-let\n    [*local @(:odoyle.rum/local-pointer state)]\n    (remove-watch *local :odoyle.rum/local))\n   (dissoc state :odoyle.rum/local-pointer))})\n"}), paren-soup.instarepl ({:sym *web-worker-path*, :meta {}, :source "(def *web-worker-path* nil)\n"} {:sym form->serializable, :meta {:doc nil, :arglists ([form])}, :source "(defn\n form->serializable\n [form]\n (if\n  (instance? js/Error form)\n  (array\n   (or (some-> form .-cause .-message) (.-message form))\n   (.-fileName form)\n   (.-lineNumber form))\n  (pr-str form)))\n"} {:sym results->html, :meta {:doc "Returns HTML for the given eval results.", :arglists ([results locations limit])}, :source "(defn\n results->html\n \"Returns HTML for the given eval results.\"\n [results locations limit]\n (loop\n  [i 0 evals (transient [])]\n  (let\n   [res (get results i) {:keys [top height]} (get locations i)]\n   (if\n    (and res top height)\n    (recur\n     (inc i)\n     (conj!\n      evals\n      (format\n       \"<div class='%s' style='top: %spx; height: %spx; min-height: %spx'>%s</div>\"\n       (if (array? res) \"result error\" \"result\")\n       top\n       height\n       height\n       (some->\n        (if (array? res) (first res) res)\n        (truncate limit)\n        hs/escape-html-str))))\n    (join (persistent! evals))))))\n"} {:sym use-web-worker!, :meta {:doc nil, :arglists ([])}, :source "(defn\n use-web-worker!\n []\n (set! *web-worker-path* \"paren-soup-compiler.js\"))\n"} {:sym elem?, :meta {}, :source "(def elem? (fn* [p1__45032#] (instance? js/Element p1__45032#)))\n"} {:sym collection->content, :meta {:doc nil, :arglists ([elem])}, :source "(defn\n collection->content\n [elem]\n (loop\n  [e elem content (.-textContent elem)]\n  (if-let\n   [prev (.-previousSibling e)]\n   (if\n    (text-node? prev)\n    (recur prev (str (.-textContent prev) content))\n    content)\n   content)))\n"} {:sym truncate, :meta {:doc nil, :arglists ([text limit])}, :source "(defn\n truncate\n [text limit]\n (if (> (count text) limit) (str (subs text 0 limit) \"...\") text))\n"} {:sym create-compiler-fn, :meta {:doc nil, :arglists ([opts])}, :source "(defn\n create-compiler-fn\n [opts]\n (if-let\n  [worker (some-> *web-worker-path* js/Worker.)]\n  (fn\n   [coll receive-fn]\n   (set!\n    (.-onmessage worker)\n    (fn* [p1__45033#] (receive-fn (vec (.-data p1__45033#)))))\n   (.postMessage worker (into-array coll)))\n  (fn\n   [coll receive-fn]\n   (es/code->results\n    coll\n    (fn\n     [results]\n     (receive-fn (into-array (mapv form->serializable results))))\n    opts))))\n"} {:sym get-collections, :meta {:doc "Returns collections from the given DOM node.", :arglists ([element])}, :source "(defn\n get-collections\n \"Returns collections from the given DOM node.\"\n [element]\n (vec\n  (for\n   [elem\n    (-> element .-children array-seq)\n    :let\n    [classes (.-classList elem)]\n    :when\n    (or (.contains classes \"collection\") (.contains classes \"symbol\"))]\n   elem)))\n"} {:sym elems->locations, :meta {:doc "Returns the location of each elem.", :arglists ([elems top-offset])}, :source "(defn\n elems->locations\n \"Returns the location of each elem.\"\n [elems top-offset]\n (loop\n  [i 0 locations (transient [])]\n  (if-let\n   [elem (get elems i)]\n   (let\n    [top\n     (-> elem .-offsetTop (- top-offset))\n     height\n     (-> elem .-offsetHeight)]\n    (recur (inc i) (conj! locations {:top top, :height height})))\n   (persistent! locations))))\n"}), cljs.pprint ({:sym pprint, :meta {:doc nil, :arglists [[object] [object writer]]}, :source "(defn\n pprint\n ([object]\n  (let\n   [sb (StringBuffer.)]\n   (binding\n    [*out* (StringBufferWriter. sb)]\n    (pprint object *out*)\n    (string-print (str sb)))))\n ([object writer]\n  (with-pretty-writer\n   writer\n   (binding [*print-pretty* true] (write-out object))\n   (if (not (= 0 (get-column *out*))) (-write *out* \\newline)))))\n"} {:sym get-pretty-writer, :meta {:doc "Returns the IWriter passed in wrapped in a pretty writer proxy, unless it's\nalready a pretty writer. Generally, it is unnecessary to call this function, since pprint,\nwrite, and cl-format all call it if they need to. However if you want the state to be\npreserved across calls, you will want to wrap them with this.\n\nFor example, when you want to generate column-aware output with multiple calls to cl-format,\ndo it like in this example:\n\n    (defn print-table [aseq column-width]\n      (binding [*out* (get-pretty-writer *out*)]\n        (doseq [row aseq]\n          (doseq [col row]\n            (cl-format true \"~4D~7,vT\" col column-width))\n          (prn))))\n\nNow when you run:\n\n    user> (print-table (map #(vector % (* % %) (* % % %)) (range 1 11)) 8)\n\nIt prints a table of squares and cubes for the numbers from 1 to 10:\n\n       1      1       1\n       2      4       8\n       3      9      27\n       4     16      64\n       5     25     125\n       6     36     216\n       7     49     343\n       8     64     512\n       9     81     729\n      10    100    1000", :arglists ([writer])}, :source "(defn\n get-pretty-writer\n \"Returns the IWriter passed in wrapped in a pretty writer proxy, unless it's\\nalready a pretty writer. Generally, it is unnecessary to call this function, since pprint,\\nwrite, and cl-format all call it if they need to. However if you want the state to be\\npreserved across calls, you will want to wrap them with this.\\n\\nFor example, when you want to generate column-aware output with multiple calls to cl-format,\\ndo it like in this example:\\n\\n    (defn print-table [aseq column-width]\\n      (binding [*out* (get-pretty-writer *out*)]\\n        (doseq [row aseq]\\n          (doseq [col row]\\n            (cl-format true \\\"~4D~7,vT\\\" col column-width))\\n          (prn))))\\n\\nNow when you run:\\n\\n    user> (print-table (map #(vector % (* % %) (* % % %)) (range 1 11)) 8)\\n\\nIt prints a table of squares and cubes for the numbers from 1 to 10:\\n\\n       1      1       1\\n       2      4       8\\n       3      9      27\\n       4     16      64\\n       5     25     125\\n       6     36     216\\n       7     49     343\\n       8     64     512\\n       9     81     729\\n      10    100    1000\"\n [writer]\n (if\n  (pretty-writer? writer)\n  writer\n  (pretty-writer writer *print-right-margin* *print-miser-width*)))\n"} {:sym *print-suppress-namespaces*, :meta {:doc "Don't print namespaces with symbols. This is particularly useful when\npretty printing the results of macro expansions"}, :source "(def *print-suppress-namespaces* nil)\n"} {:sym char-code, :meta {:doc "Convert char to int", :arglists ([c])}, :source "(defn\n char-code\n \"Convert char to int\"\n [c]\n (cond\n  (number? c)\n  c\n  (and (string? c) (== (.-length c) 1))\n  (.charCodeAt c 0)\n  :else\n  (throw (js/Error. \"Argument to char must be a character or number\"))))\n"} {:sym *print-pretty*, :meta {:doc "Bind to true if you want write to use pretty printing"}, :source "(def *print-pretty* true)\n"} {:sym *print-pprint-dispatch*, :meta {:doc "The pretty print dispatch function. Use with-pprint-dispatch or\nset-pprint-dispatch to modify."}, :source "(defonce *print-pprint-dispatch* nil)\n"} {:sym pprint-newline, :meta {:doc "Print a conditional newline to a pretty printing stream. kind specifies if the\n  newline is :linear, :miser, :fill, or :mandatory.\n\n  This function is intended for use when writing custom dispatch functions.\n\n  Output is sent to *out* which must be a pretty printing writer.", :arglists ([kind])}, :source "(defn\n pprint-newline\n \"Print a conditional newline to a pretty printing stream. kind specifies if the\\n  newline is :linear, :miser, :fill, or :mandatory.\\n\\n  This function is intended for use when writing custom dispatch functions.\\n\\n  Output is sent to *out* which must be a pretty printing writer.\"\n [kind]\n (check-enumerated-arg kind #{:mandatory :miser :fill :linear})\n (nl *out* kind))\n"} {:sym float?, :meta {:doc "Returns true if n is an float.", :arglists ([n])}, :source "(defn\n float?\n \"Returns true if n is an float.\"\n [n]\n (and\n  (number? n)\n  (not (js/isNaN n))\n  (not (identical? n js/Infinity))\n  (not (== (js/parseFloat n) (js/parseInt n 10)))))\n"} {:sym pprint-tab, :meta {:doc "Tab at this point in the pretty printing stream. kind specifies whether the tab\nis :line, :section, :line-relative, or :section-relative.\n\nColnum and colinc specify the target column and the increment to move the target\nforward if the output is already past the original target.\n\nThis function is intended for use when writing custom dispatch functions.\n\nOutput is sent to *out* which must be a pretty printing writer.\n\nTHIS FUNCTION IS NOT YET IMPLEMENTED.", :arglists ([kind colnum colinc])}, :source "(defn\n pprint-tab\n \"Tab at this point in the pretty printing stream. kind specifies whether the tab\\nis :line, :section, :line-relative, or :section-relative.\\n\\nColnum and colinc specify the target column and the increment to move the target\\nforward if the output is already past the original target.\\n\\nThis function is intended for use when writing custom dispatch functions.\\n\\nOutput is sent to *out* which must be a pretty printing writer.\\n\\nTHIS FUNCTION IS NOT YET IMPLEMENTED.\"\n {:added \"1.2\"}\n [kind colnum colinc]\n (check-enumerated-arg\n  kind\n  #{:section :line :line-relative :section-relative})\n (throw (js/Error. \"pprint-tab is not yet implemented\")))\n"} {:sym pprint-set, :meta {}, :source "(def pprint-set (formatter-out \"~<#{~;~@{~w~^ ~:_~}~;}~:>\"))\n"} {:sym print-table, :meta {:doc "Prints a collection of maps in a textual table. Prints table headings\n   ks, and then a line of output for each row, corresponding to the keys\n   in ks. If ks are not specified, use the keys of the first item in rows.", :arglists [[ks rows] [rows]]}, :source "(defn\n print-table\n \"Prints a collection of maps in a textual table. Prints table headings\\n   ks, and then a line of output for each row, corresponding to the keys\\n   in ks. If ks are not specified, use the keys of the first item in rows.\"\n {:added \"1.3\"}\n ([ks rows]\n  (when\n   (seq rows)\n   (let\n    [widths\n     (map\n      (fn\n       [k]\n       (apply\n        max\n        (count (str k))\n        (map\n         (fn* [p1__45395#] (count (str (get p1__45395# k))))\n         rows)))\n      ks)\n     spacers\n     (map\n      (fn* [p1__45396#] (apply str (repeat p1__45396# \"-\")))\n      widths)\n     fmt-row\n     (fn\n      [leader divider trailer row]\n      (str\n       leader\n       (apply\n        str\n        (interpose\n         divider\n         (for\n          [[col width]\n           (map\n            vector\n            (map (fn* [p1__45397#] (get row p1__45397#)) ks)\n            widths)]\n          (add-padding width (str col)))))\n       trailer))]\n    (cljs.core/println)\n    (cljs.core/println (fmt-row \"| \" \" | \" \" |\" (zipmap ks ks)))\n    (cljs.core/println (fmt-row \"|-\" \"-+-\" \"-|\" (zipmap ks spacers)))\n    (doseq\n     [row rows]\n     (cljs.core/println (fmt-row \"| \" \" | \" \" |\" row))))))\n ([rows] (print-table (keys (first rows)) rows)))\n"} {:sym set-pprint-dispatch, :meta {:doc nil, :arglists ([function])}, :source "(defn\n set-pprint-dispatch\n [function]\n (set! *print-pprint-dispatch* function)\n nil)\n"} {:sym fresh-line, :meta {:doc "Make a newline if *out* is not already at the beginning of the line. If *out* is\nnot a pretty writer (which keeps track of columns), this function always outputs a newline.", :arglists ([])}, :source "(defn\n fresh-line\n \"Make a newline if *out* is not already at the beginning of the line. If *out* is\\nnot a pretty writer (which keeps track of columns), this function always outputs a newline.\"\n []\n (if\n  (satisfies? IDeref *out*)\n  (if (not (= 0 (get-column (:base @@*out*)))) (prn))\n  (prn)))\n"} {:sym pprint-indent, :meta {:doc "Create an indent at this point in the pretty printing stream. This defines how\nfollowing lines are indented. relative-to can be either :block or :current depending\nwhether the indent should be computed relative to the start of the logical block or\nthe current column position. n is an offset.\n\nThis function is intended for use when writing custom dispatch functions.\n\nOutput is sent to *out* which must be a pretty printing writer.", :arglists ([relative-to n])}, :source "(defn\n pprint-indent\n \"Create an indent at this point in the pretty printing stream. This defines how\\nfollowing lines are indented. relative-to can be either :block or :current depending\\nwhether the indent should be computed relative to the start of the logical block or\\nthe current column position. n is an offset.\\n\\nThis function is intended for use when writing custom dispatch functions.\\n\\nOutput is sent to *out* which must be a pretty printing writer.\"\n [relative-to n]\n (check-enumerated-arg relative-to #{:block :current})\n (indent *out* relative-to n))\n"} {:sym *print-radix*, :meta {:doc "Print a radix specifier in front of integers and rationals. If *print-base* is 2, 8,\nor 16, then the radix specifier used is #b, #o, or #x, respectively. Otherwise the\nradix specifier is in the form #XXr where XX is the decimal value of *print-base* "}, :source "(def *print-radix* nil)\n"} {:sym IPrettyFlush, :meta {:doc nil}, :methods (-ppflush)} {:sym cl-format, :meta {:doc "An implementation of a Common Lisp compatible format function. cl-format formats its\narguments to an output stream or string based on the format control string given. It\nsupports sophisticated formatting of structured data.\n\nWriter satisfies IWriter, true to output via *print-fn* or nil to output\nto a string, format-in is the format control string and the remaining arguments\nare the data to be formatted.\n\nThe format control string is a string to be output with embedded 'format directives'\ndescribing how to format the various arguments passed in.\n\nIf writer is nil, cl-format returns the formatted result string. Otherwise, cl-format\nreturns nil.\n\nFor example:\n (let [results [46 38 22]]\n        (cl-format true \"There ~[are~;is~:;are~]~:* ~d result~:p: ~{~d~^, ~}~%\"\n                   (count results) results))\n\nPrints via *print-fn*:\n There are 3 results: 46, 38, 22\n\nDetailed documentation on format control strings is available in the \"Common Lisp the\nLanguage, 2nd edition\", Chapter 22 (available online at:\nhttp://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000)\nand in the Common Lisp HyperSpec at\nhttp://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm", :arglists ([writer format-in & args])}, :source "(defn\n cl-format\n \"An implementation of a Common Lisp compatible format function. cl-format formats its\\narguments to an output stream or string based on the format control string given. It\\nsupports sophisticated formatting of structured data.\\n\\nWriter satisfies IWriter, true to output via *print-fn* or nil to output\\nto a string, format-in is the format control string and the remaining arguments\\nare the data to be formatted.\\n\\nThe format control string is a string to be output with embedded 'format directives'\\ndescribing how to format the various arguments passed in.\\n\\nIf writer is nil, cl-format returns the formatted result string. Otherwise, cl-format\\nreturns nil.\\n\\nFor example:\\n (let [results [46 38 22]]\\n        (cl-format true \\\"There ~[are~;is~:;are~]~:* ~d result~:p: ~{~d~^, ~}~%\\\"\\n                   (count results) results))\\n\\nPrints via *print-fn*:\\n There are 3 results: 46, 38, 22\\n\\nDetailed documentation on format control strings is available in the \\\"Common Lisp the\\nLanguage, 2nd edition\\\", Chapter 22 (available online at:\\nhttp://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000)\\nand in the Common Lisp HyperSpec at\\nhttp://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm\"\n {:see-also\n  [[\"http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node200.html#SECTION002633000000000000000\"\n    \"Common Lisp the Language\"]\n   [\"http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm\"\n    \"Common Lisp HyperSpec\"]]}\n [writer format-in & args]\n (let\n  [compiled-format\n   (if (string? format-in) (compile-format format-in) format-in)\n   navigator\n   (init-navigator args)]\n  (execute-format writer compiled-format navigator)))\n"} {:sym *print-miser-width*, :meta {:doc "The column at which to enter miser style. Depending on the dispatch table,\nmiser style add newlines in more places to try to keep lines short allowing for further\nlevels of nesting."}, :source "(def *print-miser-width* 40)\n"} {:sym write, :meta {:doc "Write an object subject to the current bindings of the printer control variables.\nUse the kw-args argument to override individual variables for this call (and any\nrecursive calls). Returns the string result if :stream is nil or nil otherwise.\n\nThe following keyword arguments can be passed with values:\n  Keyword              Meaning                              Default value\n  :stream              Writer for output or nil             true (indicates *out*)\n  :base                Base to use for writing rationals    Current value of *print-base*\n  :circle*             If true, mark circular structures    Current value of *print-circle*\n  :length              Maximum elements to show in sublists Current value of *print-length*\n  :level               Maximum depth                        Current value of *print-level*\n  :lines*              Maximum lines of output              Current value of *print-lines*\n  :miser-width         Width to enter miser mode            Current value of *print-miser-width*\n  :dispatch            The pretty print dispatch function   Current value of *print-pprint-dispatch*\n  :pretty              If true, do pretty printing          Current value of *print-pretty*\n  :radix               If true, prepend a radix specifier   Current value of *print-radix*\n  :readably*           If true, print readably              Current value of *print-readably*\n  :right-margin        The column for the right margin      Current value of *print-right-margin*\n  :suppress-namespaces If true, no namespaces in symbols    Current value of *print-suppress-namespaces*\n\n  * = not yet supported\n", :arglists ([object & kw-args])}, :source "(defn\n write\n \"Write an object subject to the current bindings of the printer control variables.\\nUse the kw-args argument to override individual variables for this call (and any\\nrecursive calls). Returns the string result if :stream is nil or nil otherwise.\\n\\nThe following keyword arguments can be passed with values:\\n  Keyword              Meaning                              Default value\\n  :stream              Writer for output or nil             true (indicates *out*)\\n  :base                Base to use for writing rationals    Current value of *print-base*\\n  :circle*             If true, mark circular structures    Current value of *print-circle*\\n  :length              Maximum elements to show in sublists Current value of *print-length*\\n  :level               Maximum depth                        Current value of *print-level*\\n  :lines*              Maximum lines of output              Current value of *print-lines*\\n  :miser-width         Width to enter miser mode            Current value of *print-miser-width*\\n  :dispatch            The pretty print dispatch function   Current value of *print-pprint-dispatch*\\n  :pretty              If true, do pretty printing          Current value of *print-pretty*\\n  :radix               If true, prepend a radix specifier   Current value of *print-radix*\\n  :readably*           If true, print readably              Current value of *print-readably*\\n  :right-margin        The column for the right margin      Current value of *print-right-margin*\\n  :suppress-namespaces If true, no namespaces in symbols    Current value of *print-suppress-namespaces*\\n\\n  * = not yet supported\\n\"\n [object & kw-args]\n (let\n  [options (merge {:stream true} (apply hash-map kw-args))]\n  (binding\n   [cljs.pprint/*print-base*\n    (:base options cljs.pprint/*print-base*)\n    cljs.pprint/*print-circle*\n    (:circle options cljs.pprint/*print-circle*)\n    cljs.core/*print-length*\n    (:length options cljs.core/*print-length*)\n    cljs.core/*print-level*\n    (:level options cljs.core/*print-level*)\n    cljs.pprint/*print-lines*\n    (:lines options cljs.pprint/*print-lines*)\n    cljs.pprint/*print-miser-width*\n    (:miser-width options cljs.pprint/*print-miser-width*)\n    cljs.pprint/*print-pprint-dispatch*\n    (:dispatch options cljs.pprint/*print-pprint-dispatch*)\n    cljs.pprint/*print-pretty*\n    (:pretty options cljs.pprint/*print-pretty*)\n    cljs.pprint/*print-radix*\n    (:radix options cljs.pprint/*print-radix*)\n    cljs.core/*print-readably*\n    (:readably options cljs.core/*print-readably*)\n    cljs.pprint/*print-right-margin*\n    (:right-margin options cljs.pprint/*print-right-margin*)\n    cljs.pprint/*print-suppress-namespaces*\n    (:suppress-namespaces\n     options\n     cljs.pprint/*print-suppress-namespaces*)]\n   (binding\n    []\n    (let\n     [sb\n      (StringBuffer.)\n      optval\n      (if (contains? options :stream) (:stream options) true)\n      base-writer\n      (if\n       (or (true? optval) (nil? optval))\n       (StringBufferWriter. sb)\n       optval)]\n     (if\n      *print-pretty*\n      (with-pretty-writer base-writer (write-out object))\n      (binding [*out* base-writer] (pr object)))\n     (if (true? optval) (string-print (str sb)))\n     (if (nil? optval) (str sb)))))))\n"} {:sym -ppflush, :meta {:doc nil, :arglists ([pp])}, :protocol IPrettyFlush} {:sym *print-right-margin*, :meta {:doc "Pretty printing will try to avoid anything going beyond this column.\nSet it to nil to have pprint let the line be arbitrarily long. This will ignore all\nnon-mandatory newlines."}, :source "(def *print-right-margin* 72)\n"} {:sym write-out, :meta {:doc "Write an object to *out* subject to the current bindings of the printer control\nvariables. Use the kw-args argument to override individual variables for this call (and\nany recursive calls).\n\n*out* must be a PrettyWriter if pretty printing is enabled. This is the responsibility\nof the caller.\n\nThis method is primarily intended for use by pretty print dispatch functions that\nalready know that the pretty printer will have set up their environment appropriately.\nNormal library clients should use the standard \"write\" interface. ", :arglists ([object])}, :source "(defn\n write-out\n \"Write an object to *out* subject to the current bindings of the printer control\\nvariables. Use the kw-args argument to override individual variables for this call (and\\nany recursive calls).\\n\\n*out* must be a PrettyWriter if pretty printing is enabled. This is the responsibility\\nof the caller.\\n\\nThis method is primarily intended for use by pretty print dispatch functions that\\nalready know that the pretty printer will have set up their environment appropriately.\\nNormal library clients should use the standard \\\"write\\\" interface. \"\n [object]\n (let\n  [length-reached\n   (and\n    *current-length*\n    *print-length*\n    (>= *current-length* *print-length*))]\n  (if-not\n   *print-pretty*\n   (pr object)\n   (if\n    length-reached\n    (-write *out* \"...\")\n    (do\n     (if\n      *current-length*\n      (set! *current-length* (inc *current-length*)))\n     (*print-pprint-dispatch* object))))\n  length-reached))\n"} {:sym *print-base*, :meta {:doc "The base to use for printing integers and rationals."}, :source "(def *print-base* 10)\n"}), iglu.core ({:sym iglu->glsl, :meta {:doc "Converts an iglu map into a GLSL string. The second arity is only for backwards\n  compatibility and should not be used.", :arglists [[shader] [shader-type shader]]}, :source "(defn\n iglu->glsl\n \"Converts an iglu map into a GLSL string. The second arity is only for backwards\\n  compatibility and should not be used.\"\n ([shader] (-> shader parse/parse glsl/iglu->glsl))\n ([shader-type shader]\n  (->\n   (reduce-kv\n    (fn\n     [shader old-key new-key]\n     (let\n      [combined-vals (merge (new-key shader) (old-key shader))]\n      (cond->\n       (dissoc shader old-key)\n       (seq combined-vals)\n       (assoc new-key combined-vals))))\n    shader\n    (case\n     shader-type\n     :vertex\n     {:attributes :inputs, :varyings :outputs}\n     :fragment\n     {:varyings :inputs}))\n   parse/parse\n   glsl/iglu->glsl)))\n"}), rum.util ({:sym collect, :meta {:doc nil, :arglists ([key mixins])}, :source "(defn collect [key mixins] (into [] (keep (fn [m] (get m key))) mixins))\n"} {:sym collect*, :meta {:doc nil, :arglists ([keys mixins])}, :source "(defn\n collect*\n [keys mixins]\n (into [] (mapcat (fn [m] (keep (fn [k] (get m k)) keys))) mixins))\n"} {:sym call-all, :meta {:doc nil, :arglists ([state fns & args])}, :source "(defn\n call-all\n [state fns & args]\n (reduce (fn [state fn] (apply fn state args)) state fns))\n"}), play-cljc.gl.example-data ({:sym advanced-vertex-shader, :meta {}, :source "(def\n advanced-vertex-shader\n {:uniforms\n  '{u_worldViewProjection mat4,\n    u_lightWorldPos vec3,\n    u_world mat4,\n    u_viewInverse mat4,\n    u_worldInverseTranspose mat4},\n  :inputs '{a_position vec4, a_normal vec3, a_texCoord vec2},\n  :outputs\n  '{v_position vec4,\n    v_texCoord vec2,\n    v_normal vec3,\n    v_surfaceToLight vec3,\n    v_surfaceToView vec3},\n  :signatures '{main ([] void)},\n  :functions\n  '{main\n    ([]\n     (= v_texCoord a_texCoord)\n     (= v_position (* u_worldViewProjection a_position))\n     (= v_normal (.xyz (* u_worldInverseTranspose (vec4 a_normal 0))))\n     (=\n      v_surfaceToLight\n      (- u_lightWorldPos (.xyz (* u_world a_position))))\n     (=\n      v_surfaceToView\n      (.xyz (- [u_viewInverse 3] (* u_world a_position))))\n     (= gl_Position v_position))}})\n"} {:sym f-3d, :meta {}, :source "(def\n f-3d\n [0\n  0\n  0\n  0\n  150\n  0\n  30\n  0\n  0\n  0\n  150\n  0\n  30\n  150\n  0\n  30\n  0\n  0\n  30\n  0\n  0\n  30\n  30\n  0\n  100\n  0\n  0\n  30\n  30\n  0\n  100\n  30\n  0\n  100\n  0\n  0\n  30\n  60\n  0\n  30\n  90\n  0\n  67\n  60\n  0\n  30\n  90\n  0\n  67\n  90\n  0\n  67\n  60\n  0\n  0\n  0\n  30\n  30\n  0\n  30\n  0\n  150\n  30\n  0\n  150\n  30\n  30\n  0\n  30\n  30\n  150\n  30\n  30\n  0\n  30\n  100\n  0\n  30\n  30\n  30\n  30\n  30\n  30\n  30\n  100\n  0\n  30\n  100\n  30\n  30\n  30\n  60\n  30\n  67\n  60\n  30\n  30\n  90\n  30\n  30\n  90\n  30\n  67\n  60\n  30\n  67\n  90\n  30\n  0\n  0\n  0\n  100\n  0\n  0\n  100\n  0\n  30\n  0\n  0\n  0\n  100\n  0\n  30\n  0\n  0\n  30\n  100\n  0\n  0\n  100\n  30\n  0\n  100\n  30\n  30\n  100\n  0\n  0\n  100\n  30\n  30\n  100\n  0\n  30\n  30\n  30\n  0\n  30\n  30\n  30\n  100\n  30\n  30\n  30\n  30\n  0\n  100\n  30\n  30\n  100\n  30\n  0\n  30\n  30\n  0\n  30\n  60\n  30\n  30\n  30\n  30\n  30\n  30\n  0\n  30\n  60\n  0\n  30\n  60\n  30\n  30\n  60\n  0\n  67\n  60\n  30\n  30\n  60\n  30\n  30\n  60\n  0\n  67\n  60\n  0\n  67\n  60\n  30\n  67\n  60\n  0\n  67\n  90\n  30\n  67\n  60\n  30\n  67\n  60\n  0\n  67\n  90\n  0\n  67\n  90\n  30\n  30\n  90\n  0\n  30\n  90\n  30\n  67\n  90\n  30\n  30\n  90\n  0\n  67\n  90\n  30\n  67\n  90\n  0\n  30\n  90\n  0\n  30\n  150\n  30\n  30\n  90\n  30\n  30\n  90\n  0\n  30\n  150\n  0\n  30\n  150\n  30\n  0\n  150\n  0\n  0\n  150\n  30\n  30\n  150\n  30\n  0\n  150\n  0\n  30\n  150\n  30\n  30\n  150\n  0\n  0\n  0\n  0\n  0\n  0\n  30\n  0\n  150\n  30\n  0\n  0\n  0\n  0\n  150\n  30\n  0\n  150\n  0])\n"} {:sym texture-fragment-shader, :meta {}, :source "(def\n texture-fragment-shader\n {:precision \"mediump float\",\n  :uniforms '{u_texture sampler2D},\n  :inputs '{v_texcoord vec2},\n  :outputs '{outColor vec4},\n  :signatures '{main ([] void)},\n  :functions '{main ([] (= outColor (texture u_texture v_texcoord)))}})\n"} {:sym f-2d, :meta {}, :source "(def\n f-2d\n [0\n  0\n  30\n  0\n  0\n  150\n  0\n  150\n  30\n  0\n  30\n  150\n  30\n  0\n  100\n  0\n  30\n  30\n  30\n  30\n  100\n  0\n  100\n  30\n  30\n  60\n  67\n  60\n  30\n  90\n  30\n  90\n  67\n  60\n  67\n  90])\n"} {:sym f-texcoords, :meta {}, :source "(def\n f-texcoords\n [0\n  0\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  1\n  0\n  0\n  0\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  1\n  0\n  0\n  0\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  1\n  0\n  0\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  0\n  1\n  1\n  0\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  0])\n"} {:sym f-3d-colors, :meta {}, :source "(def\n f-3d-colors\n [200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  200\n  70\n  120\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  80\n  70\n  200\n  70\n  200\n  210\n  70\n  200\n  210\n  70\n  200\n  210\n  70\n  200\n  210\n  70\n  200\n  210\n  70\n  200\n  210\n  200\n  200\n  70\n  200\n  200\n  70\n  200\n  200\n  70\n  200\n  200\n  70\n  200\n  200\n  70\n  200\n  200\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  160\n  70\n  210\n  160\n  70\n  210\n  160\n  70\n  210\n  160\n  70\n  210\n  160\n  70\n  210\n  160\n  70\n  70\n  180\n  210\n  70\n  180\n  210\n  70\n  180\n  210\n  70\n  180\n  210\n  70\n  180\n  210\n  70\n  180\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  100\n  70\n  210\n  76\n  210\n  100\n  76\n  210\n  100\n  76\n  210\n  100\n  76\n  210\n  100\n  76\n  210\n  100\n  76\n  210\n  100\n  140\n  210\n  80\n  140\n  210\n  80\n  140\n  210\n  80\n  140\n  210\n  80\n  140\n  210\n  80\n  140\n  210\n  80\n  90\n  130\n  110\n  90\n  130\n  110\n  90\n  130\n  110\n  90\n  130\n  110\n  90\n  130\n  110\n  90\n  130\n  110\n  160\n  160\n  220\n  160\n  160\n  220\n  160\n  160\n  220\n  160\n  160\n  220\n  160\n  160\n  220\n  160\n  160\n  220])\n"} {:sym texture-vertex-shader, :meta {}, :source "(def\n texture-vertex-shader\n {:inputs '{a_position vec4, a_texcoord vec2},\n  :uniforms '{u_matrix mat4},\n  :outputs '{v_texcoord vec2},\n  :signatures '{main ([] void)},\n  :functions\n  '{main\n    ([]\n     (= gl_Position (* u_matrix a_position))\n     (= v_texcoord a_texcoord))}})\n"} {:sym advanced-fragment-shader, :meta {}, :source "(def\n advanced-fragment-shader\n {:precision \"mediump float\",\n  :uniforms\n  '{u_lightColor vec4,\n    u_color vec4,\n    u_specular vec4,\n    u_shininess float,\n    u_specularFactor float},\n  :inputs\n  '{v_position vec4,\n    v_texCoord vec2,\n    v_normal vec3,\n    v_surfaceToLight vec3,\n    v_surfaceToView vec3},\n  :outputs '{outColor vec4},\n  :signatures '{lit ([float float float] vec4), main ([] void)},\n  :functions\n  '{lit\n    ([l h m]\n     (vec4\n      \"1.0\"\n      (abs l)\n      (? (> l \"0.0\") (pow (max \"0.0\" h) m) \"0.0\")\n      \"1.0\")),\n    main\n    ([]\n     (=vec3 a_normal (normalize v_normal))\n     (=vec3 surfaceToLight (normalize v_surfaceToLight))\n     (=vec3 surfaceToView (normalize v_surfaceToView))\n     (=vec3 halfVector (normalize (+ surfaceToLight surfaceToView)))\n     (=vec4\n      litR\n      (lit\n       (dot a_normal surfaceToLight)\n       (dot a_normal halfVector)\n       u_shininess))\n     (=\n      outColor\n      (vec4\n       (.rgb\n        (*\n         u_lightColor\n         (+\n          (* (.y litR) u_color)\n          (* u_specular (.z litR) u_specularFactor))))\n       1)))}})\n"} {:sym cube-texcoords, :meta {}, :source "(def\n cube-texcoords\n [0\n  0\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  1\n  0\n  0\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  1\n  0\n  0\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  1\n  1\n  0\n  0\n  0\n  1\n  1\n  0\n  0\n  1\n  1\n  1\n  1\n  0\n  0\n  0\n  0\n  1\n  1\n  0\n  1\n  0\n  0\n  1\n  1\n  1])\n"} {:sym cube, :meta {}, :source "(def\n cube\n [-0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  0.5\n  0.5\n  0.5\n  0.5\n  -0.5\n  -0.5\n  0.5\n  0.5\n  0.5\n  0.5\n  0.5\n  0.5\n  0.5\n  -0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  0.5\n  -0.5\n  0.5\n  0.5\n  0.5])\n"}), oakcljs.tools.reader.impl.inspect ({:sym inspect, :meta {:doc "Return a string description of the value supplied.\n   May be the a string version of the value itself (e.g. \"true\")\n   or it may be a description (e.g. \"an instance of Foo\").\n   If truncate is true then return a very terse version of\n   the inspection.", :arglists [[x] [truncate x]]}, :source "(defn\n inspect\n \"Return a string description of the value supplied.\\n   May be the a string version of the value itself (e.g. \\\"true\\\")\\n   or it may be a description (e.g. \\\"an instance of Foo\\\").\\n   If truncate is true then return a very terse version of\\n   the inspection.\"\n ([x] (inspect* false x))\n ([truncate x] (inspect* truncate x)))\n"}), sablono.interpreter ({:sym interpret, :meta {:doc "Interpret a Clojure data structure as a React fn call.", :arglists ([this])}, :protocol IInterpreter} {:sym IInterpreter, :meta {:doc nil}, :methods (interpret)} {:sym controlled-input?, :meta {:doc "Returns true if `type` and `props` are used a controlled input,\n  otherwise false.", :arglists ([type props])}, :source "(defn\n controlled-input?\n \"Returns true if `type` and `props` are used a controlled input,\\n  otherwise false.\"\n [type props]\n #?(:cljs (and (object? props) (case type \"input\" (or (exists? (.-checked props)) (exists? (.-value props))) \"select\" (exists? (.-value props)) \"textarea\" (exists? (.-value props)) false))))\n"} {:sym create-element, :meta {:doc "Create a React element. Returns a JavaScript object when running\n  under ClojureScript, and a om.dom.Element record in Clojure.", :arglists ([type props & children])}, :source "(defn\n create-element\n \"Create a React element. Returns a JavaScript object when running\\n  under ClojureScript, and a om.dom.Element record in Clojure.\"\n [type props & children]\n #?(:clj (dom/element {:attrs props, :children children, :react-key nil, :tag type}) :cljs (apply js/React.createElement (element-class type props) props children)))\n"} {:sym attributes, :meta {:doc nil, :arglists ([attrs])}, :source "(defn\n attributes\n [attrs]\n #?(:clj (-> (util/html-to-dom-attrs attrs) (update :className (fn* [p1__45050#] (some->> p1__45050# (str/join \" \"))))) :cljs (when-let [js-attrs (clj->js (util/html-to-dom-attrs attrs))] (let [class (.-className js-attrs) class (if (array? class) (join \" \" class) class)] (if (blank? class) (js-delete js-attrs \"className\") (set! (.-className js-attrs) class)) js-attrs))))\n"} {:sym element, :meta {:doc "Render an element vector as a HTML element.", :arglists ([element])}, :source "(defn\n element\n \"Render an element vector as a HTML element.\"\n [element]\n (let\n  [[type attrs content] (normalize/element element)]\n  (apply\n   create-element\n   type\n   (attributes attrs)\n   (interpret-seq content))))\n"}), cljs.tools.reader.impl.utils ({:sym reader-conditional, :meta {:doc "Construct a data representation of a reader conditional.\n  If true, splicing? indicates read-cond-splicing.", :arglists ([form splicing?])}, :source "(defn\n reader-conditional\n \"Construct a data representation of a reader conditional.\\n  If true, splicing? indicates read-cond-splicing.\"\n [form splicing?]\n (ReaderConditional. splicing? form))\n"} {:sym whitespace?, :meta {:doc "Checks whether a given character is whitespace", :arglists ([ch])}, :source "(defn\n whitespace?\n \"Checks whether a given character is whitespace\"\n [ch]\n (when-not (nil? ch) (if (identical? ch \\,) true (.test ws-rx ch))))\n"} {:sym char-code, :meta {:doc nil, :arglists ([ch base])}, :source "(defn\n char-code\n [ch base]\n (let [code (js/parseInt ch base)] (if (js/isNaN code) -1 code)))\n"} {:sym last-id, :meta {}, :source "(def last-id (atom 0))\n"} {:sym char, :meta {:doc nil, :arglists ([x])}, :source "(defn char [x] (when-not (nil? x) (cljs.core/char x)))\n"} {:sym numeric?, :meta {:doc "Checks whether a given character is numeric", :arglists ([ch])}, :source "(defn\n numeric?\n \"Checks whether a given character is numeric\"\n [ch]\n (when-not (nil? ch) (gstring/isNumeric ch)))\n"} {:sym second', :meta {:doc nil, :arglists ([[a b]])}, :source "(defn second' [[a b]] (when-not a b))\n"} {:sym desugar-meta, :meta {:doc "Resolves syntactical sugar in metadata", :arglists ([f])}, :source "(defn\n desugar-meta\n \"Resolves syntactical sugar in metadata\"\n [f]\n (cond\n  (keyword? f)\n  {f true}\n  (symbol? f)\n  {:tag f}\n  (string? f)\n  {:tag f}\n  :else\n  f))\n"} {:sym next-id, :meta {:doc nil, :arglists ([])}, :source "(defn next-id [] (swap! last-id inc))\n"} {:sym ex-info?, :meta {:doc nil, :arglists ([ex])}, :source "(defn ex-info? [ex] (instance? cljs.core.ExceptionInfo ex))\n"} {:sym reader-conditional?, :meta {:doc "Return true if the value is the data representation of a reader conditional", :arglists ([value])}, :source "(defn\n reader-conditional?\n \"Return true if the value is the data representation of a reader conditional\"\n [value]\n (instance? ReaderConditional value))\n"} {:sym newline?, :meta {:doc "Checks whether the character is a newline", :arglists ([c])}, :source "(defn\n newline?\n \"Checks whether the character is a newline\"\n [c]\n (or (identical? \\newline c) (identical? \"\\n\" c) (nil? c)))\n"} {:sym namespace-keys, :meta {:doc nil, :arglists ([ns keys])}, :source "(defn\n namespace-keys\n [ns keys]\n (for\n  [key keys]\n  (if\n   (or (symbol? key) (keyword? key))\n   (let\n    [[key-ns key-name]\n     ((juxt namespace name) key)\n     ->key\n     (if (symbol? key) symbol keyword)]\n    (cond\n     (nil? key-ns)\n     (->key ns key-name)\n     (= \"_\" key-ns)\n     (->key key-name)\n     :else\n     key))\n   key)))\n"} {:sym ws-rx, :meta {}, :source "(def ws-rx #\"[\\s]\")\n"}), cljs.tagged-literals ({:sym read-queue, :meta {:doc nil, :arglists ([form])}, :source "(defn\n read-queue\n [form]\n (when-not\n  (vector? form)\n  (throw\n   #?(:clj (RuntimeException. \"Queue literal expects a vector for its elements.\") :cljs (js/Error. \"Queue literal expects a vector for its elements.\"))))\n (list 'cljs.core/into 'cljs.core.PersistentQueue.EMPTY form))\n"} {:sym valid-js-literal-key?, :meta {:doc nil, :arglists ([k])}, :source "(defn\n valid-js-literal-key?\n [k]\n (or (string? k) (and (keyword? k) (nil? (namespace k)))))\n"} {:sym read-js, :meta {:doc nil, :arglists ([form])}, :source "(defn\n read-js\n [form]\n (when-not\n  (or (vector? form) (map? form))\n  (throw\n   #?(:clj (RuntimeException. \"JavaScript literal must use map or vector notation\") :cljs (js/Error. \"JavaScript literal must use map or vector notation\"))))\n (when-not\n  (or (not (map? form)) (every? valid-js-literal-key? (keys form)))\n  (throw\n   #?(:clj (RuntimeException. \"JavaScript literal keys must be strings or unqualified keywords\") :cljs (js/Error. \"JavaScript literal keys must be strings or unqualified keywords\"))))\n (JSValue. form))\n"} {:sym *cljs-data-readers*, :meta {}, :source "(def\n *cljs-data-readers*\n (merge\n  #?(:clj *data-readers*)\n  {'queue read-queue, 'uuid read-uuid, 'inst read-inst, 'js read-js}))\n"}), iglu.glsl ({:sym sort-fns, :meta {:doc nil, :arglists ([functions fn-deps])}, :source "(defn\n sort-fns\n [functions fn-deps]\n (->>\n  functions\n  seq\n  (sort-by\n   first\n   (fn\n    [a b]\n    (cond\n     (contains? (fn-deps a) b)\n     1\n     (contains? (fn-deps b) a)\n     -1\n     :else\n     0)))))\n"} {:sym ->in, :meta {:doc nil, :arglists ([[name type]])}, :source "(defn ->in [[name type]] (str \"in \" (parse-type type) \" \" name))\n"} {:sym iglu->glsl, :meta {:doc nil, :arglists ([{:keys [version precision uniforms attributes varyings inputs outputs signatures functions fn-deps], :as shader}])}, :source "(defn\n iglu->glsl\n [{:keys\n   [version\n    precision\n    uniforms\n    attributes\n    varyings\n    inputs\n    outputs\n    signatures\n    functions\n    fn-deps],\n   :as shader}]\n (let\n  [[fn-kind fn-val] functions]\n  (->>\n   (cond->\n    []\n    version\n    (conj (str \"#version \" version))\n    precision\n    (conj (str \"precision \" precision))\n    uniforms\n    (into (mapv ->uniform uniforms))\n    attributes\n    (into (mapv ->attribute attributes))\n    varyings\n    (into (mapv ->varying varyings))\n    inputs\n    (into (mapv ->in inputs))\n    outputs\n    (into (mapv ->out outputs))\n    (= fn-kind :iglu)\n    (into\n     (mapv (partial ->function signatures) (sort-fns fn-val fn-deps))))\n   (reduce (partial stringify 0) [])\n   (str/join \\newline)\n   ((fn\n     [output]\n     (if (= fn-kind :glsl) (str output \\newline fn-val) output))))))\n"} {:sym indent, :meta {:doc nil, :arglists ([level line])}, :source "(defn\n indent\n [level line]\n (str (str/join (repeat (* level 2) \" \")) line))\n"} {:sym ->function, :meta {:doc nil, :arglists ([signatures [name {:keys [args body]}]])}, :source "(defn\n ->function\n [signatures [name {:keys [args body]}]]\n (if-let\n  [{:keys [in out]} (get signatures name)]\n  (let\n   [_\n    (when\n     (not= (count in) (count args))\n     (throw\n      (ex-info\n       \"Function has args signature of a different length than its args definition\"\n       {:fn name, :signature in, :definition args})))\n    args-list\n    (str/join \", \" (mapv (fn [type name] (str type \" \" name)) in args))\n    signature\n    (str out \" \" name \"(\" args-list \")\")]\n   (into\n    [signature]\n    (let\n     [body-lines (mapv ->statement body)]\n     (if\n      (= 'void out)\n      body-lines\n      (conj\n       (vec (butlast body-lines))\n       (str \"return \" (last body-lines)))))))\n  (throw\n   (ex-info \"Nothing found in :signatures for function\" {:fn name}))))\n"} {:sym ->uniform, :meta {:doc nil, :arglists ([[name type]])}, :source "(defn\n ->uniform\n [[name type]]\n (str \"uniform \" (parse-type type) \" \" name))\n"} {:sym stringify, :meta {:doc nil, :arglists ([level lines line])}, :source "(defn\n stringify\n [level lines line]\n (cond\n  (string? line)\n  (conj\n   lines\n   (if\n    (or (str/starts-with? line \"#\") (str/ends-with? line \";\"))\n    line\n    (str (indent level line) \";\")))\n  (string? (first line))\n  (->\n   lines\n   (conj (indent level (first line)))\n   (conj (indent level \"{\"))\n   (into (reduce (partial stringify (inc level)) [] (rest line)))\n   (conj (indent level \"}\")))\n  :else\n  (into lines (reduce (partial stringify level) [] line))))\n"} {:sym ->varying, :meta {:doc nil, :arglists ([[name type]])}, :source "(defn\n ->varying\n [[name type]]\n (str \"varying \" (parse-type type) \" \" name))\n"} {:sym ->out, :meta {:doc nil, :arglists ([[name type]])}, :source "(defn\n ->out\n [[name type]]\n (when type (str \"out \" (parse-type type) \" \" name)))\n"} {:sym ->attribute, :meta {:doc nil, :arglists ([[name type]])}, :source "(defn\n ->attribute\n [[name type]]\n (str \"attribute \" (parse-type type) \" \" name))\n"}), play-cljc.gl.entities-3d ({:sym ->camera, :meta {:doc "Returns a 3D camera", :arglists ([])}, :source "(defn\n ->camera\n \"Returns a 3D camera\"\n []\n (->Camera (m/identity-matrix 4)))\n"} {:sym ->entity, :meta {:doc "Returns a 3D entity with a vector of attribute `data` and optionally a vector of `color-data`.", :arglists [[game data] [game data color-data]]}, :source "(defn\n ->entity\n \"Returns a 3D entity with a vector of attribute `data` and optionally a vector of `color-data`.\"\n ([game data]\n  (->>\n   {:vertex three-d-uniform-colors-vertex-shader,\n    :fragment three-d-uniform-colors-fragment-shader,\n    :attributes\n    {'a_position {:data data, :type (gl game FLOAT), :size 3}}}\n   map->ThreeDEntity))\n ([game data color-data]\n  (->>\n   {:vertex three-d-attribute-colors-vertex-shader,\n    :fragment three-d-attribute-colors-fragment-shader,\n    :attributes\n    {'a_position {:data data, :type (gl game FLOAT), :size 3},\n     'a_color {:data color-data, :type (gl game FLOAT), :size 3}}}\n   map->ThreeDEntity)))\n"}), cljs.analyzer.passes ({:sym apply-passes, :meta {:doc nil, :arglists [[ast passes] [ast passes opts]]}, :source "(defn\n apply-passes\n ([ast passes] (apply-passes ast passes nil))\n ([ast passes opts]\n  (reduce (fn [ast pass] (pass (:env ast) ast opts)) ast passes)))\n"} {:sym walk, :meta {:doc nil, :arglists [[ast passes] [ast passes opts]]}, :source "(defn\n walk\n ([ast passes] (walk ast passes nil))\n ([ast passes opts]\n  (reduce\n   (fn\n    [ast child-k]\n    (assoc\n     ast\n     child-k\n     (let\n      [child (get ast child-k)]\n      (if\n       (vector? child)\n       (into\n        []\n        (map (fn* [p1__45449#] (walk p1__45449# passes opts)))\n        child)\n       (walk child passes opts)))))\n   (some-> ast (apply-passes passes opts))\n   (:children ast))))\n"}), play-cljc.gl.entities-2d ({:sym ->camera, :meta {:doc "Returns a 2D camera. The 1-arg arity is deprecated and should not be used!", :arglists [[] [y-down?]]}, :source "(defn\n ->camera\n \"Returns a 2D camera. The 1-arg arity is deprecated and should not be used!\"\n ([] (->Camera (m/identity-matrix 3)))\n ([y-down?]\n  (->Camera\n   (if\n    y-down?\n    (m/look-at-matrix [0 0 1] [0 -1 0])\n    (m/look-at-matrix [0 0 -1] [0 1 0])))))\n"} {:sym ->entity, :meta {:doc "Returns a 2D entity with a vector of attribute `data`.", :arglists ([game data])}, :source "(defn\n ->entity\n \"Returns a 2D entity with a vector of attribute `data`.\"\n [game data]\n (->>\n  {:vertex two-d-vertex-shader,\n   :fragment two-d-fragment-shader,\n   :attributes\n   {'a_position {:data data, :type (gl game FLOAT), :size 2}},\n   :uniforms {'u_matrix (m/identity-matrix 3), 'u_color [0 0 0 1]}}\n  map->TwoDEntity))\n"} {:sym ->image-entity, :meta {:doc "Returns an image entity with a vector of image `data`,\n  along with a `width` and `height` in pixels.", :arglists ([game data width height])}, :source "(defn\n ->image-entity\n \"Returns an image entity with a vector of image `data`,\\n  along with a `width` and `height` in pixels.\"\n [game data width height]\n (->>\n  {:vertex image-vertex-shader,\n   :fragment image-fragment-shader,\n   :attributes\n   {'a_position\n    {:data primitives/rect, :type (gl game FLOAT), :size 2}},\n   :uniforms\n   {'u_image\n    {:data data,\n     :opts\n     {:mip-level 0,\n      :internal-fmt (gl game RGBA),\n      :width width,\n      :height height,\n      :border 0,\n      :src-fmt (gl game RGBA),\n      :src-type (gl game UNSIGNED_BYTE)},\n     :params\n     {(gl game TEXTURE_WRAP_S) (gl game CLAMP_TO_EDGE),\n      (gl game TEXTURE_WRAP_T) (gl game CLAMP_TO_EDGE),\n      (gl game TEXTURE_MIN_FILTER) (gl game NEAREST),\n      (gl game TEXTURE_MAG_FILTER) (gl game NEAREST)}},\n    'u_texture_matrix (m/identity-matrix 3)},\n   :width width,\n   :height height}\n  map->ImageEntity))\n"}), cljs.analyzer ({:sym type?, :meta {:doc nil, :arglists ([env t])}, :source "(defn\n type?\n #?(:cljs {:tag boolean})\n [env t]\n (when\n  (and (some? t) (symbol? t))\n  (let\n   [var\n    (binding [*private-var-access-nowarn* true] (resolve-var env t))]\n   (if-some\n    [type (:type var)]\n    type\n    (if-some\n     [type (-> var :info :type)]\n     type\n     (if-some\n      [proto (:protocol-symbol var)]\n      proto\n      (get '#{cljs.core/PersistentHashMap cljs.core/List} t)))))))\n"} {:sym get-namespace, :meta {:doc nil, :arglists [[key] [cenv key]]}, :source "(defn\n get-namespace\n ([key] (get-namespace env/*compiler* key))\n ([cenv key]\n  (if-some\n   [ns (get-in @cenv [:cljs.analyzer/namespaces key])]\n   ns\n   (when (= 'cljs.user key) {:name 'cljs.user}))))\n"} {:sym elide-reader-meta, :meta {:doc nil, :arglists ([m])}, :source "(defn\n elide-reader-meta\n [m]\n (dissoc m :file :line :column :end-column :end-line :source))\n"} {:sym missing-rename?, :meta {:doc nil, :arglists ([sym cenv])}, :source "(defn\n missing-rename?\n [sym cenv]\n (let\n  [lib (symbol (namespace sym)) sym (symbol (name sym))]\n  (missing-use? lib sym cenv)))\n"} {:sym resolve-invokeable-ns, :meta {:doc nil, :arglists ([ns current-ns env])}, :source "(defn\n resolve-invokeable-ns\n [ns current-ns env]\n (let\n  [ns (resolve-ns-alias env ns) module-type (ns->module-type ns)]\n  (case\n   module-type\n   :js\n   {:name\n    (symbol\n     (or\n      (gets @env/*compiler* :js-module-index ns :name)\n      (resolve-ns-alias env ns))),\n    :op :js-var,\n    :ns 'js}\n   :node\n   {:name\n    (symbol\n     (str current-ns)\n     (munge-node-lib (resolve-ns-alias env ns))),\n    :op :js-var,\n    :ns current-ns}\n   :global\n   {:name\n    (symbol\n     (str current-ns)\n     (munge-global-export (resolve-ns-alias env ns))),\n    :op :js-var,\n    :ns current-ns})))\n"} {:sym analyze-let, :meta {:doc nil, :arglists ([encl-env [_ bindings & exprs :as form] is-loop widened-tags])}, :source "(defn\n analyze-let\n [encl-env [_ bindings & exprs :as form] is-loop widened-tags]\n (when-not\n  (and (vector? bindings) (even? (count bindings)))\n  (throw\n   (error\n    encl-env\n    \"bindings must be vector of even number of elements\")))\n (let\n  [context\n   (:context encl-env)\n   op\n   (if (true? is-loop) :loop :let)\n   bindings\n   (if\n    widened-tags\n    (vec\n     (mapcat\n      (fn\n       [[name init] widened-tag]\n       [(vary-meta name assoc :tag widened-tag) init])\n      (partition 2 bindings)\n      widened-tags))\n    bindings)\n   [bes env]\n   (->\n    encl-env\n    (cond-> (true? is-loop) (assoc :in-loop true))\n    (analyze-let-bindings bindings op))\n   recur-frame\n   (when\n    (true? is-loop)\n    {:params bes, :flag (atom nil), :tags (atom (mapv :tag bes))})\n   recur-frames\n   (if recur-frame (cons recur-frame *recur-frames*) *recur-frames*)\n   loop-lets\n   (cond\n    (true? is-loop)\n    *loop-lets*\n    (some? *loop-lets*)\n    (cons {:params bes} *loop-lets*))\n   warn-acc\n   (when (and is-loop (not widened-tags)) (atom []))\n   expr\n   (if\n    warn-acc\n    (with-warning-handlers\n     [(accumulating-warning-handler warn-acc)]\n     (analyze-let-body env context exprs recur-frames loop-lets))\n    (analyze-let-body env context exprs recur-frames loop-lets))\n   children\n   [:bindings :body]\n   nil->any\n   (fnil identity 'any)]\n  (if\n   (and\n    is-loop\n    (not widened-tags)\n    (not=\n     (mapv nil->any @(:tags recur-frame))\n     (mapv (comp nil->any :tag) bes)))\n   (recur encl-env form is-loop @(:tags recur-frame))\n   (do\n    (when warn-acc (replay-accumulated-warnings warn-acc))\n    {:op op,\n     :env encl-env,\n     :bindings bes,\n     :body (assoc expr :body? true),\n     :form form,\n     :children children}))))\n"} {:sym var-meta, :meta {:doc nil, :arglists [[var] [var expr-env]]}, :source "(defn\n var-meta\n ([var] (var-meta var nil))\n ([var expr-env]\n  (let\n   [sym\n    (:name var)\n    ks\n    [:ns :doc :file :line :column]\n    m\n    (merge\n     (let\n      [user-meta (:meta var) uks (keys user-meta)]\n      (zipmap\n       uks\n       (map\n        (fn* [p1__45074#] (list 'quote (get user-meta p1__45074#)))\n        uks)))\n     (assoc\n      (zipmap\n       ks\n       (map (fn* [p1__45075#] (list 'quote (get var p1__45075#))) ks))\n      :name\n      (clojure.core/sequence\n       (clojure.core/seq\n        (clojure.core/concat\n         (clojure.core/list 'quote)\n         (clojure.core/list (symbol (name (:name var)))))))\n      :test\n      (clojure.core/sequence\n       (clojure.core/seq\n        (clojure.core/concat\n         (clojure.core/list 'clojure.core/when)\n         (clojure.core/list sym)\n         (clojure.core/list\n          (clojure.core/sequence\n           (clojure.core/seq\n            (clojure.core/concat\n             (clojure.core/list '.-cljs$lang$test)\n             (clojure.core/list sym))))))))\n      :arglists\n      (let\n       [arglists\n        (:arglists var)\n        arglists'\n        (if (= 'quote (first arglists)) (second arglists) arglists)]\n       (list\n        'quote\n        (doall (map with-meta arglists' (:arglists-meta var)))))))]\n   (if expr-env (analyze expr-env m) m))))\n"} {:sym desugar-ns-specs, :meta {:doc "Given an original set of ns specs desugar :include-macros and :refer-macros\n   usage into only primitive spec forms - :use, :require, :use-macros,\n   :require-macros. If a library includes a macro file of with the same name\n   as the namespace will also be desugared.", :arglists ([args])}, :source "(defn\n desugar-ns-specs\n \"Given an original set of ns specs desugar :include-macros and :refer-macros\\n   usage into only primitive spec forms - :use, :require, :use-macros,\\n   :require-macros. If a library includes a macro file of with the same name\\n   as the namespace will also be desugared.\"\n [args]\n (let\n  [{:keys [require], :as indexed}\n   (->> args (map (fn [[k & specs]] [k (into [] specs)])) (into {}))\n   sugar-keys\n   #{:include-macros :refer-macros}\n   remove-from-spec\n   (fn\n    [pred spec]\n    (if-not\n     (and (sequential? spec) (some pred spec))\n     spec\n     (let\n      [[l r] (split-with (complement pred) spec)]\n      (recur pred (concat l (drop 2 r))))))\n   replace-refer-macros\n   (fn\n    [spec]\n    (if-not\n     (sequential? spec)\n     spec\n     (map (fn [x] (if (= x :refer-macros) :refer x)) spec)))\n   reload-spec?\n   (fn* [p1__45099#] (#{:reload :reload-all} p1__45099#))\n   to-macro-specs\n   (fn\n    [specs]\n    (->>\n     specs\n     (filter\n      (fn\n       [x]\n       (or\n        (and (sequential? x) (some sugar-keys x))\n        (reload-spec? x)\n        (macro-autoload-ns? x))))\n     (map\n      (fn\n       [x]\n       (if-not\n        (reload-spec? x)\n        (->>\n         x\n         (remove-from-spec #{:include-macros})\n         (remove-from-spec #{:refer})\n         (remove-from-spec #{:rename})\n         (replace-refer-macros))\n        x)))))\n   remove-sugar\n   (partial remove-from-spec sugar-keys)]\n  (if-some\n   [require-specs (seq (to-macro-specs require))]\n   (map\n    (fn\n     [x]\n     (if-not\n      (reload-spec? x)\n      (let [[k v] x] (cons k (map remove-sugar v)))\n      x))\n    (update-in indexed [:require-macros] (fnil into []) require-specs))\n   args)))\n"} {:sym js-tag?, :meta {:doc nil, :arglists ([x])}, :source "(defn\n js-tag?\n [x]\n (and (symbol? x) (or (= 'js x) (= \"js\" (namespace x)))))\n"} {:sym ensure-defs, :meta {:doc "Ensures that a non-nil defs map exists in the compiler state for a given\n  ns. (A non-nil defs map signifies that the namespace has been analyzed.)", :arglists ([ns])}, :source "(defn\n ensure-defs\n \"Ensures that a non-nil defs map exists in the compiler state for a given\\n  ns. (A non-nil defs map signifies that the namespace has been analyzed.)\"\n [ns]\n (swap!\n  env/*compiler*\n  update-in\n  [:cljs.analyzer/namespaces ns :defs]\n  (fn* [p1__45124#] (or p1__45124# {}))))\n"} {:sym analyze-map, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n analyze-map\n [env form]\n (let\n  [expr-env\n   (assoc env :context :expr)\n   ks\n   (disallowing-recur\n    (mapv\n     (fn* [p1__45113#] (analyze expr-env p1__45113#))\n     (keys form)))\n   vs\n   (disallowing-recur\n    (mapv\n     (fn* [p1__45114#] (analyze expr-env p1__45114#))\n     (vals form)))]\n  (analyze-wrap-meta\n   {:op :map,\n    :env env,\n    :form form,\n    :keys ks,\n    :vals vs,\n    :children [:keys :vals],\n    :tag 'cljs.core/IMap})))\n"} {:sym NUMERIC_SET, :meta {}, :source "(def NUMERIC_SET '#{any long double number})\n"} {:sym analyze-record, :meta {:doc nil, :arglists ([env x])}, :source "(defn\n analyze-record\n [env x]\n (let\n  [_items_\n   (disallowing-recur (analyze (assoc env :context :expr) (into {} x)))\n   [ns name]\n   (record-ns+name x)]\n  {:op :const,\n   :val x,\n   :env env,\n   :form x,\n   :tag (symbol (str ns) (str name))}))\n"} {:sym analyze-seq*, :meta {:doc nil, :arglists ([op env form name opts])}, :source "(defn\n analyze-seq*\n [op env form name opts]\n (if\n  (contains? specials op)\n  (parse op env form name opts)\n  (parse-invoke env form)))\n"} {:sym constants-ns-sym, :meta {}, :source "(def\n constants-ns-sym\n \"The namespace of the constants table as a symbol.\"\n 'cljs.core.constants)\n"} {:sym resolve-alias, :meta {:doc "Takes a namespace and an unqualified symbol and potentially returns a new\n  symbol to be used in lieu of the original.", :arglists ([ns sym])}, :source "(defn\n resolve-alias\n \"Takes a namespace and an unqualified symbol and potentially returns a new\\n  symbol to be used in lieu of the original.\"\n [ns sym]\n (if\n  (and (= 'cljs.core ns) ('#{aget aset} sym) (checked-arrays))\n  (get-in\n   '{:warn {aget checked-aget, aset checked-aset},\n     :error {aget checked-aget', aset checked-aset'}}\n   [(checked-arrays) sym])\n  sym))\n"} {:sym *cljs-dep-set*, :meta {}, :source "(def *cljs-dep-set* (with-meta #{} {:dep-path []}))\n"} {:sym resolve-var, :meta {:doc "Resolve a var. Accepts a side-effecting confirm fn for producing\n   warnings about unresolved vars.", :arglists [[env sym] [env sym confirm] [env sym confirm default?]]}, :source "(defn\n resolve-var\n \"Resolve a var. Accepts a side-effecting confirm fn for producing\\n   warnings about unresolved vars.\"\n ([env sym] (resolve-var env sym nil))\n ([env sym confirm] (resolve-var env sym confirm true))\n ([env sym confirm default?]\n  (let\n   [locals (:locals env)]\n   (if\n    #?(:clj (= \"js\" (namespace sym)) :cljs (identical? \"js\" (namespace sym)))\n    (let\n     [symn\n      (-> sym name symbol)\n      shadowed-by-local\n      (handle-symbol-local symn (get locals symn))]\n     (cond\n      (some? shadowed-by-local)\n      (do\n       (warning :js-shadowed-by-local env {:name sym})\n       (assoc shadowed-by-local :op :local))\n      :else\n      (let\n       [pre (->> (string/split (name sym) #\"\\.\") (map symbol) vec)]\n       (when\n        (and\n         (not (has-extern? pre))\n         (not (-> sym meta :cljs.analyzer/no-resolve)))\n        (swap!\n         env/*compiler*\n         update-in\n         (into\n          [:cljs.analyzer/namespaces (-> env :ns :name) :externs]\n          pre)\n         merge\n         {}))\n       (merge\n        {:name sym,\n         :op :js-var,\n         :ns 'js,\n         :tag\n         (with-meta\n          (or (js-tag pre) (:tag (meta sym)) 'js)\n          {:prefix pre})}\n        (when-let\n         [ret-tag (js-tag pre :ret-tag)]\n         {:js-fn-var true, :ret-tag ret-tag})))))\n    (let\n     [s\n      (str sym)\n      lb\n      (handle-symbol-local sym (get locals sym))\n      current-ns\n      (-> env :ns :name)]\n     (cond\n      (some? lb)\n      (assoc lb :op :local)\n      (some? (namespace sym))\n      (let\n       [ns\n        (namespace sym)\n        ns\n        (if\n         #?(:clj (= \"clojure.core\" ns) :cljs (identical? \"clojure.core\" ns))\n         \"cljs.core\"\n         ns)\n        full-ns\n        (resolve-ns-alias\n         env\n         ns\n         (or\n          (and\n           (js-module-exists? ns)\n           (gets @env/*compiler* :js-module-index ns :name))\n          (symbol ns)))]\n       (when\n        (some? confirm)\n        (when (not= current-ns full-ns) (confirm-ns env full-ns))\n        (confirm env full-ns (symbol (name sym))))\n       (resolve* env sym full-ns current-ns))\n      (dotted-symbol? sym)\n      (let\n       [idx\n        (.indexOf s \".\")\n        prefix\n        (symbol (subs s 0 idx))\n        suffix\n        (subs s (inc idx))]\n       (if-let\n        [resolved (resolve-var env prefix nil false)]\n        (update\n         resolved\n         :name\n         (fn* [p1__45073#] (symbol (str p1__45073# \".\" suffix))))\n        (let\n         [s\n          (str (cond->> s (goog-module-dep? sym) (resolve-import env)))\n          idx\n          (.lastIndexOf (str s) \".\")\n          pre\n          (subs s 0 idx)\n          suf\n          (subs s (inc idx))]\n         {:op :var, :name (symbol pre suf), :ns (symbol pre)})))\n      (some?\n       (gets\n        @env/*compiler*\n        :cljs.analyzer/namespaces\n        current-ns\n        :uses\n        sym))\n      (let\n       [full-ns\n        (gets\n         @env/*compiler*\n         :cljs.analyzer/namespaces\n         current-ns\n         :uses\n         sym)]\n       (resolve* env sym full-ns current-ns))\n      (some?\n       (gets\n        @env/*compiler*\n        :cljs.analyzer/namespaces\n        current-ns\n        :renames\n        sym))\n      (let\n       [qualified-symbol\n        (gets\n         @env/*compiler*\n         :cljs.analyzer/namespaces\n         current-ns\n         :renames\n         sym)\n        full-ns\n        (symbol (namespace qualified-symbol))\n        sym\n        (symbol (name qualified-symbol))]\n       (resolve* env sym full-ns current-ns))\n      (some?\n       (gets\n        @env/*compiler*\n        :cljs.analyzer/namespaces\n        current-ns\n        :imports\n        sym))\n      (recur\n       env\n       (gets\n        @env/*compiler*\n        :cljs.analyzer/namespaces\n        current-ns\n        :imports\n        sym)\n       confirm\n       default?)\n      (some?\n       (gets\n        @env/*compiler*\n        :cljs.analyzer/namespaces\n        current-ns\n        :defs\n        sym))\n      (do\n       (when (some? confirm) (confirm env current-ns sym))\n       (merge\n        (gets\n         @env/*compiler*\n         :cljs.analyzer/namespaces\n         current-ns\n         :defs\n         sym)\n        {:name (symbol (str current-ns) (str sym)),\n         :op :var,\n         :ns current-ns}))\n      (core-name? env sym)\n      (let\n       [sym (resolve-alias 'cljs.core sym)]\n       (when (some? confirm) (confirm env 'cljs.core sym))\n       (merge\n        (gets\n         @env/*compiler*\n         :cljs.analyzer/namespaces\n         'cljs.core\n         :defs\n         sym)\n        {:name (symbol \"cljs.core\" (str sym)),\n         :op :var,\n         :ns 'cljs.core}))\n      (invokeable-ns? s env)\n      (resolve-invokeable-ns s current-ns env)\n      :else\n      (when\n       default?\n       (when (some? confirm) (confirm env current-ns sym))\n       (merge\n        (gets\n         @env/*compiler*\n         :cljs.analyzer/namespaces\n         current-ns\n         :defs\n         sym)\n        {:name (symbol (str current-ns) (str sym)),\n         :op :var,\n         :ns current-ns}))))))))\n"} {:sym js-star-seg, :meta {:doc nil, :arglists ([s])}, :source "(defn\n js-star-seg\n [s]\n (let\n  [idx (.indexOf s \"~{\")]\n  (if\n   (== -1 idx)\n   (list s)\n   (let\n    [end (.indexOf s \"}\" idx)]\n    (lazy-seq\n     (cons (subs s 0 idx) (js-star-seg (subs s (inc end)))))))))\n"} {:sym dep-has-global-exports?, :meta {:doc nil, :arglists ([module])}, :source "(defn\n dep-has-global-exports?\n [module]\n (let\n  [[module _]\n   (lib&sublib module)\n   global-exports\n   (get-in\n    @env/*compiler*\n    [:js-dependency-index (str module) :global-exports])]\n  (or\n   (contains? global-exports (symbol module))\n   (contains? global-exports (name module)))))\n"} {:sym register-specs, :meta {:doc "Registers speced vars found in a namespace analysis cache.", :arglists ([cached-ns])}, :source "(defn\n register-specs\n \"Registers speced vars found in a namespace analysis cache.\"\n [cached-ns]\n #?(:clj (try (locking load-mutex (clojure.core/require (quote cljs.spec.alpha))) (catch Throwable t)))\n (let\n  [{:keys [registry-ref speced-vars]} (get-spec-vars)]\n  (when-let\n   [registry (seq (:cljs.spec/registry-ref cached-ns))]\n   (when registry-ref (swap! @registry-ref into registry)))\n  (when-let\n   [vars (seq (:cljs.spec/speced-vars cached-ns))]\n   (when speced-vars (swap! @speced-vars into vars)))))\n"} {:sym get-externs, :meta {:doc nil, :arglists ([])}, :source "(defn get-externs [] (:cljs.analyzer/externs @env/*compiler*))\n"} {:sym *passes*, :meta {}, :source "(def *passes* nil)\n"} {:sym has-extern?*, :meta {:doc nil, :arglists [[pre externs] [pre externs top]]}, :source "(defn\n has-extern?*\n ([pre externs]\n  (let\n   [pre\n    (if-some\n     [me (find (get-in externs '[Window prototype]) (first pre))]\n     (if-some\n      [tag (-> me first meta :tag)]\n      (into [tag 'prototype] (next pre))\n      pre)\n     pre)]\n   (has-extern?* pre externs externs)))\n ([pre externs top]\n  (cond\n   (empty? pre)\n   true\n   :else\n   (let\n    [x (first pre) me (find externs x)]\n    (cond\n     (not me)\n     false\n     :else\n     (let\n      [[x' externs'] me xmeta (meta x')]\n      (if\n       (and (= 'Function (:tag xmeta)) (:ctor xmeta))\n       (or\n        (has-extern?* (into '[prototype] (next pre)) externs' top)\n        (has-extern?* (next pre) externs' top))\n       (recur (next pre) externs' top))))))))\n"} {:sym handle-symbol-local, :meta {:doc nil, :arglists ([sym lb])}, :source "(defn handle-symbol-local [sym lb] (if (symbol? lb) {:name sym} lb))\n"} {:sym get-expander-ns, :meta {:doc nil, :arglists ([env nstr])}, :source "(defn\n get-expander-ns\n [env nstr]\n (let\n  [res\n   (or\n    (resolve-macro-ns-alias env nstr nil)\n    (resolve-ns-alias env nstr nil))\n   nstr\n   (if (some? res) (str res) nstr)]\n  (cond\n   #?@(:clj [(= \"clojure.core\" nstr) (find-ns (quote cljs.core))] :cljs [(identical? \"clojure.core\" nstr) (find-macros-ns impl/CLJS_CORE_MACROS_SYM)])\n   #?@(:clj [(= \"clojure.repl\" nstr) (find-ns (quote cljs.repl))] :cljs [(identical? \"clojure.repl\" nstr) (find-macros-ns (quote cljs.repl))])\n   #?@(:clj [(.contains nstr \".\") (find-ns (symbol nstr))] :cljs [(goog.string/contains nstr \".\") (find-macros-ns (symbol nstr))])\n   :else\n   (some->\n    env\n    :ns\n    :require-macros\n    (get (symbol nstr))\n    #?(:clj find-ns :cljs find-macros-ns)))))\n"} {:sym message, :meta {:doc nil, :arglists ([env s])}, :source "(defn\n message\n [env s]\n (str\n  s\n  (if\n   (:line env)\n   (str \" at line \" (:line env) \" \" *cljs-file*)\n   (when *cljs-file* (str \" in file \" *cljs-file*)))))\n"} {:sym parse-invoke, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n parse-invoke\n [env form]\n (disallowing-recur (parse-invoke* env form)))\n"} {:sym *cljs-warning-handlers*, :meta {}, :source "(def *cljs-warning-handlers* [default-warning-handler])\n"} {:sym analyze-seq*-wrap, :meta {:doc nil, :arglists ([op env form name opts])}, :source "(defn\n analyze-seq*-wrap\n [op env form name opts]\n (wrapping-errors env (analyze-seq* op env form name opts)))\n"} {:sym confirm-bindings, :meta {:doc "Given env, an analysis environment env, and names, a list of symbols, confirm\n   that all correspond to declared dynamic vars.", :arglists ([env names])}, :source "(defn\n confirm-bindings\n \"Given env, an analysis environment env, and names, a list of symbols, confirm\\n   that all correspond to declared dynamic vars.\"\n [env names]\n (doseq\n  [name names]\n  (let\n   [env\n    (assoc env :ns (get-namespace *cljs-ns*))\n    ev\n    (resolve-existing-var env name)]\n   (when\n    (and ev (not (-> ev :dynamic)))\n    (warning :dynamic env {:ev ev, :name (:name ev)})))))\n"} {:sym has-extern?, :meta {:doc nil, :arglists [[pre] [pre externs]]}, :source "(defn\n has-extern?\n ([pre] (has-extern? pre (get-externs)))\n ([pre externs]\n  (or\n   (has-extern?* pre externs)\n   (when\n    (= 1 (count pre))\n    (let\n     [x (first pre)]\n     (or\n      (get-in externs (conj '[Window prototype] x))\n      (get-in externs (conj '[Number] x)))))\n   (-> (last pre) str (string/starts-with? \"cljs$\")))))\n"} {:sym foreign-dep?, :meta {:doc nil, :arglists ([dep])}, :source "(defn\n foreign-dep?\n #?(:cljs {:tag boolean})\n [dep]\n (let\n  [js-index (:js-dependency-index @env/*compiler*)]\n  (if-some\n   [[_ {:keys [foreign]}]\n    (find js-index (name (-> dep lib&sublib first)))]\n   foreign\n   false)))\n"} {:sym missing-rename-macro?, :meta {:doc nil, :arglists ([sym])}, :source "(defn\n missing-rename-macro?\n [sym]\n (let\n  [lib\n   (symbol (namespace sym))\n   sym\n   (symbol (name sym))\n   the-ns\n   #?(:clj (find-ns lib) :cljs (find-macros-ns lib))]\n  (or (nil? the-ns) (nil? (.findInternedVar the-ns sym)))))\n"} {:sym missing-uses, :meta {:doc nil, :arglists ([uses env])}, :source "(defn\n missing-uses\n [uses env]\n (let\n  [cenv @env/*compiler*]\n  (into {} (filter (fn [[sym lib]] (missing-use? lib sym cenv)) uses))))\n"} {:sym missing-use?, :meta {:doc nil, :arglists ([lib sym cenv])}, :source "(defn\n missing-use?\n [lib sym cenv]\n (let\n  [js-lib (get-in cenv [:js-dependency-index (name lib)])]\n  (and\n   (=\n    (get-in\n     cenv\n     [:cljs.analyzer/namespaces lib :defs sym]\n     :cljs.analyzer/not-found)\n    :cljs.analyzer/not-found)\n   (not (= (get js-lib :group) :goog))\n   (not (get js-lib :closure-lib))\n   (not (node-module-dep? lib))\n   (not (dep-has-global-exports? lib)))))\n"} {:sym es5-allowed, :meta {}, :source "(def es5-allowed #{\"default\"})\n"} {:sym analyze, :meta {:doc "Given an environment, a map containing {:locals (mapping of names to bindings), :context\n  (one of :statement, :expr, :return), :ns (a symbol naming the\n  compilation ns)}, and form, returns an expression object (a map\n  containing at least :form, :op and :env keys). If expr has any (immediately)\n  nested exprs, must have a :children entry. This must be a vector of keywords naming\n  the immediately nested fields mapped to an expr or vector of exprs. This will\n  facilitate code walking without knowing the details of the op set.", :arglists [[env form] [env form name] [env form name opts]]}, :source "(defn\n analyze\n \"Given an environment, a map containing {:locals (mapping of names to bindings), :context\\n  (one of :statement, :expr, :return), :ns (a symbol naming the\\n  compilation ns)}, and form, returns an expression object (a map\\n  containing at least :form, :op and :env keys). If expr has any (immediately)\\n  nested exprs, must have a :children entry. This must be a vector of keywords naming\\n  the immediately nested fields mapped to an expr or vector of exprs. This will\\n  facilitate code walking without knowing the details of the op set.\"\n ([env form] (analyze env form nil))\n ([env form name]\n  (analyze\n   env\n   form\n   name\n   (when env/*compiler* (:options @env/*compiler*))))\n ([env form name opts]\n  (wrapping-errors\n   env\n   (if\n    (analyzed? form)\n    (no-warn (analyze* env form name opts))\n    (analyze* env form name opts)))))\n"} {:sym used?, :meta {:doc nil, :arglists ([env sym])}, :source "(defn\n used?\n #?(:cljs {:tag boolean})\n [env sym]\n (or\n  (some? (gets env :ns :use-macros sym))\n  (some?\n   (gets\n    @env/*compiler*\n    :cljs.analyzer/namespaces\n    (gets env :ns :name)\n    :use-macros\n    sym))))\n"} {:sym node-module-dep?, :meta {:doc nil, :arglists ([module])}, :source "(defn\n node-module-dep?\n #?(:cljs {:tag boolean})\n [module]\n #?(:clj (let [idx (get (clojure.core/deref env/*compiler*) :node-module-index)] (contains? idx (str (-> module lib&sublib first)))) :cljs (try (and (= *target* \"nodejs\") (boolean (or (js/require.resolve (str module)) (js/require.resolve (-> module lib&sublib first))))) (catch :default _ false))))\n"} {:sym parse-type, :meta {:doc nil, :arglists ([op env [_ tsym fields pmasks body :as form]])}, :source "(defn\n parse-type\n [op env [_ tsym fields pmasks body :as form]]\n (let\n  [t\n   (:name (resolve-var (dissoc env :locals) tsym))\n   locals\n   (reduce\n    (fn\n     [m fld]\n     (assoc\n      m\n      fld\n      {:name fld,\n       :field true,\n       :column (get-col fld env),\n       :unsynchronized-mutable (-> fld meta :unsynchronized-mutable),\n       :line (get-line fld env),\n       :tag (-> fld meta :tag),\n       :mutable (-> fld meta :mutable),\n       :volatile-mutable (-> fld meta :volatile-mutable),\n       :shadow (m fld),\n       :local :field}))\n    {}\n    (if\n     (= :defrecord op)\n     (concat fields '[__meta __extmap __hash])\n     fields))\n   protocols\n   (-> tsym meta :protocols)]\n  (swap!\n   env/*compiler*\n   update-in\n   [:cljs.analyzer/namespaces (-> env :ns :name) :defs tsym]\n   (fn\n    [m]\n    (let\n     [m\n      (assoc\n       (or m {})\n       :name\n       t\n       :tag\n       'function\n       :type\n       true\n       :num-fields\n       (count fields)\n       :record\n       (= :defrecord op))]\n     (merge\n      m\n      (dissoc (meta tsym) :protocols)\n      {:protocols protocols}\n      (source-info tsym env)))))\n  {:children [:body],\n   :pmasks pmasks,\n   :protocols (disj protocols 'cljs.core/Object),\n   :fields fields,\n   :op op,\n   :env env,\n   :t t,\n   :form form,\n   :tag 'function,\n   :body (analyze (assoc env :locals locals) body)}))\n"} {:sym gets, :meta {:doc nil, :arglists [[m k0 k1] [m k0 k1 k2] [m k0 k1 k2 k3]]}, :source "(defn\n gets\n ([m k0 k1]\n  (let\n   [m (get m k0 SENTINEL)]\n   (when-not (identical? m SENTINEL) (get m k1))))\n ([m k0 k1 k2]\n  (let\n   [m (get m k0 SENTINEL)]\n   (when-not\n    (identical? m SENTINEL)\n    (let\n     [m (get m k1 SENTINEL)]\n     (when-not (identical? m SENTINEL) (get m k2))))))\n ([m k0 k1 k2 k3]\n  (let\n   [m (get m k0 SENTINEL)]\n   (when-not\n    (identical? m SENTINEL)\n    (let\n     [m (get m k1 SENTINEL)]\n     (when-not\n      (identical? m SENTINEL)\n      (let\n       [m (get m k2 SENTINEL)]\n       (when-not (identical? m SENTINEL) (get m k3)))))))))\n"} {:sym check-rename-macros-inferring-missing, :meta {:doc nil, :arglists ([{:keys [name renames], :as ast} env])}, :source "(defn\n check-rename-macros-inferring-missing\n [{:keys [name renames], :as ast} env]\n (let\n  [missing-renames\n   (when\n    (and *analyze-deps* (seq renames))\n    (missing-renames renames env))\n   maybe-macros\n   (apply dissoc renames (keys missing-renames))\n   missing-rename-macros\n   (inferred-rename-macros missing-renames env)\n   remove-missing-renames\n   (fn* [p1__45093#] (apply dissoc p1__45093# (keys missing-renames)))\n   ast'\n   (->\n    ast\n    (update-in\n     [:rename-macros]\n     (fn*\n      [p1__45094#]\n      (->\n       p1__45094#\n       (merge missing-rename-macros)\n       (merge (inferred-rename-macros maybe-macros env)))))\n    (update-in [:renames] remove-missing-renames))]\n  (swap!\n   env/*compiler*\n   (fn*\n    [p1__45095#]\n    (->\n     p1__45095#\n     (update-in\n      [:cljs.analyzer/namespaces name :rename-macros]\n      merge\n      (:rename-macros ast'))\n     (update-in\n      [:cljs.analyzer/namespaces name :renames]\n      remove-missing-renames))))\n  ast'))\n"} {:sym *allow-ns*, :meta {}, :source "(def *allow-ns* true)\n"} {:sym analyze-const, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n analyze-const\n [env form]\n (let\n  [{:keys [tag]} (analyze (assoc env :quoted? true) form)]\n  {:op :const,\n   :env env,\n   :literal? true,\n   :val form,\n   :tag tag,\n   :form form}))\n"} {:sym munge-goog-module-lib, :meta {:doc nil, :arglists [[name] [ns name]]}, :source "(defn\n munge-goog-module-lib\n ([name]\n  (str\n   \"goog$module$\"\n   (munge\n    (string/replace (str name) #\"[.\\/]\" #?(:clj \"\\\\$\" :cljs \"$$\")))))\n ([ns name] (str (munge ns) \".\" (munge-goog-module-lib name))))\n"} {:sym infer-invoke, :meta {:doc nil, :arglists ([env {f :fn, :keys [args], :as e}])}, :source "(defn\n infer-invoke\n [env {f :fn, :keys [args], :as e}]\n (let\n  [me (assoc (find-matching-method f args) :op :fn-method)]\n  (if-some\n   [ret-tag (infer-tag env me)]\n   ret-tag\n   (let\n    [{:keys [info]} f]\n    (if-some\n     [ret-tag\n      (if\n       (or (true? (:fn-var info)) (true? (:js-fn-var info)))\n       (:ret-tag info)\n       (when (= 'js (:ns info)) 'js))]\n     ret-tag\n     impl/ANY_SYM)))))\n"} {:sym *cljs-static-fns*, :meta {}, :source "(def *cljs-static-fns* false)\n"} {:sym array-types, :meta {}, :source "(def\n array-types\n '#{boolean floats longs objects array doubles chars ints shorts bytes})\n"} {:sym *check-alias-dupes*, :meta {}, :source "(def *check-alias-dupes* true)\n"} {:sym macro-ns-name, :meta {:doc nil, :arglists ([name])}, :source "(defn\n macro-ns-name\n [name]\n (let\n  [name-str (str name)]\n  (if-not\n   #?(:clj (.endsWith name-str \"$macros\") :cljs (gstring/endsWith name-str \"$macros\"))\n   (symbol (str name-str \"$macros\"))\n   name)))\n"} {:sym *reload-macros*, :meta {}, :source "(def *reload-macros* false)\n"} {:sym compiler-options, :meta {:doc nil, :arglists ([])}, :source "(defn compiler-options [] (get @env/*compiler* :options))\n"} {:sym resolve-existing-var, :meta {:doc "Given env, an analysis environment, and sym, a symbol, resolve an existing var.\n   Emits a warning if no such var exists.", :arglists ([env sym])}, :source "(defn\n resolve-existing-var\n \"Given env, an analysis environment, and sym, a symbol, resolve an existing var.\\n   Emits a warning if no such var exists.\"\n [env sym]\n (if-not\n  (-> sym meta :cljs.analyzer/no-resolve)\n  (resolve-var env sym confirm-var-exists)\n  (resolve-var env sym)))\n"} {:sym required?, :meta {:doc nil, :arglists ([ns env])}, :source "(defn\n required?\n [ns env]\n (or\n  (contains? (set (vals (gets env :ns :requires))) ns)\n  (contains? (set (vals (gets env :ns :uses))) ns)))\n"} {:sym node-like?, :meta {:doc nil, :arglists [[] [opts]]}, :source "(defn\n node-like?\n ([] (node-like? (compiler-options)))\n ([opts] (and (= :nodejs (:target opts)) (false? (:nodejs-rt opts)))))\n"} {:sym parse-invoke*, :meta {:doc nil, :arglists ([env [f & args :as form]])}, :source "(defn\n parse-invoke*\n [env [f & args :as form]]\n (let\n  [enve\n   (assoc env :context :expr)\n   fexpr\n   (analyze enve f)\n   argc\n   (count args)\n   fn-var?\n   (or (-> fexpr :info :fn-var) (-> fexpr :info :js-fn-var))\n   kw?\n   (= 'cljs.core/Keyword (:tag fexpr))\n   cur-ns\n   (-> env :ns :name)\n   HO-invoke?\n   (and\n    (boolean *cljs-static-fns*)\n    (not fn-var?)\n    (not (js-tag? f))\n    (not kw?)\n    (not (analyzed? f)))\n   bind-f-expr?\n   (and HO-invoke? (not (symbol? f)))\n   bind-args?\n   (and HO-invoke? (not (all-values? args)))]\n  (when\n   fn-var?\n   (let\n    [{variadic :variadic?,\n      :keys [max-fixed-arity method-params name ns macro]}\n     (:info fexpr)]\n    (when\n     (and\n      #?(:cljs (not (and (gstring/endsWith (str cur-ns) \"$macros\") (symbol-identical? cur-ns ns) (true? macro))))\n      (invalid-arity? argc method-params variadic max-fixed-arity))\n     (warning :fn-arity env {:name name, :argc argc}))))\n  (when\n   (and kw? (not (or (== 1 argc) (== 2 argc))))\n   (warning :fn-arity env {:name (first form), :argc argc}))\n  (let\n   [deprecated?\n    (-> fexpr :info :deprecated)\n    no-warn?\n    (-> form meta :deprecation-nowarn)]\n   (when\n    (and (boolean deprecated?) (not (boolean no-warn?)))\n    (warning :fn-deprecated env {:fexpr fexpr})))\n  (when\n   (some? (-> fexpr :info :type))\n   (warning :invoke-ctor env {:fexpr fexpr}))\n  (if\n   (or bind-args? bind-f-expr?)\n   (let\n    [arg-syms\n     (when bind-args? (take argc (repeatedly gensym)))\n     f-sym\n     (when bind-f-expr? (gensym \"fexpr__\"))\n     bindings\n     (cond->\n      []\n      bind-args?\n      (into (interleave arg-syms args))\n      bind-f-expr?\n      (conj f-sym (analyzed f)))\n     tag\n     (:tag (meta form))]\n    (analyze\n     env\n     (clojure.core/sequence\n      (clojure.core/seq\n       (clojure.core/concat\n        (clojure.core/list 'clojure.core/let)\n        (clojure.core/list\n         (clojure.core/vec\n          (clojure.core/sequence\n           (clojure.core/seq (clojure.core/concat bindings)))))\n        (clojure.core/list\n         (with-meta\n          (clojure.core/sequence\n           (clojure.core/seq\n            (clojure.core/concat\n             (clojure.core/list (analyzed (if bind-f-expr? f-sym f)))\n             (if bind-args? arg-syms args))))\n          {:tag tag})))))))\n   (let\n    [ana-expr\n     (fn* [p1__45111#] (analyze enve p1__45111#))\n     argexprs\n     (mapv ana-expr args)]\n    (if\n     (and\n      (and (keyword? f) (nil? (namespace f)))\n      (== 1 (count args))\n      (record-with-field? (:tag (first argexprs)) (symbol (name f))))\n     (let\n      [field-access-form (list* (symbol (str \".-\" (name f))) args)]\n      (no-warn (analyze env field-access-form)))\n     {:env env,\n      :op :invoke,\n      :form form,\n      :fn fexpr,\n      :args argexprs,\n      :children [:fn :args]})))))\n"} {:sym *checked-arrays*, :meta {}, :source "(def *checked-arrays* false)\n"} {:sym ast-children, :meta {:doc nil, :arglists ([ast])}, :source "(defn\n ast-children\n [ast]\n (mapcat\n  (fn [c] (let [g (get ast c)] (cond (vector? g) g g [g])))\n  (:children ast)))\n"} {:sym loaded-js-ns?, :meta {:doc "Check if a JavaScript namespace has been loaded. JavaScript vars are\n  not currently checked.", :arglists ([env prefix])}, :source "(defn\n loaded-js-ns?\n \"Check if a JavaScript namespace has been loaded. JavaScript vars are\\n  not currently checked.\"\n #?(:cljs {:tag boolean})\n [env prefix]\n (when-not\n  (gets @env/*compiler* :cljs.analyzer/namespaces prefix)\n  (let\n   [ns (:ns env)]\n   (or\n    (some? (get (:requires ns) prefix))\n    (some? (get (:imports ns) prefix))))))\n"} {:sym analyze-vector, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n analyze-vector\n [env form]\n (let\n  [expr-env\n   (assoc env :context :expr)\n   items\n   (disallowing-recur\n    (mapv (fn* [p1__45116#] (analyze expr-env p1__45116#)) form))]\n  (analyze-wrap-meta\n   {:op :vector,\n    :env env,\n    :form form,\n    :items items,\n    :children [:items],\n    :tag 'cljs.core/IVector})))\n"} {:sym unwrap-quote, :meta {:doc nil, :arglists ([{:keys [op], :as expr}])}, :source "(defn\n unwrap-quote\n [{:keys [op], :as expr}]\n (if\n  #?(:clj (= op :quote) :cljs (keyword-identical? op :quote))\n  (:expr expr)\n  expr))\n"} {:sym namespaces, :meta {}, :source "(def\n namespaces\n #?(:clj (reify clojure.lang.IDeref (deref [_] (if (some? env/*compiler*) (:cljs.analyzer/namespaces (clojure.core/deref env/*compiler*)) default-namespaces))) :cljs (reify IDeref (-deref [_] (if (some? env/*compiler*) (:cljs.analyzer/namespaces (clojure.core/deref env/*compiler*)) default-namespaces)))))\n"} {:sym elide-analyzer-meta, :meta {:doc nil, :arglists ([m])}, :source "(defn elide-analyzer-meta [m] (dissoc m :cljs.analyzer/analyzed))\n"} {:sym analyze-let-body, :meta {:doc nil, :arglists ([env context exprs recur-frames loop-lets])}, :source "(defn\n analyze-let-body\n [env context exprs recur-frames loop-lets]\n (binding\n  [*recur-frames* recur-frames *loop-lets* loop-lets]\n  (analyze-let-body* env context exprs)))\n"} {:sym extern-pre, :meta {:doc nil, :arglists ([sym current-ns])}, :source "(defn\n extern-pre\n [sym current-ns]\n (let\n  [pre\n   (into\n    '[Object]\n    (->> (string/split (name sym) #\"\\.\") (map symbol) vec))]\n  (when-not\n   (has-extern? pre)\n   (swap!\n    env/*compiler*\n    update-in\n    (into [:cljs.analyzer/namespaces current-ns :externs] pre)\n    merge\n    {}))\n  pre))\n"} {:sym get-col, :meta {:doc nil, :arglists ([x env])}, :source "(defn get-col [x env] (or (-> x meta :column) (:column env)))\n"} {:sym basic-validate-ns-spec, :meta {:doc nil, :arglists ([env macros? spec])}, :source "(defn\n basic-validate-ns-spec\n [env macros? spec]\n (when-not\n  (or (symbol? spec) (string? spec) (sequential? spec))\n  (throw\n   (error\n    env\n    (parse-ns-error-msg\n     spec\n     \"Only [lib.ns & options] and lib.ns specs supported in :require / :require-macros\"))))\n (when\n  (sequential? spec)\n  (when-not\n   (or (symbol? (first spec)) (string? (first spec)))\n   (throw\n    (error\n     env\n     (parse-ns-error-msg\n      spec\n      \"Library name must be specified as a symbol in :require / :require-macros\"))))\n  (when-not\n   (odd? (count spec))\n   (throw\n    (error\n     env\n     (parse-ns-error-msg\n      spec\n      \"Only :as alias, :refer (names) and :rename {from to} options supported in :require\"))))\n  (when-not\n   (every? #{:as :rename :refer} (map first (partition 2 (next spec))))\n   (throw\n    (error\n     env\n     (parse-ns-error-msg\n      spec\n      \"Only :as, :refer and :rename options supported in :require / :require-macros\"))))\n  (when-not\n   (let\n    [fs (frequencies (next spec))]\n    (and (<= (fs :as 0) 1) (<= (fs :refer 0) 1)))\n   (throw\n    (error\n     env\n     (parse-ns-error-msg\n      spec\n      \"Each of :as and :refer options may only be specified once in :require / :require-macros\"))))))\n"} {:sym *cljs-warnings*, :meta {}, :source "(def\n *cljs-warnings*\n {:invoke-ctor true,\n  :extending-base-js-type true,\n  :unsupported-preprocess-value true,\n  :redef true,\n  :js-shadowed-by-local true,\n  :unsupported-js-module-type true,\n  :invalid-protocol-symbol true,\n  :private-var-access true,\n  :protocol-duped-method true,\n  :munged-namespace true,\n  :single-segment-namespace true,\n  :fn-arity true,\n  :infer-warning false,\n  :variadic-max-arity true,\n  :protocol-with-variadic-method true,\n  :fn-deprecated true,\n  :undeclared-var true,\n  :declared-arglists-mismatch true,\n  :preamble-missing true,\n  :undeclared-protocol-symbol true,\n  :protocol-with-overwriting-method true,\n  :dynamic true,\n  :invalid-array-access true,\n  :unprovided true,\n  :ns-var-clash true,\n  :undeclared-ns true,\n  :non-dynamic-earmuffed-var true,\n  :undeclared-ns-form true,\n  :invalid-arithmetic true,\n  :protocol-deprecated true,\n  :fn-var true,\n  :protocol-impl-recur-with-target true,\n  :overload-arity true,\n  :protocol-multiple-impls true,\n  :redef-in-file true,\n  :protocol-invalid-method true,\n  :extend-type-invalid-method-shape true,\n  :multiple-variadic-overloads true,\n  :protocol-impl-with-variadic-method true})\n"} {:sym alias->type, :meta {}, :source "(def\n alias->type\n '{object Object,\n   string String,\n   number Number,\n   array Array,\n   function Function,\n   boolean Boolean,\n   symbol Symbol})\n"} {:sym analyzed?, :meta {:doc "Returns boolean if the form has already been marked as analyzed.", :arglists ([x])}, :source "(defn\n analyzed?\n \"Returns boolean if the form has already been marked as analyzed.\"\n #?(:cljs {:tag boolean})\n [x]\n (boolean\n  (cond\n   (unsorted-map? x)\n   (:cljs.analyzer/analyzed x)\n   :else\n   (:cljs.analyzer/analyzed (meta x)))))\n"} {:sym analyze-deps, :meta {:doc "Given a lib, a namespace, deps, its dependencies, env, an analysis environment\n   and opts, compiler options - analyze all of the dependencies. Required to\n   correctly analyze usage of other namespaces.", :arglists [[lib deps env] [lib deps env opts]]}, :source "(defn\n analyze-deps\n \"Given a lib, a namespace, deps, its dependencies, env, an analysis environment\\n   and opts, compiler options - analyze all of the dependencies. Required to\\n   correctly analyze usage of other namespaces.\"\n ([lib deps env]\n  (analyze-deps\n   lib\n   deps\n   env\n   (when env/*compiler* (:options @env/*compiler*))))\n ([lib deps env opts]\n  (let\n   [compiler @env/*compiler*]\n   (binding\n    [*cljs-dep-set*\n     (vary-meta\n      (conj *cljs-dep-set* lib)\n      update-in\n      [:dep-path]\n      conj\n      lib)]\n    (assert\n     (every?\n      (fn* [p1__45089#] (not (contains? *cljs-dep-set* p1__45089#)))\n      deps)\n     (str\n      \"Circular dependency detected, \"\n      (apply\n       str\n       (interpose\n        \" -> \"\n        (conj\n         (-> *cljs-dep-set* meta :dep-path)\n         (some *cljs-dep-set* deps))))))\n    (doseq\n     [dep deps]\n     (when-not\n      (or\n       (some? (get-in compiler [:cljs.analyzer/namespaces dep :defs]))\n       (node-module-dep? dep)\n       (js-module-exists? (name dep))\n       #?(:clj (deps/find-classpath-lib dep)))\n      (let\n       [idx\n        (:js-dependency-index compiler)\n        dep\n        (-> dep lib&sublib first)]\n       (if\n        (contains? idx (name dep))\n        (let\n         [dep-name (name dep)]\n         (when\n          (string/starts-with? dep-name \"goog.\")\n          #?(:clj (let [js-lib (get idx dep-name) ns (externs/analyze-goog-file (:file js-lib) (symbol dep-name))] (swap! env/*compiler* update-in [:cljs.analyzer/namespaces dep] merge ns)))))\n        #?(:clj (if-some [src (locate-src dep)] (analyze-file src opts) (throw (error env (error-message :undeclared-ns {:ns-sym dep, :js-provide (name dep)})))) :cljs (throw (error env (error-message :undeclared-ns {:ns-sym dep, :js-provide (name dep)}))))))))))))\n"} {:sym array-type?, :meta {:doc nil, :arglists ([t])}, :source "(defn\n array-type?\n #?(:cljs {:tag boolean})\n [t]\n (cond\n  (nil? t)\n  true\n  (= 'clj-nil t)\n  true\n  (js-tag? t)\n  true\n  (= 'any t)\n  true\n  (contains? array-types t)\n  true\n  :else\n  (boolean\n   (when\n    #?(:clj (set? t) :cljs (impl/cljs-set? t))\n    (or (contains? t 'any) (contains? t 'js) (some array-types t))))))\n"} {:sym dotted-symbol?, :meta {:doc nil, :arglists ([sym])}, :source "(defn\n dotted-symbol?\n [sym]\n (let\n  [s (str sym)]\n  #?(:clj (and (.contains s \".\") (not (.contains s \"..\"))) :cljs (and (goog.string/contains s \".\") (not (goog.string/contains s \"..\"))))))\n"} {:sym *cljs-macros-is-classpath*, :meta {}, :source "(def *cljs-macros-is-classpath* true)\n"} {:sym *allow-redef*, :meta {}, :source "(def *allow-redef* false)\n"} {:sym analyze-fn-method-body, :meta {:doc nil, :arglists ([env form recur-frames])}, :source "(defn\n analyze-fn-method-body\n [env form recur-frames]\n (binding [*recur-frames* recur-frames] (analyze env form)))\n"} {:sym infer-type, :meta {:doc nil, :arglists ([env {:keys [tag], :as ast} _])}, :source "(defn\n infer-type\n [env {:keys [tag], :as ast} _]\n (if\n  (or (nil? tag) (= 'function tag))\n  (if\n   (= :fn (:op ast))\n   (update\n    ast\n    :methods\n    (fn\n     [ms]\n     (into\n      []\n      (map (fn* [p1__45121#] (infer-type env p1__45121# _)))\n      ms)))\n   (if-some [tag (infer-tag env ast)] (assoc ast :tag tag) ast))\n  ast))\n"} {:sym parse-import-spec, :meta {:doc nil, :arglists ([env deps spec])}, :source "(defn\n parse-import-spec\n [env deps spec]\n (when-not\n  (or\n   (and (sequential? spec) (every? symbol? spec))\n   (and (symbol? spec) (nil? (namespace spec))))\n  (throw\n   (error\n    env\n    (parse-ns-error-msg\n     spec\n     \"Only lib.ns.Ctor or [lib.ns Ctor*] spec supported in :import\"))))\n (let\n  [import-map\n   (cond\n    (sequential? spec)\n    (->>\n     (rest spec)\n     (map\n      (fn*\n       [p1__45098#]\n       (vector p1__45098# (symbol (str (first spec) \".\" p1__45098#)))))\n     (into {}))\n    (not (== -1 (.indexOf (str spec) \".\")))\n    {(symbol (last (string/split (str spec) #\"\\.\"))) spec}\n    :else\n    {})]\n  (doseq [[_ spec] import-map] (swap! deps conj spec))\n  {:import import-map, :require import-map}))\n"} {:sym clj-ns->cljs-ns, :meta {:doc "Given a symbol that starts with clojure as the first segment return the\n   same symbol with the first segment replaced with cljs", :arglists ([sym])}, :source "(defn\n clj-ns->cljs-ns\n \"Given a symbol that starts with clojure as the first segment return the\\n   same symbol with the first segment replaced with cljs\"\n [sym]\n (let\n  [segs (string/split (clojure.core/name sym) #\"\\.\")]\n  (if\n   (= \"clojure\" (first segs))\n   (symbol (string/join \".\" (cons \"cljs\" (next segs))))\n   sym)))\n"} {:sym constant-value?, :meta {:doc nil, :arglists ([{:keys [op], :as ast}])}, :source "(defn\n constant-value?\n [{:keys [op], :as ast}]\n (or\n  (#{:const :quote} op)\n  (and\n   (#{:vector :set :map} op)\n   (every? constant-value? (ast-children ast)))))\n"} {:sym dump-specs, :meta {:doc "Dumps registered speced vars for a given namespace into the compiler\n  environment.", :arglists ([ns])}, :source "(defn\n dump-specs\n \"Dumps registered speced vars for a given namespace into the compiler\\n  environment.\"\n [ns]\n (let\n  [spec-vars (get-spec-vars) ns-str (str ns)]\n  (swap!\n   env/*compiler*\n   update-in\n   [:cljs.analyzer/namespaces ns]\n   merge\n   (when-let\n    [registry-ref (:registry-ref spec-vars)]\n    {:cljs.spec/registry-ref\n     (into\n      []\n      (filter (fn [[k _]] (= ns-str (namespace k))))\n      @@registry-ref)})\n   (when-let\n    [speced-vars (:speced-vars spec-vars)]\n    {:cljs.spec/speced-vars\n     (into\n      []\n      (filter\n       (fn\n        [v]\n        (or (= ns-str (namespace v)) (= ns (-> v meta :fdef-ns)))))\n      @@speced-vars)}))))\n"} {:sym *fn-invoke-direct*, :meta {}, :source "(def *fn-invoke-direct* false)\n"} {:sym use->require, :meta {:doc nil, :arglists ([env [lib & filters :as spec]])}, :source "(defn\n use->require\n [env [lib & filters :as spec]]\n (when-not\n  (and (symbol? lib) (odd? (count spec)))\n  (throw\n   (error\n    env\n    (parse-ns-error-msg\n     spec\n     \"Only [lib.ns :only (names)] and optionally `:rename {from to}` specs supported in :use / :use-macros\"))))\n (loop\n  [fs (seq filters) ret [lib] err false]\n  (cond\n   (true? err)\n   (throw\n    (error\n     env\n     (parse-ns-error-msg\n      spec\n      \"Only [lib.ns :only (names)] and optionally `:rename {from to}` specs supported in :use / :use-macros\")))\n   (some? fs)\n   (let\n    [kw (first fs) only? (= kw :only)]\n    (if\n     (or only? (= kw :rename))\n     (if\n      (some? (some #{(if only? :refer kw)} ret))\n      (throw\n       (error\n        env\n        (parse-ns-error-msg\n         spec\n         \"Each of :only and :rename options may only be specified once in :use / :use-macros\")))\n      (let\n       [refs (second fs)]\n       (if-not\n        (or\n         (and only? (sequential? refs) (every? symbol? refs))\n         (and\n          (= kw :rename)\n          (map? refs)\n          (every?\n           (fn* [p1__45097#] (every? symbol? p1__45097#))\n           refs)))\n        (recur fs ret true)\n        (recur\n         (nnext fs)\n         (into ret [(if only? :refer kw) refs])\n         false))))\n     (recur fs ret true)))\n   :else\n   (if (some? (some #{:refer} ret)) ret (recur fs ret true)))))\n"} {:sym inferred-use-macros, :meta {:doc nil, :arglists ([use-macros env])}, :source "(defn\n inferred-use-macros\n [use-macros env]\n (let\n  [cenv @env/*compiler*]\n  (into\n   {}\n   (filter\n    (fn [[sym lib]] (not (missing-use-macro? lib sym)))\n    use-macros))))\n"} {:sym analyze-symbol, :meta {:doc "Finds the var associated with sym", :arglists ([env sym])}, :source "(defn\n analyze-symbol\n \"Finds the var associated with sym\"\n [env sym]\n (if\n  (:quoted? env)\n  (do\n   (register-constant! env sym)\n   (analyze-wrap-meta\n    {:op :const,\n     :val sym,\n     :env env,\n     :form sym,\n     :tag 'cljs.core/Symbol}))\n  (let\n   [{:keys [line column]}\n    (meta sym)\n    env\n    (if-not (nil? line) (assoc env :line line) env)\n    env\n    (if-not (nil? column) (assoc env :column column) env)\n    ret\n    {:env env, :form sym}\n    lcls\n    (:locals env)]\n   (if-some\n    [lb (handle-symbol-local sym (get lcls sym))]\n    (merge\n     (assoc ret :op :local :info lb)\n     (when\n      (map? lb)\n      (select-keys lb [:name :local :arg-id :variadic? :init])))\n    (let\n     [sym-meta\n      (meta sym)\n      sym-ns\n      (namespace sym)\n      cur-ns\n      (str (-> env :ns :name))\n      #?@(:cljs [sym (if (and sym-ns (not= sym-ns \"cljs.core\") (gstring/endsWith cur-ns \"$macros\") (not (gstring/endsWith sym-ns \"$macros\")) (= sym-ns (subs cur-ns 0 (- (count cur-ns) 7)))) (symbol (str sym-ns \"$macros\") (name sym)) sym)])\n      info\n      (if-not\n       (contains? sym-meta :cljs.analyzer/analyzed)\n       (resolve-existing-var env sym)\n       (resolve-var env sym))]\n     (assert (:op info) (:op info))\n     (desugar-dotted-expr\n      (if-not\n       (true? (:def-var env))\n       (merge\n        (assoc ret :info info)\n        (select-keys info [:op :name :ns :tag])\n        (when-let\n         [const-expr (:const-expr info)]\n         {:const-expr const-expr}))\n       (let\n        [info (resolve-var env sym)]\n        (merge\n         (assoc ret :op :var :info info)\n         (select-keys info [:op :name :ns :tag]))))))))))\n"} {:sym confirm-var-exists, :meta {:doc nil, :arglists [[env prefix suffix] [env prefix suffix missing-fn]]}, :source "(defn\n confirm-var-exists\n ([env prefix suffix]\n  (let\n   [warn (confirm-var-exist-warning env prefix suffix)]\n   (confirm-var-exists env prefix suffix warn)))\n ([env prefix suffix missing-fn]\n  (let\n   [sufstr\n    (str suffix)\n    suffix-str\n    (if\n     (and\n      #?(:clj (not= \"..\" sufstr) :cljs (not (identical? \"..\" sufstr)))\n      #?(:clj (re-find #\"\\.\" sufstr) :cljs (.test #\"\\.\" sufstr)))\n     (first (string/split sufstr #\"\\.\"))\n     suffix)\n    suffix\n    (symbol suffix-str)]\n   (when\n    (and\n     (not (implicit-import? env prefix suffix))\n     (not (loaded-js-ns? env prefix))\n     (not (and (= 'cljs.core prefix) (= 'unquote suffix)))\n     (nil?\n      (gets\n       @env/*compiler*\n       :cljs.analyzer/namespaces\n       prefix\n       :defs\n       suffix))\n     (not (js-module-exists? prefix)))\n    (missing-fn env prefix suffix)))))\n"} {:sym analyze-keyword, :meta {:doc nil, :arglists ([env sym])}, :source "(defn\n analyze-keyword\n [env sym]\n (register-constant! env sym)\n {:op :const, :val sym, :env env, :form sym, :tag 'cljs.core/Keyword})\n"} {:sym analyze-let-bindings, :meta {:doc nil, :arglists ([encl-env bindings op])}, :source "(defn\n analyze-let-bindings\n [encl-env bindings op]\n (disallowing-recur (analyze-let-bindings* encl-env bindings op)))\n"} {:sym munge-global-export, :meta {:doc nil, :arglists ([name])}, :source "(defn\n munge-global-export\n [name]\n (str\n  \"global$module$\"\n  (munge\n   (string/replace (str name) #\"[.\\/]\" #?(:clj \"\\\\$\" :cljs \"$$\")))))\n"} {:sym *loop-lets*, :meta {}, :source "(def *loop-lets* ())\n"} {:sym ->type-set, :meta {:doc "Ensures that a type tag is a set.", :arglists ([t])}, :source "(defn\n ->type-set\n \"Ensures that a type tag is a set.\"\n [t]\n (if #?(:clj (set? t) :cljs (impl/cljs-set? t)) t #{t}))\n"} {:sym js-tag, :meta {:doc nil, :arglists [[pre] [pre tag-type] [pre tag-type externs] [pre tag-type externs top]]}, :source "(defn\n js-tag\n ([pre] (js-tag pre :tag))\n ([pre tag-type] (js-tag pre tag-type (get-externs)))\n ([pre tag-type externs] (js-tag pre tag-type externs externs))\n ([pre tag-type externs top]\n  (when-let\n   [[p externs' :as me] (find externs (first pre))]\n   (let\n    [tag (-> p meta tag-type)]\n    (if\n     (= (count pre) 1)\n     (when tag (symbol \"js\" (str (alias->type tag tag))))\n     (or\n      (js-tag (next pre) tag-type externs' top)\n      (js-tag\n       (into '[prototype] (next pre))\n       tag-type\n       (get top tag)\n       top)))))))\n"} {:sym js-reserved, :meta {}, :source "(def\n js-reserved\n #{\"typeof\"\n   \"float\"\n   \"implements\"\n   \"else\"\n   \"boolean\"\n   \"abstract\"\n   \"int\"\n   \"static\"\n   \"package\"\n   \"this\"\n   \"await\"\n   \"yield\"\n   \"interface\"\n   \"void\"\n   \"delete\"\n   \"class\"\n   \"export\"\n   \"var\"\n   \"try\"\n   \"long\"\n   \"null\"\n   \"return\"\n   \"methods\"\n   \"native\"\n   \"private\"\n   \"new\"\n   \"for\"\n   \"catch\"\n   \"extends\"\n   \"short\"\n   \"protected\"\n   \"throws\"\n   \"synchronized\"\n   \"transient\"\n   \"super\"\n   \"if\"\n   \"let\"\n   \"import\"\n   \"char\"\n   \"switch\"\n   \"const\"\n   \"case\"\n   \"break\"\n   \"volatile\"\n   \"function\"\n   \"continue\"\n   \"final\"\n   \"do\"\n   \"double\"\n   \"while\"\n   \"public\"\n   \"arguments\"\n   \"debugger\"\n   \"with\"\n   \"instanceof\"\n   \"default\"\n   \"throw\"\n   \"goto\"\n   \"finally\"\n   \"byte\"\n   \"constructor\"\n   \"in\"\n   \"enum\"})\n"} {:sym *load-tests*, :meta {}, :source "(def *load-tests* true)\n"} {:sym check-use-macros-inferring-missing, :meta {:doc nil, :arglists ([{:keys [name uses use-macros], :as ast} env])}, :source "(defn\n check-use-macros-inferring-missing\n [{:keys [name uses use-macros], :as ast} env]\n (let\n  [missing-uses\n   (when (and *analyze-deps* (seq uses)) (missing-uses uses env))\n   maybe-macros\n   (apply dissoc uses (keys missing-uses))\n   remove-missing-uses\n   (fn* [p1__45090#] (apply dissoc p1__45090# (keys missing-uses)))\n   ast'\n   (->\n    ast\n    (update-in\n     [:use-macros]\n     (fn*\n      [p1__45091#]\n      (->\n       p1__45091#\n       (merge (check-use-macros use-macros missing-uses env))\n       (merge (inferred-use-macros maybe-macros env)))))\n    (update-in [:uses] remove-missing-uses))]\n  (swap!\n   env/*compiler*\n   (fn*\n    [p1__45092#]\n    (->\n     p1__45092#\n     (update-in\n      [:cljs.analyzer/namespaces name :use-macros]\n      merge\n      (:use-macros ast'))\n     (update-in\n      [:cljs.analyzer/namespaces name :uses]\n      remove-missing-uses))))\n  ast'))\n"} {:sym canonicalize-type, :meta {:doc nil, :arglists ([t])}, :source "(defn\n canonicalize-type\n [t]\n \"Ensures that a type tag is either nil, a type symbol, or a non-singleton\\n  set of type symbols, absorbing clj-nil into seq and all types into any.\"\n (cond\n  (symbol? t)\n  t\n  (empty? t)\n  nil\n  (== 1 (count t))\n  (first t)\n  (contains? t 'any)\n  'any\n  (contains? t 'seq)\n  (let [res (disj t 'clj-nil)] (if (== 1 (count res)) 'seq res))\n  :else\n  t))\n"} {:sym macroexpand-1*, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n macroexpand-1*\n [env form]\n (let\n  [op (first form)]\n  (if\n   (contains? specials op)\n   (do\n    (when\n     (= 'ns op)\n     (do-macroexpand-check\n      env\n      form\n      (get-expander 'cljs.core/ns-special-form env)))\n    form)\n   (if-some\n    [mac-var (when (symbol? op) (get-expander op env))]\n    (#?@(:clj [binding [*ns* (create-ns *cljs-ns*)]] :cljs [do])\n     (do-macroexpand-check env form mac-var)\n     (let\n      [form'\n       (try\n        #?(:cljs (check-macro-arity mac-var form))\n        (apply @mac-var form env (rest form))\n        #?(:clj (catch ArityException e (throw (ArityException. (- (.actual e) 2) (.name e)))))\n        (catch\n         #?(:clj Throwable :cljs :default)\n         e\n         (throw\n          (ex-info\n           nil\n           (error-data env :macroexpansion (var->sym mac-var))\n           e))))]\n      (if\n       #?(:clj (seq? form') :cljs (impl/cljs-seq? form'))\n       (let\n        [sym' (first form') sym (first form)]\n        (if\n         #?(:clj (= sym' (quote js*)) :cljs (symbol-identical? sym' impl/JS_STAR_SYM))\n         (let\n          [sym\n           (if\n            (some? (namespace sym))\n            sym\n            (symbol \"cljs.core\" (str sym)))\n           js-op\n           {:js-op sym}\n           numeric\n           #?(:clj (-> mac-var meta :cljs.analyzer/numeric) :cljs (let [mac-var-ns (symbol (namespace (.-sym mac-var))) mac-var-name (symbol (name (.-sym mac-var)))] (get-in (clojure.core/deref env/*compiler*) [:cljs.analyzer/namespaces mac-var-ns :defs mac-var-name :meta :cljs.analyzer/numeric])))\n           js-op\n           (if (true? numeric) (assoc js-op :numeric true) js-op)]\n          (vary-meta form' merge js-op))\n         form'))\n       form')))\n    (if\n     (symbol? op)\n     (let\n      [opname (str op)]\n      (cond\n       (identical? \\. #?(:clj (first opname) :cljs (.charAt opname 0)))\n       (let\n        [[target & args] (next form)]\n        (with-meta\n         (list*\n          #?(:clj (quote .) :cljs impl/DOT_SYM)\n          target\n          (symbol (subs opname 1))\n          args)\n         (meta form)))\n       (identical?\n        \\.\n        #?(:clj (last opname) :cljs (.charAt opname (dec (. opname -length)))))\n       (with-meta\n        (list*\n         #?(:clj (quote new) :cljs impl/NEW_SYM)\n         (symbol (subs opname 0 (dec (count opname))))\n         (next form))\n        (meta form))\n       :else\n       form))\n     form)))))\n"} {:sym check-use-macros, :meta {:doc nil, :arglists [[use-macros env] [use-macros missing-uses env]]}, :source "(defn\n check-use-macros\n ([use-macros env] (check-use-macros use-macros nil env))\n ([use-macros missing-uses env]\n  (let\n   [cenv @env/*compiler*]\n   (doseq\n    [[sym lib] use-macros]\n    (when\n     (missing-use-macro? lib sym)\n     (throw\n      (error\n       env\n       (error-message\n        :undeclared-ns-form\n        {:type \"macro\", :lib lib, :sym sym})))))\n   (check-uses (missing-use-macros missing-uses env) env)\n   (inferred-use-macros missing-uses env))))\n"} {:sym get-expander, :meta {:doc "Given a sym, a symbol identifying a macro, and env, an analysis environment\n   return the corresponding Clojure macroexpander.", :arglists ([sym env])}, :source "(defn\n get-expander\n \"Given a sym, a symbol identifying a macro, and env, an analysis environment\\n   return the corresponding Clojure macroexpander.\"\n [sym env]\n (let\n  [mvar (get-expander* sym env)]\n  (when\n   (and (some? mvar) #?(:clj (.isMacro mvar) :cljs (.isMacro mvar)))\n   mvar)))\n"} {:sym analyze-js-star, :meta {:doc nil, :arglists ([env jsform args form])}, :source "(defn\n analyze-js-star\n [env jsform args form]\n (disallowing-recur (analyze-js-star* env jsform args form)))\n"} {:sym js-star-interp, :meta {:doc nil, :arglists ([env s])}, :source "(defn\n js-star-interp\n [env s]\n (let\n  [idx (.indexOf s \"~{\")]\n  (if\n   (== -1 idx)\n   (list s)\n   (let\n    [end\n     (.indexOf s \"}\" idx)\n     inner\n     (:name\n      (resolve-existing-var env (symbol (subs s (+ 2 idx) end))))]\n    (lazy-seq\n     (cons\n      (subs s 0 idx)\n      (cons inner (js-star-interp env (subs s (inc end))))))))))\n"} {:sym *recur-frames*, :meta {}, :source "(def *recur-frames* nil)\n"} {:sym analyze-fn-methods-pass2*, :meta {:doc nil, :arglists ([menv locals type meths])}, :source "(defn\n analyze-fn-methods-pass2*\n [menv locals type meths]\n (mapv\n  (fn*\n   [p1__45083#]\n   (analyze-fn-method menv locals p1__45083# type true))\n  meths))\n"} {:sym macroexpand-1, :meta {:doc "Given a env, an analysis environment, and form, a ClojureScript form,\n   macroexpand the form once.", :arglists ([env form])}, :source "(defn\n macroexpand-1\n \"Given a env, an analysis environment, and form, a ClojureScript form,\\n   macroexpand the form once.\"\n [env form]\n (wrapping-errors env (macroexpand-1* env form)))\n"} {:sym resolve-macro-var, :meta {:doc "Given env, an analysis environment, and sym, a symbol, resolve a macro.", :arglists ([env sym])}, :source "(defn\n resolve-macro-var\n \"Given env, an analysis environment, and sym, a symbol, resolve a macro.\"\n [env sym]\n (let\n  [ns\n   (-> env :ns :name)\n   namespaces\n   (get @env/*compiler* :cljs.analyzer/namespaces)]\n  (cond\n   (some? (namespace sym))\n   (let\n    [ns\n     (namespace sym)\n     ns\n     (if (= \"clojure.core\" ns) \"cljs.core\" ns)\n     full-ns\n     (resolve-macro-ns-alias env ns)\n     #?@(:cljs [full-ns (if-not (string/ends-with? (str full-ns) \"$macros\") (symbol (str full-ns \"$macros\")) full-ns)])]\n    #?(:clj (get-in namespaces [full-ns :macros (symbol (name sym))]) :cljs (get-in namespaces [full-ns :defs (symbol (name sym))])))\n   (some? (get-in namespaces [ns :use-macros sym]))\n   (let\n    [full-ns (get-in namespaces [ns :use-macros sym])]\n    (get-in namespaces [full-ns :macros sym]))\n   (some? (get-in namespaces [ns :rename-macros sym]))\n   (let\n    [qualified-symbol\n     (get-in namespaces [ns :rename-macros sym])\n     full-ns\n     (symbol (namespace qualified-symbol))\n     sym\n     (symbol (name qualified-symbol))]\n    (get-in namespaces [full-ns :macros sym]))\n   :else\n   (let\n    [ns\n     (cond\n      (some? (get-in namespaces [ns :macros sym]))\n      ns\n      (core-name? env sym)\n      #?(:clj (quote cljs.core) :cljs impl/CLJS_CORE_MACROS_SYM))]\n    (when\n     (some? ns)\n     #?(:clj (get-in namespaces [ns :macros sym]) :cljs (get-in namespaces [ns :defs sym])))))))\n"} {:sym analyze-let-binding-init, :meta {:doc nil, :arglists ([env init loop-lets])}, :source "(defn\n analyze-let-binding-init\n [env init loop-lets]\n (binding [*loop-lets* loop-lets] (analyze env init)))\n"} {:sym infer-tag, :meta {:doc "Given env, an analysis environment, and e, an AST node, return the inferred\n   type of the node", :arglists ([env e])}, :source "(defn\n infer-tag\n \"Given env, an analysis environment, and e, an AST node, return the inferred\\n   type of the node\"\n [env e]\n (if-some\n  [tag (get-tag e)]\n  tag\n  (case\n   (:op e)\n   :recur\n   impl/IGNORE_SYM\n   :throw\n   impl/IGNORE_SYM\n   :let\n   (infer-tag env (:body e))\n   :loop\n   (infer-tag env (:body e))\n   :do\n   (infer-tag env (:ret e))\n   :fn-method\n   (infer-tag env (:body e))\n   :def\n   (infer-tag env (:init e))\n   :invoke\n   (infer-invoke env e)\n   :if\n   (infer-if env e)\n   :const\n   (case\n    (:form e)\n    true\n    impl/BOOLEAN_SYM\n    false\n    impl/BOOLEAN_SYM\n    impl/ANY_SYM)\n   :quote\n   (infer-tag env (:expr e))\n   (:var :local :js-var :binding)\n   (if-some\n    [init (:init e)]\n    (infer-tag env init)\n    (infer-tag env (:info e)))\n   (:host-field :host-call)\n   impl/ANY_SYM\n   :js\n   impl/ANY_SYM\n   nil)))\n"} {:sym canonicalize-import-specs, :meta {:doc nil, :arglists ([specs])}, :source "(defn\n canonicalize-import-specs\n [specs]\n (letfn\n  [(canonicalize\n    [quoted-spec-or-kw]\n    (if\n     (keyword? quoted-spec-or-kw)\n     quoted-spec-or-kw\n     (second quoted-spec-or-kw)))]\n  (map canonicalize specs)))\n"} {:sym analyze-form-seq, :meta {:doc nil, :arglists [[forms] [forms opts] [forms opts return-last?]]}, :source "(defn\n analyze-form-seq\n ([forms]\n  (analyze-form-seq\n   forms\n   (when env/*compiler* (:options @env/*compiler*))))\n ([forms opts] (analyze-form-seq forms opts false))\n ([forms opts return-last?]\n  (let\n   [env (assoc (empty-env) :build-options opts)]\n   (binding\n    [*file-defs*\n     nil\n     #?@(:clj [*unchecked-if* false *unchecked-arrays* false])\n     *cljs-ns*\n     'cljs.user\n     *cljs-file*\n     nil\n     reader/*alias-map*\n     (or reader/*alias-map* {})]\n    (loop\n     [ns nil forms forms last-ast nil]\n     (if\n      (some? forms)\n      (let\n       [form\n        (first forms)\n        env\n        (assoc env :ns (get-namespace *cljs-ns*))\n        ast\n        (analyze env form nil opts)]\n       (if\n        (= (:op ast) :ns)\n        (recur (:name ast) (next forms) ast)\n        (recur ns (next forms) ast)))\n      (if return-last? last-ast ns)))))))\n"} {:sym analyze-let-body*, :meta {:doc nil, :arglists ([env context exprs])}, :source "(defn\n analyze-let-body*\n [env context exprs]\n (analyze\n  (assoc env :context (if (= :expr context) :return context))\n  (clojure.core/sequence\n   (clojure.core/seq\n    (clojure.core/concat (clojure.core/list 'do) exprs)))))\n"} {:sym analyze-js-star*, :meta {:doc nil, :arglists ([env jsform args form])}, :source "(defn\n analyze-js-star*\n [env jsform args form]\n (let\n  [enve\n   (assoc env :context :expr)\n   form-meta\n   (meta form)\n   segs\n   (js-star-seg jsform)\n   tag\n   (get-js-tag form)\n   js-op\n   (:js-op form-meta)\n   argexprs\n   (analyze-js-star-args js-op enve args)\n   numeric\n   (:numeric form-meta)\n   validate\n   (fn\n    [warning-type valid-types?]\n    (let\n     [types\n      (map (fn* [p1__45108#] (infer-tag env p1__45108#)) argexprs)]\n     (when-not\n      (valid-types? types)\n      (warning\n       warning-type\n       env\n       {:js-op js-op, :types (into [] types)}))))\n   op-match?\n   (fn\n    [sym]\n    #?(:clj (= sym (:js-op form-meta)) :cljs (symbol-identical? sym (:js-op form-meta))))]\n  (when\n   (true? numeric)\n   (validate\n    :invalid-arithmetic\n    (fn* [p1__45109#] (every? numeric-type? p1__45109#))))\n  {:args argexprs,\n   :children [:args],\n   :numeric numeric,\n   :segs segs,\n   :op :js,\n   :env env,\n   :js-op js-op,\n   :form form,\n   :tag tag}))\n"} {:sym inferred-rename-macros, :meta {:doc nil, :arglists ([rename-macros env])}, :source "(defn\n inferred-rename-macros\n [rename-macros env]\n (into\n  {}\n  (filter\n   (fn [[_ qualified-sym]] (not (missing-rename-macro? qualified-sym)))\n   rename-macros)))\n"} {:sym parse-ns-error-msg, :meta {:doc nil, :arglists ([spec msg])}, :source "(defn\n parse-ns-error-msg\n [spec msg]\n (str msg \"; offending spec: \" (pr-str spec)))\n"} {:sym missing-use-macro?, :meta {:doc nil, :arglists ([lib sym])}, :source "(defn\n missing-use-macro?\n [lib sym]\n (when\n  (symbol? lib)\n  (let\n   [the-ns #?(:clj (find-ns lib) :cljs (find-macros-ns lib))]\n   (or (nil? the-ns) (nil? (.findInternedVar the-ns sym))))))\n"} {:sym record-ns+name, :meta {:doc nil, :arglists ([x])}, :source "(defn\n record-ns+name\n [x]\n (map\n  symbol\n  #?(:clj ((juxt (comp (fn* [p1__45120#] (string/join \".\" p1__45120#)) butlast) last) (string/split (.getName (type x)) #\"\\.\")) :cljs (string/split (pr-str (type x)) #\"/\"))))\n"} {:sym analyzed, :meta {:doc "Mark a form as being analyzed. Assumes x satisfies IMeta. Useful to suppress\n  warnings that will have been caught by a first compiler pass.", :arglists ([x])}, :source "(defn\n analyzed\n \"Mark a form as being analyzed. Assumes x satisfies IMeta. Useful to suppress\\n  warnings that will have been caught by a first compiler pass.\"\n [x]\n (cond\n  (unsorted-map? x)\n  (assoc x :cljs.analyzer/analyzed true)\n  :else\n  (vary-meta x assoc :cljs.analyzer/analyzed true)))\n"} {:sym resolve-symbol, :meta {:doc nil, :arglists ([sym])}, :source "(defn\n resolve-symbol\n [sym]\n (if\n  (and (not (namespace sym)) (dotted-symbol? sym))\n  sym\n  (:name\n   (binding\n    [*private-var-access-nowarn* true]\n    (resolve-var\n     (assoc @env/*compiler* :ns (get-namespace *cljs-ns*))\n     sym)))))\n"} {:sym missing-renames, :meta {:doc nil, :arglists ([renames env])}, :source "(defn\n missing-renames\n [renames env]\n (let\n  [cenv @env/*compiler*]\n  (into\n   {}\n   (filter\n    (fn [[_ qualified-sym]] (missing-rename? qualified-sym cenv))\n    renames))))\n"} {:sym default-passes, :meta {}, :source "(def\n default-passes\n #?(:clj [infer-type and-or/optimize check-invoke-arg-types ns-side-effects] :cljs [infer-type and-or/optimize check-invoke-arg-types]))\n"} {:sym *cljs-macros-path*, :meta {}, :source "(def *cljs-macros-path* \"/cljs/core\")\n"} {:sym confirm-var-exist-warning, :meta {:doc nil, :arglists ([env prefix suffix])}, :source "(defn\n confirm-var-exist-warning\n [env prefix suffix]\n (fn\n  [env prefix suffix]\n  (warning\n   :undeclared-var\n   env\n   {:prefix prefix,\n    :suffix suffix,\n    :macro-present?\n    (not\n     (nil? (get-expander (symbol (str prefix) (str suffix)) env)))})))\n"} {:sym unchecked-arrays?, :meta {:doc nil, :arglists ([])}, :source "(defn unchecked-arrays? [] *unchecked-arrays*)\n"} {:sym analyze-dot, :meta {:doc nil, :arglists ([env target field member+ form])}, :source "(defn\n analyze-dot\n [env target field member+ form]\n (let\n  [v\n   [target field member+]\n   {:keys [dot-action target method field args]}\n   (build-dot-form v)\n   enve\n   (assoc env :context :expr)\n   targetexpr\n   (analyze enve target)\n   form-meta\n   (meta form)\n   target-tag\n   (:tag targetexpr)\n   prop\n   (or field method)\n   tag\n   (or\n    (:tag form-meta)\n    (and\n     (js-tag? target-tag)\n     (vary-meta\n      (normalize-js-tag target-tag)\n      update-in\n      [:prefix]\n      (fnil conj '[Object])\n      prop))\n    nil)]\n  (when\n   (and\n    (not= 'constructor prop)\n    (not (string/starts-with? (str prop) \"cljs$\"))\n    (not (-> prop meta :protocol-prop)))\n   (when\n    (= 'Object (first (-> tag meta :prefix)))\n    (warning\n     :infer-warning\n     env\n     {:warn-type :object, :form form, :property prop}))\n   (when\n    (not= 'js target-tag)\n    (when\n     (or (nil? target-tag) ('#{any} target-tag))\n     (warning\n      :infer-warning\n      env\n      {:warn-type :target, :form form, :property prop}))\n    (let\n     [[pre' pre] ((juxt butlast identity) (-> tag meta :prefix))]\n     (when\n      (and (has-extern? pre') (not (has-extern? pre)))\n      (warning\n       :infer-warning\n       env\n       {:warn-type :property,\n        :form form,\n        :type\n        (symbol\n         \"js\"\n         (string/join\n          \".\"\n          (cond-> pre' (= 'prototype (last pre')) butlast))),\n        :property prop})))))\n  (when\n   (js-tag? tag)\n   (let\n    [pre (-> tag meta :prefix)]\n    (when-not\n     (has-extern? pre)\n     (swap!\n      env/*compiler*\n      update-in\n      (into\n       [:cljs.analyzer/namespaces (-> env :ns :name) :externs]\n       pre)\n      merge\n      {}))))\n  (case\n   dot-action\n   :cljs.analyzer/access\n   (let\n    [children [:target]]\n    {:op :host-field,\n     :env env,\n     :form form,\n     :target targetexpr,\n     :field field,\n     :children children,\n     :tag\n     (if\n      (js-tag? tag)\n      (or (js-tag (-> tag meta :prefix) :tag) tag)\n      tag)})\n   :cljs.analyzer/call\n   (let\n    [argexprs\n     (mapv (fn* [p1__45107#] (analyze enve p1__45107#)) args)\n     children\n     [:target :args]]\n    {:op :host-call,\n     :env env,\n     :form form,\n     :target targetexpr,\n     :method method,\n     :args argexprs,\n     :children children,\n     :tag\n     (if\n      (js-tag? tag)\n      (or (js-tag (-> tag meta :prefix) :ret-tag) 'js)\n      tag)}))))\n"} {:sym analyze-do-statements, :meta {:doc nil, :arglists ([env exprs])}, :source "(defn\n analyze-do-statements\n [env exprs]\n (disallowing-recur (analyze-do-statements* env exprs)))\n"} {:sym get-line, :meta {:doc nil, :arglists ([x env])}, :source "(defn get-line [x env] (or (-> x meta :line) (:line env)))\n"} {:sym analyze-do-statements*, :meta {:doc nil, :arglists ([env exprs])}, :source "(defn\n analyze-do-statements*\n [env exprs]\n (mapv\n  (fn*\n   [p1__45085#]\n   (analyze (assoc env :context :statement) p1__45085#))\n  (butlast exprs)))\n"} {:sym analyze-seq, :meta {:doc nil, :arglists [[env form name] [env form name opts]]}, :source "(defn\n analyze-seq\n ([env form name]\n  (analyze-seq\n   env\n   form\n   name\n   (when env/*compiler* (:options @env/*compiler*))))\n ([env form name opts]\n  (if\n   (:quoted? env)\n   (analyze-list env form)\n   (let\n    [line\n     (-> form meta :line)\n     line\n     (if (nil? line) (:line env) line)\n     col\n     (-> form meta :column)\n     col\n     (if (nil? col) (:column env) col)\n     env\n     (assoc env :line line :column col)]\n    (let\n     [op (first form)]\n     (when (nil? op) (throw (error env \"Can't call nil\")))\n     (let\n      [mform (macroexpand-1 env form)]\n      (if\n       (identical? form mform)\n       (analyze-seq*-wrap op env form name opts)\n       (analyze env mform name opts))))))))\n"} {:sym desugar-dotted-expr, :meta {:doc nil, :arglists ([{:keys [op], :as expr}])}, :source "(defn\n desugar-dotted-expr\n [{:keys [op], :as expr}]\n (case\n  op\n  (:var :local)\n  (if\n   (dotted-symbol? (symbol (name (:name expr))))\n   (let\n    [s\n     (name (:name expr))\n     idx\n     (.lastIndexOf s \".\")\n     _\n     (assert (not= (inc idx) (count s)))\n     prefix\n     (with-meta\n      (symbol (namespace (:name expr)) (subs s 0 idx))\n      (meta (:form expr)))\n     field\n     (symbol (subs s (inc idx)))]\n    (assert (not (:const-expr expr)))\n    {:op :host-field,\n     :env (:env expr),\n     :form (list '. prefix field),\n     :target\n     (desugar-dotted-expr\n      (->\n       expr\n       (assoc :name prefix :form prefix)\n       (dissoc :tag)\n       (assoc-in [:info :name] prefix)\n       (assoc-in [:env :context] :expr))),\n     :field field,\n     :tag (:tag expr),\n     :children [:target]})\n   expr)\n  expr))\n"} {:sym find-def-clash, :meta {:doc nil, :arglists ([env ns segments])}, :source "(defn\n find-def-clash\n [env ns segments]\n (let\n  [to-check\n   (map\n    (fn\n     [xs]\n     [(symbol (string/join \".\" (butlast xs))) (symbol (last xs))])\n    (drop 2 (reductions conj [] segments)))]\n  (doseq\n   [[clash-ns name] to-check]\n   (when\n    (get-in\n     @env/*compiler*\n     [:cljs.analyzer/namespaces clash-ns :defs name])\n    (warning\n     :ns-var-clash\n     env\n     {:ns ns, :var (symbol (str clash-ns) (str name))})))))\n"} {:sym has-error-data?, :meta {:doc nil, :arglists ([ex])}, :source "(defn\n has-error-data?\n #?(:cljs {:tag boolean})\n [ex]\n (contains? (ex-data ex) :clojure.error/phase))\n"} {:sym fn-name-var, :meta {:doc nil, :arglists ([env locals name])}, :source "(defn\n fn-name-var\n [env locals name]\n (when\n  (some? name)\n  (let\n   [ns\n    (-> env :ns :name)\n    shadow\n    (handle-symbol-local name (get locals name))\n    shadow\n    (when (nil? shadow) (get-in env [:js-globals name]))\n    fn-scope\n    (:fn-scope env)\n    name-var\n    {:name name,\n     :op :binding,\n     :local :fn,\n     :info\n     {:fn-self-name true, :fn-scope fn-scope, :ns ns, :shadow shadow}}\n    tag\n    (-> name meta :tag)\n    ret-tag\n    (when (some? tag) {:ret-tag tag})]\n   (merge name-var ret-tag))))\n"} {:sym goog-module-dep?, :meta {:doc nil, :arglists ([module])}, :source "(defn\n goog-module-dep?\n [module]\n (let\n  [[module _]\n   (lib&sublib module)\n   module-str\n   (str module)\n   options\n   (compiler-options)]\n  (if\n   (and\n    (:global-goog-object&array options)\n    (#{\"goog.array\" \"goog.object\"} module-str))\n   false\n   (=\n    :goog\n    (get-in\n     @env/*compiler*\n     [:js-dependency-index module-str :module])))))\n"} {:sym munge-node-lib, :meta {:doc nil, :arglists ([name])}, :source "(defn\n munge-node-lib\n [name]\n (str\n  \"node$module$\"\n  (munge\n   (string/replace (str name) #\"[.\\/]\" #?(:clj \"\\\\$\" :cljs \"$$\")))))\n"} {:sym *load-macros*, :meta {}, :source "(def *load-macros* true)\n"} {:sym add-types, :meta {:doc "Produces a union of types.", :arglists [[] [t1] [t1 t2] [t1 t2 & ts]]}, :source "(defn\n add-types\n \"Produces a union of types.\"\n ([] 'any)\n ([t1] t1)\n ([t1 t2]\n  (if\n   (or (nil? t1) (nil? t2))\n   'any\n   (-> (set/union (->type-set t1) (->type-set t2)) canonicalize-type)))\n ([t1 t2 & ts] (apply add-types (add-types t1 t2) ts)))\n"} {:sym excluded?, :meta {:doc nil, :arglists ([env sym])}, :source "(defn\n excluded?\n #?(:cljs {:tag boolean})\n [env sym]\n (or\n  (some? (gets env :ns :excludes sym))\n  (some?\n   (gets\n    @env/*compiler*\n    :cljs.analyzer/namespaces\n    (gets env :ns :name)\n    :excludes\n    sym))))\n"} {:sym empty-env, :meta {:doc "Construct an empty analysis environment. Required to analyze forms.", :arglists ([])}, :source "(defn\n empty-env\n \"Construct an empty analysis environment. Required to analyze forms.\"\n []\n (ensure\n  {:ns (get-namespace *cljs-ns*),\n   :context :statement,\n   :locals {},\n   :fn-scope [],\n   :js-globals\n   (into\n    {}\n    (map\n     (fn*\n      [p1__45070#]\n      (vector p1__45070# {:op :js-var, :name p1__45070#, :ns 'js}))\n     '(alert\n       window\n       document\n       console\n       escape\n       unescape\n       screen\n       location\n       navigator\n       history\n       location\n       global\n       process\n       require\n       module\n       exports)))}))\n"} {:sym public-name?, :meta {:doc "Is sym public?", :arglists ([ns sym])}, :source "(defn\n public-name?\n \"Is sym public?\"\n #?(:cljs {:tag boolean})\n [ns sym]\n (let\n  [var-ast\n   (or\n    (gets @env/*compiler* :cljs.analyzer/namespaces ns :defs sym)\n    #?(:clj (gets (clojure.core/deref env/*compiler*) :cljs.analyzer/namespaces ns :macros sym) :cljs (gets (clojure.core/deref env/*compiler*) :cljs.analyzer/namespaces (symbol (str (name ns) \"$macros\")) :defs sym)))]\n  (and\n   (some? var-ast)\n   (not (or (:private var-ast) (:anonymous var-ast))))))\n"} {:sym default-warning-handler, :meta {:doc nil, :arglists ([warning-type env extra])}, :source "(defn\n default-warning-handler\n [warning-type env extra]\n (when\n  (warning-type *cljs-warnings*)\n  (when-let\n   [s (error-message warning-type extra)]\n   #?(:clj (binding [*out* *err*] (println (message env (str \"WARNING: \" s)))) :cljs (binding [*print-fn* *print-err-fn*] (println (message env (str \"WARNING: \" s))))))))\n"} {:sym resolve-ns-alias, :meta {:doc nil, :arglists [[env name] [env name not-found]]}, :source "(defn\n resolve-ns-alias\n ([env name] (resolve-ns-alias env name (symbol name)))\n ([env name not-found]\n  (let [sym (symbol name)] (get (:requires (:ns env)) sym not-found))))\n"} {:sym intern-macros, :meta {:doc "Given a Clojure namespace intern all macros into the ambient ClojureScript\n   analysis environment.", :arglists [[ns] [ns reload]]}, :source "(defn\n intern-macros\n \"Given a Clojure namespace intern all macros into the ambient ClojureScript\\n   analysis environment.\"\n ([ns] (intern-macros ns false))\n ([ns reload]\n  (when\n   (or\n    (nil? (gets @env/*compiler* :cljs.analyzer/namespaces ns :macros))\n    reload)\n   (swap!\n    env/*compiler*\n    assoc-in\n    [:cljs.analyzer/namespaces ns :macros]\n    (->>\n     #?(:clj (ns-interns ns) :cljs (ns-interns* ns))\n     (filter (fn [[_ v]] (.isMacro v)))\n     (map\n      (fn\n       [[k v]]\n       [k\n        (as->\n         (meta v)\n         vm\n         (let\n          [ns (.getName (:ns vm))]\n          (assoc\n           vm\n           :ns\n           ns\n           :name\n           (symbol (str ns) (str k))\n           :macro\n           true)))]))\n     (into {}))))))\n"} {:sym const-expr->constant-value, :meta {:doc nil, :arglists ([{:keys [op], :as e}])}, :source "(defn\n const-expr->constant-value\n [{:keys [op], :as e}]\n (case\n  op\n  :quote\n  (const-expr->constant-value (:expr e))\n  :const\n  (:val e)\n  :map\n  (zipmap\n   (map const-expr->constant-value (:keys e))\n   (map const-expr->constant-value (:vals e)))\n  :set\n  (into #{} (map const-expr->constant-value (:items e)))\n  :vector\n  (into [] (map const-expr->constant-value (:items e)))))\n"} {:sym *macro-infer*, :meta {}, :source "(def *macro-infer* true)\n"} {:sym gen-constant-id, :meta {:doc nil, :arglists ([value])}, :source "(defn\n gen-constant-id\n [value]\n (let\n  [prefix\n   (cond\n    (keyword? value)\n    \"cst$kw$\"\n    (symbol? value)\n    \"cst$sym$\"\n    :else\n    (throw\n     #?(:clj (Exception. (str \"constant type \" (type value) \" not supported\")) :cljs (js/Error. (str \"constant type \" (type value) \" not supported\")))))\n   name\n   (if (keyword? value) (subs (str value) 1) (str value))\n   name\n   (if\n    (= \".\" name)\n    \"_DOT_\"\n    (->\n     name\n     (string/replace \"-\" \"_DASH_\")\n     (munge)\n     (string/replace \".\" \"$\")\n     (string/replace\n      #\"(?i)[^a-z0-9$_]\"\n      (fn* [p1__45069#] (hex-format p1__45069# 4)))))]\n  (symbol (str prefix name))))\n"} {:sym lib&sublib, :meta {:doc "If a library name has the form foo$bar, return a vector of the library and\n   the sublibrary property.", :arglists ([lib])}, :source "(defn\n lib&sublib\n \"If a library name has the form foo$bar, return a vector of the library and\\n   the sublibrary property.\"\n [lib]\n (if-let\n  [xs (re-matches #\"(.*)\\$(.*)\" (str lib))]\n  (drop 1 xs)\n  [lib nil]))\n"} {:sym macro-autoload-ns?, :meta {:doc "Given a spec form check whether the spec namespace requires a macro file\n   of the same name. If so return true.", :arglists ([form])}, :source "(defn\n macro-autoload-ns?\n \"Given a spec form check whether the spec namespace requires a macro file\\n   of the same name. If so return true.\"\n #?(:cljs {:tag boolean})\n [form]\n (when\n  *macro-infer*\n  (let\n   [ns\n    (if (sequential? form) (first form) form)\n    {:keys [use-macros require-macros]}\n    (or\n     (get-in @env/*compiler* [:cljs.analyzer/namespaces ns])\n     #?(:clj (when-let [res (util/ns->source ns)] (:ast (parse-ns res)))))]\n   (or\n    (some #{ns} (vals use-macros))\n    (some #{ns} (vals require-macros))))))\n"} {:sym get-tag, :meta {:doc nil, :arglists ([e])}, :source "(defn\n get-tag\n [e]\n (if-some\n  [tag (-> e :form meta :tag)]\n  tag\n  (if-some [tag (-> e :tag)] tag (-> e :info :tag))))\n"} {:sym implicit-nses, :meta {}, :source "(def\n implicit-nses\n '#{String goog.string goog goog.object Math goog.array})\n"} {:sym valid-proto, :meta {:doc nil, :arglists ([x])}, :source "(defn valid-proto [x] (when (symbol? x) x))\n"} {:sym normalize-js-tag, :meta {:doc nil, :arglists ([x])}, :source "(defn\n normalize-js-tag\n [x]\n (if-not\n  (= 'js x)\n  (with-meta\n   'js\n   {:prefix\n    (conj\n     (->> (string/split (name x) #\"\\.\") (map symbol) vec)\n     'prototype)})\n  x))\n"} {:sym analyze-list, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n analyze-list\n [env form]\n (let\n  [expr-env\n   (assoc env :context :expr)\n   items\n   (disallowing-recur\n    (mapv (fn* [p1__45115#] (analyze expr-env p1__45115#)) form))]\n  (analyze-wrap-meta\n   {:op :list,\n    :env env,\n    :form form,\n    :items items,\n    :children [:items],\n    :tag 'cljs.core/IList})))\n"} {:sym warning, :meta {:doc nil, :arglists ([warning-type env extra])}, :source "(defn\n warning\n [warning-type env extra]\n (doseq\n  [handler *cljs-warning-handlers*]\n  (handler warning-type env extra)))\n"} {:sym implicit-import?, :meta {:doc nil, :arglists ([env prefix suffix])}, :source "(defn\n implicit-import?\n #?(:cljs {:tag boolean})\n [env prefix suffix]\n (contains? implicit-nses prefix))\n"} {:sym missing-use-macros, :meta {:doc nil, :arglists ([use-macros env])}, :source "(defn\n missing-use-macros\n [use-macros env]\n (let\n  [cenv @env/*compiler*]\n  (into\n   {}\n   (filter (fn [[sym lib]] (missing-use-macro? lib sym)) use-macros))))\n"} {:sym analyze*, :meta {:doc nil, :arglists ([env form name opts])}, :source "(defn\n analyze*\n [env form name opts]\n (let\n  [passes\n   *passes*\n   passes\n   (if (nil? passes) default-passes passes)\n   form\n   (if (instance? LazySeq form) (if (seq form) form ()) form)\n   ast\n   (analyze-form env form name opts)]\n  (reduce (fn [ast pass] (pass env ast opts)) ast passes)))\n"} {:sym -cljs-macros-loaded, :meta {}, :source "(def -cljs-macros-loaded (atom false))\n"} {:sym check-uses, :meta {:doc nil, :arglists ([uses env])}, :source "(defn\n check-uses\n [uses env]\n (let\n  [cenv @env/*compiler*]\n  (doseq\n   [[sym lib] uses]\n   (when\n    (missing-use? lib sym cenv)\n    (throw\n     (error\n      env\n      (error-message\n       :undeclared-ns-form\n       {:type \"var\", :lib lib, :sym sym})))))))\n"} {:sym find-matching-method, :meta {:doc nil, :arglists ([f params])}, :source "(defn\n find-matching-method\n [f params]\n (let\n  [methods (or (:methods f) (-> f :info :methods)) c (count params)]\n  (some\n   (fn [m] (and (or (== (:fixed-arity m) c) (:variadic? m)) m))\n   methods)))\n"} {:sym *private-var-access-nowarn*, :meta {}, :source "(def *private-var-access-nowarn* false)\n"} {:sym invoke-arg-type-validators, :meta {}, :source "(def\n invoke-arg-type-validators\n (let\n  [aget-validator\n   {:valid?\n    (fn*\n     [p1__45122#]\n     (and\n      (array-type? (first p1__45122#))\n      (every? numeric-type? (rest p1__45122#)))),\n    :warning-type :invalid-array-access}\n   aset-validator\n   {:valid?\n    (fn*\n     [p1__45123#]\n     (and\n      (array-type? (first p1__45123#))\n      (every? numeric-type? (butlast (rest p1__45123#))))),\n    :warning-type :invalid-array-access}]\n  {'cljs.core/checked-aget aget-validator,\n   'cljs.core/checked-aset aset-validator,\n   'cljs.core/checked-aget' aget-validator,\n   'cljs.core/checked-aset' aset-validator}))\n"} {:sym *cljs-file*, :meta {}, :source "(def *cljs-file* nil)\n"} {:sym *file-defs*, :meta {}, :source "(def *file-defs* nil)\n"} {:sym infer-if, :meta {:doc nil, :arglists ([env e])}, :source "(defn\n infer-if\n [env e]\n (let\n  [{:keys [op form]}\n   (unwrap-quote (:test e))\n   then-tag\n   (infer-tag env (:then e))]\n  (if\n   (and\n    #?(:clj (= op :const) :cljs (keyword-identical? op :const))\n    (not (nil? form))\n    (not (false? form)))\n   then-tag\n   (let\n    [else-tag (infer-tag env (:else e))]\n    (cond\n     (or\n      #?(:clj (= then-tag else-tag) :cljs (symbol-identical? then-tag else-tag))\n      #?(:clj (= else-tag impl/IGNORE_SYM) :cljs (symbol-identical? else-tag impl/IGNORE_SYM)))\n     then-tag\n     #?(:clj (= then-tag impl/IGNORE_SYM) :cljs (symbol-identical? then-tag impl/IGNORE_SYM))\n     else-tag\n     (and\n      (or (some? (get impl/NOT_NATIVE then-tag)) (type? env then-tag))\n      (or (some? (get impl/NOT_NATIVE else-tag)) (type? env else-tag)))\n     'clj\n     :else\n     (if\n      (and\n       (some? (get impl/BOOLEAN_OR_SEQ then-tag))\n       (some? (get impl/BOOLEAN_OR_SEQ else-tag)))\n      'seq\n      (let\n       [then-tag\n        (if\n         #?(:clj (set? then-tag) :cljs (impl/cljs-set? then-tag))\n         then-tag\n         #{then-tag})\n        else-tag\n        (if\n         #?(:clj (set? else-tag) :cljs (impl/cljs-set? else-tag))\n         else-tag\n         #{else-tag})]\n       (into then-tag else-tag))))))))\n"} {:sym *verbose*, :meta {}, :source "(def *verbose* false)\n"} {:sym analyze-js-value, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n analyze-js-value\n [env form]\n (let\n  [val (.-val form) expr-env (assoc env :context :expr)]\n  (if\n   (map? val)\n   (let\n    [keys\n     (vec (keys val))\n     vals\n     (disallowing-recur\n      (mapv\n       (fn* [p1__45118#] (analyze expr-env p1__45118#))\n       (vals val)))]\n    {:op :js-object,\n     :env env,\n     :form form,\n     :keys keys,\n     :vals vals,\n     :children [:vals],\n     :tag 'object})\n   (let\n    [items\n     (disallowing-recur\n      (mapv (fn* [p1__45119#] (analyze expr-env p1__45119#)) val))]\n    {:op :js-array,\n     :env env,\n     :form form,\n     :items items,\n     :children [:items],\n     :tag 'array}))))\n"} {:sym ns->module-type, :meta {:doc nil, :arglists ([ns])}, :source "(defn\n ns->module-type\n [ns]\n (cond\n  (goog-module-dep? ns)\n  :goog-module\n  (js-module-exists? ns)\n  :js\n  (node-module-dep? ns)\n  :node\n  (dep-has-global-exports? ns)\n  :global))\n"} {:sym source-info, :meta {:doc nil, :arglists [[env] [name env]]}, :source "(defn\n source-info\n ([env] (when (:line env) (source-info nil env)))\n ([name env]\n  (cond->\n   {:file\n    (if\n     (= (-> env :ns :name) 'cljs.core)\n     \"cljs/core.cljs\"\n     *cljs-file*),\n    :line (get-line name env),\n    :column (get-col name env)}\n   (:root-source-info env)\n   (merge (select-keys env [:root-source-info])))))\n"} {:sym analyze-fn-method-param, :meta {:doc nil, :arglists ([env])}, :source "(defn\n analyze-fn-method-param\n [env]\n (fn\n  [[locals params] [arg-id name]]\n  (when\n   (namespace name)\n   (throw\n    (error env (str \"Can't use qualified name as parameter: \" name))))\n  (let\n   [line\n    (get-line name env)\n    column\n    (get-col name env)\n    nmeta\n    (meta name)\n    tag\n    (:tag nmeta)\n    shadow\n    (when (some? locals) (handle-symbol-local name (locals name)))\n    env\n    (merge (select-keys env [:context]) {:line line, :column column})\n    param\n    {:name name,\n     :binding-form? true,\n     :op :binding,\n     :env env,\n     :column column,\n     :line line,\n     :arg-id arg-id,\n     :info {:name name, :shadow shadow},\n     :tag tag,\n     :shadow shadow,\n     :local :arg}]\n   [(assoc locals name param) (conj params param)])))\n"} {:sym analyze-set, :meta {:doc nil, :arglists ([env form])}, :source "(defn\n analyze-set\n [env form]\n (let\n  [expr-env\n   (assoc env :context :expr)\n   items\n   (disallowing-recur\n    (mapv (fn* [p1__45117#] (analyze expr-env p1__45117#)) form))]\n  (analyze-wrap-meta\n   {:op :set,\n    :env env,\n    :form form,\n    :items items,\n    :children [:items],\n    :tag 'cljs.core/ISet})))\n"} {:sym numeric-type?, :meta {:doc nil, :arglists ([t])}, :source "(defn\n numeric-type?\n #?(:cljs {:tag boolean})\n [t]\n (cond\n  (nil? t)\n  true\n  (= 'clj-nil t)\n  true\n  (js-tag? t)\n  true\n  :else\n  (if\n   (and (symbol? t) (some? (get NUMERIC_SET t)))\n   true\n   (when\n    #?(:clj (set? t) :cljs (impl/cljs-set? t))\n    (or\n     (contains? t 'number)\n     (contains? t 'long)\n     (contains? t 'double)\n     (contains? t 'any)\n     (contains? t 'js))))))\n"} {:sym ast?, :meta {:doc nil, :arglists ([x])}, :source "(defn\n ast?\n #?(:cljs {:tag boolean})\n [x]\n (and (map? x) (contains? x :op)))\n"} {:sym checked-arrays, :meta {:doc "Returns false-y, :warn, or :error based on configuration and the\n   current value of *unchecked-arrays*.", :arglists ([])}, :source "(defn\n checked-arrays\n \"Returns false-y, :warn, or :error based on configuration and the\\n   current value of *unchecked-arrays*.\"\n []\n (when\n  (and\n   (not= :advanced (:optimizations (compiler-options)))\n   (not *unchecked-arrays*))\n  *checked-arrays*))\n"} {:sym elide-env, :meta {:doc nil, :arglists ([env ast opts])}, :source "(defn elide-env [env ast opts] (dissoc ast :env))\n"} {:sym js-module-exists?*, :meta {}, :source "(def js-module-exists?* (memoize internal-js-module-exists?))\n"} {:sym parse-require-spec, :meta {:doc nil, :arglists ([env macros? deps aliases spec])}, :source "(defn\n parse-require-spec\n [env macros? deps aliases spec]\n (if\n  (or (symbol? spec) (string? spec))\n  (recur env macros? deps aliases [spec])\n  (do\n   (basic-validate-ns-spec env macros? spec)\n   (let\n    [[lib & opts]\n     spec\n     [lib js-module-provides]\n     (if-some\n      [js-module-name\n       (gets @env/*compiler* :js-module-index (str lib) :name)]\n      [(symbol js-module-name) lib]\n      [lib nil])\n     {alias :as,\n      referred :refer,\n      renamed :rename,\n      :or {alias (if (string? lib) (symbol (munge lib)) lib)}}\n     (apply hash-map opts)\n     referred-without-renamed\n     (seq (remove (set (keys renamed)) referred))\n     [rk uk renk]\n     (if\n      macros?\n      [:require-macros :use-macros :rename-macros]\n      [:require :use :rename])]\n    (when-not\n     (or (symbol? alias) (nil? alias))\n     (throw\n      (error\n       env\n       (parse-ns-error-msg\n        spec\n        \":as must be followed by a symbol in :require / :require-macros\"))))\n    (when\n     (some? alias)\n     (let\n      [alias-type\n       (if macros? :macros :fns)\n       lib'\n       ((alias-type @aliases) alias)]\n      (when\n       (and (some? lib') (not= lib lib'))\n       (throw\n        (error\n         env\n         (parse-ns-error-msg spec \":as alias must be unique\"))))\n      (swap!\n       aliases\n       update-in\n       [alias-type]\n       conj\n       [alias lib]\n       (when js-module-provides [js-module-provides lib]))))\n    (when-not\n     (or\n      (and (sequential? referred) (every? symbol? referred))\n      (nil? referred))\n     (throw\n      (error\n       env\n       (parse-ns-error-msg\n        spec\n        \":refer must be followed by a sequence of symbols in :require / :require-macros\"))))\n    (when-not macros? (swap! deps conj lib))\n    (merge\n     (when\n      (some? alias)\n      {rk\n       (merge\n        {alias lib}\n        {lib lib}\n        (when js-module-provides {js-module-provides lib}))})\n     (when\n      (some? referred-without-renamed)\n      {uk\n       (apply\n        hash-map\n        (interleave referred-without-renamed (repeat lib)))})\n     (when\n      (some? renamed)\n      {renk\n       (reduce\n        (fn\n         [m [original renamed]]\n         (when-not\n          (some #{original} referred)\n          (throw\n           (error\n            env\n            (str \"Renamed symbol \" original \" not referred\"))))\n         (assoc m renamed (symbol (str lib) (str original))))\n        {}\n        renamed)}))))))\n"} {:sym analyze-wrap-meta, :meta {:doc nil, :arglists ([expr])}, :source "(defn\n analyze-wrap-meta\n [expr]\n (let\n  [form (:form expr) m (elide-irrelevant-meta (meta form))]\n  (if\n   (some? (seq m))\n   (let\n    [env\n     (:env expr)\n     expr\n     (assoc-in expr [:env :context] :expr)\n     meta-expr\n     (analyze-map (:env expr) m)]\n    {:op :with-meta,\n     :env env,\n     :form form,\n     :meta meta-expr,\n     :expr expr,\n     :children [:meta :expr]})\n   expr)))\n"} {:sym get-js-tag, :meta {:doc nil, :arglists ([form])}, :source "(defn\n get-js-tag\n [form]\n (let\n  [form-meta (meta form)]\n  (if-some\n   [tag (:tag form-meta)]\n   tag\n   (when (true? (:numeric form-meta)) 'number))))\n"} {:sym *analyze-deps*, :meta {}, :source "(def *analyze-deps* true)\n"} {:sym analyze-let-bindings*, :meta {:doc nil, :arglists ([encl-env bindings op])}, :source "(defn\n analyze-let-bindings*\n [encl-env bindings op]\n (loop\n  [bes\n   []\n   env\n   (assoc encl-env :context :expr)\n   bindings\n   (seq (partition 2 bindings))]\n  (if-some\n   [[name init] (first bindings)]\n   (let\n    []\n    (when\n     (or\n      (some? (namespace name))\n      #?(:clj (.contains (str name) \".\") :cljs (goog.string/contains (str name) \".\")))\n     (throw (error encl-env (str \"Invalid local name: \" name))))\n    (let\n     [init-expr\n      (analyze-let-binding-init\n       env\n       init\n       (cons {:params bes} *loop-lets*))\n      line\n      (get-line name env)\n      col\n      (get-col name env)\n      shadow\n      (handle-symbol-local name (get-in env [:locals name]))\n      be\n      {:children [:init],\n       :init init-expr,\n       :name name,\n       :binding-form? true,\n       :op :binding,\n       :env {:line line, :column col},\n       :column col,\n       :line line,\n       :info {:name name, :shadow shadow},\n       :tag (get-let-tag name init-expr),\n       :shadow shadow,\n       :local op}\n      be\n      (if\n       (= :fn (:op init-expr))\n       (merge\n        be\n        {:fn-var true,\n         :methods\n         (into\n          []\n          (map\n           (fn*\n            [p1__45086#]\n            (select-keys p1__45086# [:tag :fixed-arity :variadic?]))\n           (:methods init-expr))),\n         :variadic? (:variadic? init-expr),\n         :max-fixed-arity (:max-fixed-arity init-expr),\n         :method-params (map :params (:methods init-expr))})\n       be)]\n     (recur\n      (conj bes be)\n      (assoc-in env [:locals name] be)\n      (next bindings))))\n   [bes env])))\n"} {:sym resolve-import, :meta {:doc "goog.modules are deterministically assigned to a property of the namespace,\n   we cannot expect the reference will be globally available, so we resolve to\n   namespace local reference.", :arglists ([env import])}, :source "(defn\n resolve-import\n \"goog.modules are deterministically assigned to a property of the namespace,\\n   we cannot expect the reference will be globally available, so we resolve to\\n   namespace local reference.\"\n [env import]\n (if\n  (goog-module-dep? import)\n  (symbol (munge-goog-module-lib (-> env :ns :name) import))\n  import))\n"} {:sym analysis-error?, :meta {:doc nil, :arglists ([ex])}, :source "(defn\n analysis-error?\n #?(:cljs {:tag boolean})\n [ex]\n (= :cljs/analysis-error (:tag (ex-data ex))))\n"} {:sym replace-env-pass, :meta {:doc nil, :arglists ([new-env])}, :source "(defn\n replace-env-pass\n [new-env]\n (fn [env ast opts] (assoc ast :env new-env)))\n"} {:sym parse-ns-excludes, :meta {:doc nil, :arglists ([env args])}, :source "(defn\n parse-ns-excludes\n [env args]\n (reduce\n  (fn\n   [s [k & filters]]\n   (if\n    (= k :refer-clojure)\n    (do\n     (when\n      (seq (:excludes s))\n      (throw\n       (error\n        env\n        \"Only one :refer-clojure form is allowed per namespace definition\")))\n     (let\n      [valid-kws\n       #{:exclude :rename}\n       xs\n       (loop\n        [fs\n         (seq filters)\n         ret\n         {:excludes #{}, :renames {}}\n         err\n         (not (even? (count filters)))]\n        (cond\n         (true? err)\n         (throw\n          (error\n           env\n           \"Only [:refer-clojure :exclude (names)] and optionally `:rename {from to}` specs supported\"))\n         (some? fs)\n         (let\n          [kw (first fs)]\n          (if\n           (valid-kws kw)\n           (let\n            [refs (second fs)]\n            (cond\n             (not\n              (or\n               (and\n                (= kw :exclude)\n                (sequential? refs)\n                (every? symbol? refs))\n               (and\n                (= kw :rename)\n                (map? refs)\n                (every?\n                 (fn* [p1__45096#] (every? symbol? p1__45096#))\n                 refs))))\n             (recur fs ret true)\n             (= kw :exclude)\n             (recur\n              (nnext fs)\n              (update-in ret [:excludes] into refs)\n              false)\n             (= kw :rename)\n             (recur\n              (nnext fs)\n              (update-in ret [:renames] merge refs)\n              false)))\n           (recur fs ret true)))\n         :else\n         ret))]\n      (merge-with into s xs)))\n    s))\n  {:excludes #{}, :renames {}}\n  args))\n"} {:sym analyze-fn-methods-pass2, :meta {:doc nil, :arglists ([menv locals type meths])}, :source "(defn\n analyze-fn-methods-pass2\n [menv locals type meths]\n (analyze-fn-methods-pass2* menv locals type meths))\n"} {:sym core-name?, :meta {:doc "Is sym visible from core in the current compilation namespace?", :arglists ([env sym])}, :source "(defn\n core-name?\n \"Is sym visible from core in the current compilation namespace?\"\n #?(:cljs {:tag boolean})\n [env sym]\n (and\n  (or\n   (some?\n    (gets\n     @env/*compiler*\n     :cljs.analyzer/namespaces\n     'cljs.core\n     :defs\n     sym))\n   (if-some\n    [mac (get-expander sym env)]\n    (let\n     [ns (-> mac meta :ns)]\n     (=\n      (.getName ns)\n      #?(:clj (quote cljs.core) :cljs (quote cljs.core$macros))))\n    false))\n  (not (contains? (-> env :ns :excludes) sym))))\n"} {:sym get-let-tag, :meta {:doc nil, :arglists ([name init-expr])}, :source "(defn\n get-let-tag\n [name init-expr]\n (if-some\n  [tag (-> name meta :tag)]\n  tag\n  (if-some [tag (-> init-expr :tag)] tag (-> init-expr :info :tag))))\n"} {:sym specials, :meta {}, :source "(def\n specials\n '#{&\n    case*\n    defrecord*\n    try\n    ns*\n    loop*\n    do\n    letfn*\n    if\n    new\n    ns\n    deftype*\n    let*\n    js*\n    fn*\n    recur\n    set!\n    .\n    var\n    quote\n    throw\n    def})\n"} {:sym elide-irrelevant-meta, :meta {:doc nil, :arglists ([m])}, :source "(defn\n elide-irrelevant-meta\n [m]\n (-> m elide-reader-meta elide-analyzer-meta))\n"} {:sym resolve-macro-ns-alias, :meta {:doc nil, :arglists [[env name] [env name not-found]]}, :source "(defn\n resolve-macro-ns-alias\n ([env name] (resolve-macro-ns-alias env name (symbol name)))\n ([env name not-found]\n  (let\n   [sym (symbol name)]\n   (get (:require-macros (:ns env)) sym not-found))))\n"} {:sym check-invoke-arg-types, :meta {:doc nil, :arglists ([env {:keys [op], :as ast} opts])}, :source "(defn\n check-invoke-arg-types\n [env {:keys [op], :as ast} opts]\n (when\n  (and\n   (not (analyzed? ast))\n   #?(:clj (= :invoke op) :cljs (keyword-identical? :invoke op)))\n  (when-some\n   [[name {:keys [valid? warning-type]}]\n    (find invoke-arg-type-validators (-> ast :fn :info :name))]\n   (let\n    [types (mapv :tag (:args ast))]\n    (when-not\n     (valid? types)\n     (warning warning-type env {:name name, :types types})))))\n (analyzed ast))\n"} {:sym confirm-ns, :meta {:doc "Given env, an analysis environment, and ns-sym, a symbol identifying a\n   namespace, confirm that the namespace exists. Warn if not found.", :arglists ([env ns-sym])}, :source "(defn\n confirm-ns\n \"Given env, an analysis environment, and ns-sym, a symbol identifying a\\n   namespace, confirm that the namespace exists. Warn if not found.\"\n [env ns-sym]\n (when\n  (and\n   (not= 'cljs.core ns-sym)\n   (nil? (get implicit-nses ns-sym))\n   (nil? (get (-> env :ns :requires) ns-sym))\n   (nil? (gets @env/*compiler* :cljs.analyzer/namespaces ns-sym))\n   #?(:clj (nil? (util/ns->source ns-sym)))\n   (not (js-module-exists? ns-sym)))\n  (warning :undeclared-ns env {:ns-sym ns-sym, :js-provide ns-sym})))\n"} {:sym default-namespaces, :meta {}, :source "(def\n default-namespaces\n '{cljs.core {:name cljs.core}, cljs.user {:name cljs.user}})\n"} {:sym canonicalize-specs, :meta {:doc nil, :arglists ([specs])}, :source "(defn\n canonicalize-specs\n [specs]\n (letfn\n  [(canonicalize\n    [quoted-spec-or-kw]\n    (if\n     (keyword? quoted-spec-or-kw)\n     quoted-spec-or-kw\n     (as->\n      (second quoted-spec-or-kw)\n      spec\n      (if (or (vector? spec) (map? spec)) spec [spec]))))]\n  (map canonicalize specs)))\n"} {:sym confirm-var-exists-throw, :meta {:doc nil, :arglists ([])}, :source "(defn\n confirm-var-exists-throw\n []\n (fn\n  [env prefix suffix]\n  (confirm-var-exists\n   env\n   prefix\n   suffix\n   (fn\n    [env prefix suffix]\n    (throw\n     (error\n      env\n      (str \"Unable to resolve var: \" suffix \" in this context\")))))))\n"} {:sym js-module-exists?, :meta {:doc nil, :arglists ([module])}, :source "(defn\n js-module-exists?\n [module]\n (js-module-exists?*\n  (get-in @env/*compiler* [:js-module-index])\n  module))\n"} {:sym var-ast, :meta {:doc nil, :arglists ([env sym])}, :source "(defn\n var-ast\n [env sym]\n (binding\n  [*private-var-access-nowarn* true]\n  (let\n   [env\n    (dissoc env :locals)\n    var\n    (resolve-var env sym (confirm-var-exists-throw))\n    expr-env\n    (assoc env :context :expr)]\n   (when-some\n    [var-ns (:ns var)]\n    {:var (analyze expr-env sym),\n     :sym\n     (analyze\n      expr-env\n      (clojure.core/sequence\n       (clojure.core/seq\n        (clojure.core/concat\n         (clojure.core/list 'quote)\n         (clojure.core/list\n          (symbol (name var-ns) (name (:name var)))))))),\n     :meta (var-meta var expr-env)}))))\n"} {:sym add-consts, :meta {:doc "Given a compiler state and a map from fully qualified symbols to constant\n  EDN values, update the compiler state marking these vars as const to support\n  direct substitution of these vars in source.", :arglists ([compiler-state constants-map])}, :source "(defn\n add-consts\n \"Given a compiler state and a map from fully qualified symbols to constant\\n  EDN values, update the compiler state marking these vars as const to support\\n  direct substitution of these vars in source.\"\n [compiler-state constants-map]\n (reduce-kv\n  (fn\n   [compiler-state sym value]\n   (let\n    [ns (symbol (namespace sym))]\n    (update-in\n     compiler-state\n     [:cljs.analyzer/namespaces ns :defs (symbol (name sym))]\n     merge\n     {:const-expr\n      (binding\n       [*passes* (conj *passes* (replace-env-pass {:context :expr}))]\n       (analyze (empty-env) value))})))\n  compiler-state\n  constants-map))\n"} {:sym error, :meta {:doc nil, :arglists [[env msg] [env msg cause]]}, :source "(defn\n error\n ([env msg] (error env msg nil))\n ([env msg cause]\n  (ex-info\n   (message env msg)\n   (assoc (source-info env) :tag :cljs/analysis-error)\n   cause)))\n"} {:sym invokeable-ns?, :meta {:doc "Returns true if ns is a required namespace and a JavaScript module that\n   might be invokeable as a function.", :arglists ([ns env])}, :source "(defn\n invokeable-ns?\n \"Returns true if ns is a required namespace and a JavaScript module that\\n   might be invokeable as a function.\"\n [ns env]\n (let\n  [ns (resolve-ns-alias env ns)]\n  (and\n   (required? ns env)\n   (or\n    (js-module-exists? ns)\n    (node-module-dep? ns)\n    (dep-has-global-exports? ns)))))\n"} {:sym *cljs-ns*, :meta {}, :source "(def *cljs-ns* 'cljs.user)\n"}), oakcljs.tools.reader.reader-types ({:sym indexing-push-back-reader, :meta {:doc "Creates an IndexingPushbackReader from a given string or PushbackReader", :arglists [[s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]]}, :source "(defn\n indexing-push-back-reader\n \"Creates an IndexingPushbackReader from a given string or PushbackReader\"\n ([s-or-rdr] (indexing-push-back-reader s-or-rdr 1))\n ([s-or-rdr buf-len] (indexing-push-back-reader s-or-rdr buf-len nil))\n ([s-or-rdr buf-len file-name]\n  (IndexingPushbackReader.\n   (if\n    (string? s-or-rdr)\n    (string-push-back-reader s-or-rdr buf-len)\n    s-or-rdr)\n   1\n   1\n   true\n   nil\n   0\n   file-name)))\n"} {:sym log-source*, :meta {:doc nil, :arglists ([reader f])}, :source "(defn\n log-source*\n [reader f]\n (let\n  [buffer (:buffer @(.-frames reader))]\n  (try\n   (swap!\n    (.-frames reader)\n    update-in\n    [:offset]\n    conj\n    (.getLength buffer))\n   (let\n    [ret (f)]\n    (if\n     (implements? IMeta ret)\n     (merge-meta ret {:source (peek-source-log @(.-frames reader))})\n     ret))\n   (finally (swap! (.-frames reader) update-in [:offset] rest)))))\n"} {:sym merge-meta, :meta {:doc "Returns an object of the same type and value as `obj`, with its\nmetadata merged over `m`.", :arglists ([obj m])}, :source "(defn\n merge-meta\n \"Returns an object of the same type and value as `obj`, with its\\nmetadata merged over `m`.\"\n [obj m]\n (let\n  [orig-meta (meta obj)]\n  (with-meta obj (merge m (dissoc orig-meta :source)))))\n"} {:sym Reader, :meta {:doc nil}, :methods (peek-char read-char)} {:sym source-logging-push-back-reader, :meta {:doc "Creates a SourceLoggingPushbackReader from a given string or PushbackReader", :arglists [[s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]]}, :source "(defn\n source-logging-push-back-reader\n \"Creates a SourceLoggingPushbackReader from a given string or PushbackReader\"\n ([s-or-rdr] (source-logging-push-back-reader s-or-rdr 1))\n ([s-or-rdr buf-len]\n  (source-logging-push-back-reader s-or-rdr buf-len nil))\n ([s-or-rdr buf-len file-name]\n  (SourceLoggingPushbackReader.\n   (if\n    (string? s-or-rdr)\n    (string-push-back-reader s-or-rdr buf-len)\n    s-or-rdr)\n   1\n   1\n   true\n   nil\n   0\n   file-name\n   (atom {:buffer (StringBuffer.), :offset '(0)}))))\n"} {:sym unread, :meta {:doc "Pushes back a single character on to the stream", :arglists ([reader ch])}, :protocol IPushbackReader} {:sym peek-char, :meta {:doc "Returns the next char from the Reader without removing it from the reader stream", :arglists ([reader])}, :protocol Reader} {:sym IPushbackReader, :meta {:doc nil}, :methods (unread)} {:sym indexing-reader?, :meta {:doc "Returns true if the reader satisfies IndexingReader", :arglists ([rdr])}, :source "(defn\n indexing-reader?\n \"Returns true if the reader satisfies IndexingReader\"\n [rdr]\n (implements? IndexingReader rdr))\n"} {:sym string-reader, :meta {:doc "Creates a StringReader from a given string", :arglists [[s]]}, :source "(defn\n string-reader\n \"Creates a StringReader from a given string\"\n ([s] (StringReader. s (count s) 0)))\n"} {:sym read-char, :meta {:doc "Returns the next char from the Reader, nil if the end of stream has been reached", :arglists ([reader])}, :protocol Reader} {:sym get-column-number, :meta {:doc "Returns the column number of the next character to be read from the stream", :arglists ([reader])}, :protocol IndexingReader} {:sym get-file-name, :meta {:doc "Returns the file name the reader is reading from, or nil", :arglists ([reader])}, :protocol IndexingReader} {:sym read-line, :meta {:doc "Reads a line from the reader or from *in* if no reader is specified", :arglists [[rdr]]}, :source "(defn\n read-line\n \"Reads a line from the reader or from *in* if no reader is specified\"\n ([rdr]\n  (loop\n   [c (read-char rdr) s (StringBuffer.)]\n   (if (newline? c) (str s) (recur (read-char rdr) (.append s c))))))\n"} {:sym string-push-back-reader, :meta {:doc "Creates a PushbackReader from a given string", :arglists [[s] [s buf-len]]}, :source "(defn\n string-push-back-reader\n \"Creates a PushbackReader from a given string\"\n ([s] (string-push-back-reader s 1))\n ([s buf-len]\n  (PushbackReader.\n   (string-reader s)\n   (object-array buf-len)\n   buf-len\n   buf-len)))\n"} {:sym line-start?, :meta {:doc "Returns true if rdr is an IndexingReader and the current char starts a new line", :arglists ([rdr])}, :source "(defn\n line-start?\n \"Returns true if rdr is an IndexingReader and the current char starts a new line\"\n [rdr]\n (when (indexing-reader? rdr) (== 1 (get-column-number rdr))))\n"} {:sym source-logging-reader?, :meta {:doc nil, :arglists ([rdr])}, :source "(defn\n source-logging-reader?\n [rdr]\n (instance? SourceLoggingPushbackReader rdr))\n"} {:sym IndexingReader, :meta {:doc nil}, :methods (get-column-number get-file-name get-line-number)} {:sym node-readable-push-back-reader, :meta {:doc nil, :arglists ([readable])}, :source "(defn\n node-readable-push-back-reader\n [readable]\n (PushbackReader.\n  (NodeReadableReader. readable nil)\n  (object-array 1)\n  1\n  1))\n"} {:sym get-line-number, :meta {:doc "Returns the line number of the next character to be read from the stream", :arglists ([reader])}, :protocol IndexingReader}), sablono.normalize ({:sym map-lookup?, :meta {:doc "Returns true if `x` is a map lookup form, otherwise false.", :arglists ([x])}, :source "(defn\n map-lookup?\n \"Returns true if `x` is a map lookup form, otherwise false.\"\n [x]\n (and (list? x) (keyword? (first x))))\n"} {:sym attributes, :meta {:doc "Normalize the `attrs` of an element.", :arglists ([attrs])}, :source "(defn\n attributes\n \"Normalize the `attrs` of an element.\"\n [attrs]\n (cond-> attrs (:class attrs) (update-in [:class] class)))\n"} {:sym compact-map, :meta {:doc "Removes all map entries where the value of the entry is empty.", :arglists ([m])}, :source "(defn\n compact-map\n \"Removes all map entries where the value of the entry is empty.\"\n [m]\n (when m (into {} (remove (fn [[_ v]] (empty? v))) m)))\n"} {:sym children, :meta {:doc "Normalize the children of a HTML element.", :arglists ([x])}, :source "(defn\n children\n \"Normalize the children of a HTML element.\"\n [x]\n (->>\n  (cond\n   (nil? x)\n   '()\n   (string? x)\n   (list x)\n   (util/element? x)\n   (list x)\n   (and (list? x) (symbol? (first x)))\n   (list x)\n   (list? x)\n   x\n   (and\n    (sequential? x)\n    (= (count x) 1)\n    (sequential? (first x))\n    (not (string? (first x)))\n    (not (util/element? (first x))))\n   (children (first x))\n   (sequential? x)\n   x\n   :else\n   (list x))\n  (remove nil?)))\n"} {:sym element, :meta {:doc "Ensure an element vector is of the form [tag-name attrs content].", :arglists ([[tag & content]])}, :source "(defn\n element\n \"Ensure an element vector is of the form [tag-name attrs content].\"\n [[tag & content]]\n (when-not\n  (or (keyword? tag) (symbol? tag) (string? tag))\n  (throw\n   (ex-info\n    (str tag \" is not a valid element name.\")\n    {:tag tag, :content content})))\n (let\n  [[tag id class]\n   (match-tag tag)\n   tag-attrs\n   (compact-map {:id id, :class class})\n   map-attrs\n   (first content)]\n  (if\n   (attrs? map-attrs)\n   [tag\n    (merge-with-class tag-attrs map-attrs)\n    (children (next content))]\n   [tag (attributes tag-attrs) (children content)])))\n"} {:sym match-tag, :meta {:doc "Match `s` as a CSS tag and return a vector of tag name, CSS id and\n  CSS classes.", :arglists ([s])}, :source "(defn\n match-tag\n \"Match `s` as a CSS tag and return a vector of tag name, CSS id and\\n  CSS classes.\"\n [s]\n (let\n  [matches\n   (re-seq #\"[#.]?[^#.]+\" (name s))\n   [tag-name names]\n   (cond\n    (empty? matches)\n    (throw (ex-info (str \"Can't match CSS tag: \" s) {:tag s}))\n    (#{\\# \\.} (ffirst matches))\n    [\"div\" matches]\n    :default\n    [(first matches) (rest matches)])]\n  [tag-name\n   (strip-css\n    (some\n     (fn* [p1__45056#] (when (= \\# (first p1__45056#)) p1__45056#))\n     names))\n   (into\n    []\n    (comp\n     (filter (fn* [p1__45057#] (= \\. (first p1__45057#))))\n     (map strip-css))\n    names)]))\n"} {:sym strip-css, :meta {:doc "Strip the # and . characters from the beginning of `s`.", :arglists ([s])}, :source "(defn\n strip-css\n \"Strip the # and . characters from the beginning of `s`.\"\n [s]\n (when s (str/replace s #\"^[.#]\" \"\")))\n"} {:sym class, :meta {:doc "Normalize `class` into a vector of classes.", :arglists ([class])}, :source "(defn\n class\n \"Normalize `class` into a vector of classes.\"\n [class]\n (cond\n  (nil? class)\n  nil\n  (map-lookup? class)\n  [class]\n  (list? class)\n  (if (symbol? (first class)) [class] (map class-name class))\n  (symbol? class)\n  [class]\n  (string? class)\n  [class]\n  (keyword? class)\n  [(class-name class)]\n  (and\n   (or (set? class) (sequential? class))\n   (every?\n    (fn* [p1__45055#] (or (keyword? p1__45055#) (string? p1__45055#)))\n    class))\n  (mapv class-name class)\n  (and (or (set? class) (sequential? class)))\n  (mapv class-name class)\n  :else\n  class))\n"} {:sym class-name, :meta {:doc nil, :arglists ([x])}, :source "(defn class-name [x] (cond (string? x) x (keyword? x) (name x) :else x))\n"} {:sym merge-with-class, :meta {:doc "Like clojure.core/merge but concatenate :class entries.", :arglists ([& maps])}, :source "(defn\n merge-with-class\n \"Like clojure.core/merge but concatenate :class entries.\"\n [& maps]\n (let\n  [maps (map attributes maps) classes (mapcat :class maps)]\n  (when\n   (seq maps)\n   (cond->\n    (reduce into {} maps)\n    (not (empty? classes))\n    (assoc :class (vec classes))))))\n"}), play-cljc.math ({:sym inverse-matrix, :meta {:doc "Given two arguments, returns the inverse of the given 3x3 matrix.\n  If an additional `size` arg is provided, returns the inverse of the given matrix of that size.", :arglists [[m] [size m]]}, :source "(defn\n inverse-matrix\n \"Given two arguments, returns the inverse of the given 3x3 matrix.\\n  If an additional `size` arg is provided, returns the inverse of the given matrix of that size.\"\n ([m] ((inv-mat-fn 3) m))\n ([size m]\n  (case\n   size\n   2\n   ((inv-mat-fn 2) m)\n   3\n   ((inv-mat-fn 3) m)\n   4\n   ((inv-mat-fn 4) m)\n   (inv-mat size m))))\n"} {:sym identity-matrix, :meta {}, :source "(def\n identity-matrix\n (memoize\n  (fn\n   [size]\n   (vec\n    (for\n     [row (->range size) col (->range size)]\n     (if (= row col) 1 0))))))\n"} {:sym vector->array, :meta {:doc nil, :arglists ([v])}, :source "(defn vector->array [v] (#?(:clj float-array :cljs clj->js) v))\n"} {:sym deg->rad, :meta {:doc nil, :arglists ([d])}, :source "(defn deg->rad [d] (-> d (* (math PI)) (/ 180)))\n"} {:sym transform-vector, :meta {:doc nil, :arglists ([m v])}, :source "(defn\n transform-vector\n [m v]\n (let\n  [dst (vector->array v)]\n  (dotimes\n   [i 4]\n   (#?(:clj aset-float :cljs aset) dst i 0.0)\n   (dotimes\n    [j 4]\n    (#?(:clj aset-float :cljs aset)\n     dst\n     i\n     (+ (aget dst i) (* (nth v j) (nth m (-> j (* 4) (+ i))))))))\n  (vec dst)))\n"} {:sym x-rotation-matrix-3d, :meta {:doc nil, :arglists ([angle-in-radians])}, :source "(defn\n x-rotation-matrix-3d\n [angle-in-radians]\n (let\n  [c (math cos angle-in-radians) s (math sin angle-in-radians)]\n  [1 0 0 0 0 c s 0 0 (- s) c 0 0 0 0 1]))\n"} {:sym perspective-matrix-3d, :meta {:doc nil, :arglists ([field-of-view aspect near far])}, :source "(defn\n perspective-matrix-3d\n [field-of-view aspect near far]\n (let\n  [f\n   (math tan (- (* (math PI) 0.5) (* field-of-view 0.5)))\n   range-inv\n   (/ 1 (- near far))]\n  [(/ f aspect)\n   0\n   0\n   0\n   0\n   f\n   0\n   0\n   0\n   0\n   (* (+ near far) range-inv)\n   -1\n   0\n   0\n   (* near far range-inv 2)\n   0]))\n"} {:sym scaling-matrix, :meta {:doc nil, :arglists ([sx sy])}, :source "(defn scaling-matrix [sx sy] [sx 0 0 0 sy 0 0 0 1])\n"} {:sym z-rotation-matrix-3d, :meta {:doc nil, :arglists ([angle-in-radians])}, :source "(defn\n z-rotation-matrix-3d\n [angle-in-radians]\n (let\n  [c (math cos angle-in-radians) s (math sin angle-in-radians)]\n  [c s 0 0 (- s) c 0 0 0 0 1 0 0 0 0 1]))\n"} {:sym rotation-matrix, :meta {:doc nil, :arglists ([angle-in-radians])}, :source "(defn\n rotation-matrix\n [angle-in-radians]\n (let\n  [c (math cos angle-in-radians) s (math sin angle-in-radians)]\n  [c (- s) 0 s c 0 0 0 1]))\n"} {:sym translation-matrix, :meta {:doc nil, :arglists ([tx ty])}, :source "(defn translation-matrix [tx ty] [1 0 0 0 1 0 tx ty 1])\n"} {:sym translation-matrix-3d, :meta {:doc nil, :arglists ([tx ty tz])}, :source "(defn\n translation-matrix-3d\n [tx ty tz]\n [1 0 0 0 0 1 0 0 0 0 1 0 tx ty tz 1])\n"} {:sym projection-matrix, :meta {:doc nil, :arglists ([width height])}, :source "(defn\n projection-matrix\n [width height]\n [(/ 2 width) 0 0 0 (/ -2 height) 0 -1 1 1])\n"} {:sym multiply-matrices-3d, :meta {:doc "Multiplies two 4x4 matrices.", :arglists ([m1 m2])}, :source "(defn\n multiply-matrices-3d\n \"Multiplies two 4x4 matrices.\"\n [m1 m2]\n ((mul-mat-fn 4) m1 (or m2 (identity-matrix 4))))\n"} {:sym inverse-matrix-3d, :meta {}, :source "(def\n inverse-matrix-3d\n \"Returns the inverse of the given 4x4 matrix.\"\n (inv-mat-fn 4))\n"} {:sym vector->2d-array, :meta {:doc nil, :arglists ([v])}, :source "(defn vector->2d-array [v] (#?(:clj to-array-2d :cljs clj->js) v))\n"} {:sym look-at-matrix, :meta {:doc nil, :arglists ([target up])}, :source "(defn\n look-at-matrix\n [target up]\n (let\n  [z-axis\n   (normalize target)\n   x-axis\n   (normalize (cross up z-axis))\n   y-axis\n   (normalize (cross z-axis x-axis))]\n  [(nth x-axis 0)\n   (nth x-axis 1)\n   (nth x-axis 2)\n   (nth y-axis 0)\n   (nth y-axis 1)\n   (nth y-axis 2)\n   (nth z-axis 0)\n   (nth z-axis 1)\n   (nth z-axis 2)]))\n"} {:sym multiply-matrices, :meta {:doc "Given two arguments, multiplies two 3x3 matrices.\n  If an additional `size` arg is provided, multiples two matrices of that size.", :arglists [[m1 m2] [size m1 m2]]}, :source "(defn\n multiply-matrices\n \"Given two arguments, multiplies two 3x3 matrices.\\n  If an additional `size` arg is provided, multiples two matrices of that size.\"\n ([m1 m2] ((mul-mat-fn 3) m1 (or m2 (identity-matrix 3))))\n ([size m1 m2]\n  (let\n   [m2 (or m2 (identity-matrix size))]\n   (case\n    size\n    2\n    ((mul-mat-fn 2) m1 m2)\n    3\n    ((mul-mat-fn 3) m1 m2)\n    4\n    ((mul-mat-fn 4) m1 m2)\n    (mul-mat size m1 m2)))))\n"} {:sym ortho-matrix-3d, :meta {:doc nil, :arglists ([left right bottom top near far])}, :source "(defn\n ortho-matrix-3d\n [left right bottom top near far]\n (let\n  [width (- right left) height (- top bottom) depth (- near far)]\n  [(/ 2 width)\n   0\n   0\n   0\n   0\n   (/ 2 height)\n   0\n   0\n   0\n   0\n   (/ 2 depth)\n   0\n   (/ (+ left right) (- left right))\n   (/ (+ bottom top) (- bottom top))\n   (/ (+ near far) (- near far))\n   1]))\n"} {:sym look-at-matrix-3d, :meta {:doc nil, :arglists ([camera-pos target up])}, :source "(defn\n look-at-matrix-3d\n [camera-pos target up]\n (let\n  [z-axis\n   (normalize (subtract-vectors camera-pos target))\n   x-axis\n   (normalize (cross up z-axis))\n   y-axis\n   (normalize (cross z-axis x-axis))]\n  [(nth x-axis 0)\n   (nth x-axis 1)\n   (nth x-axis 2)\n   0\n   (nth y-axis 0)\n   (nth y-axis 1)\n   (nth y-axis 2)\n   0\n   (nth z-axis 0)\n   (nth z-axis 1)\n   (nth z-axis 2)\n   0\n   (nth camera-pos 0)\n   (nth camera-pos 1)\n   (nth camera-pos 2)\n   1]))\n"} {:sym y-rotation-matrix-3d, :meta {:doc nil, :arglists ([angle-in-radians])}, :source "(defn\n y-rotation-matrix-3d\n [angle-in-radians]\n (let\n  [c (math cos angle-in-radians) s (math sin angle-in-radians)]\n  [c 0 (- s) 0 0 1 0 0 s 0 c 0 0 0 0 1]))\n"} {:sym scaling-matrix-3d, :meta {:doc nil, :arglists ([sx sy sz])}, :source "(defn scaling-matrix-3d [sx sy sz] [sx 0 0 0 0 sy 0 0 0 0 sz 0 0 0 0 1])\n"} {:sym transpose-matrix-3d, :meta {:doc nil, :arglists ([m])}, :source "(defn\n transpose-matrix-3d\n [m]\n [(nth m 0)\n  (nth m 4)\n  (nth m 8)\n  (nth m 12)\n  (nth m 1)\n  (nth m 5)\n  (nth m 9)\n  (nth m 13)\n  (nth m 2)\n  (nth m 6)\n  (nth m 10)\n  (nth m 14)\n  (nth m 3)\n  (nth m 7)\n  (nth m 11)\n  (nth m 15)])\n"}), expound.util ({:sym assert-message, :meta {}, :source "(def\n assert-message\n \"Internal Expound assertion failed. Please report this bug at https://github.com/bhb/expound/issues\")\n"} {:sym nan?, :meta {:doc nil, :arglists ([x])}, :source "(defn\n nan?\n [x]\n #?(:clj (and (number? x) (Double/isNaN x)) :cljs (and (number? x) (js/isNaN x))))\n"}), cljs.source-map ({:sym update-result, :meta {:doc "Helper for decode. Take a source map and update it based on a\n  segment map.", :arglists ([result segmap gline])}, :source "(defn\n update-result\n \"Helper for decode. Take a source map and update it based on a\\n  segment map.\"\n [result segmap gline]\n (let\n  [{:keys [gcol source line col name]}\n   segmap\n   d\n   {:line line, :col col, :source source}\n   d\n   (if name (assoc d :name name) d)]\n  (update-in\n   result\n   [gline]\n   (fnil\n    (fn\n     [m]\n     (update-in\n      m\n      [gcol]\n      (fnil (fn* [p1__45058#] (conj p1__45058# d)) [])))\n    (sorted-map)))))\n"} {:sym encode, :meta {:doc "Take an internal source map representation represented as nested\n   sorted maps of file, line, column and return a source map v3 JSON\n   string.", :arglists ([m opts])}, :source "(defn\n encode\n \"Take an internal source map representation represented as nested\\n   sorted maps of file, line, column and return a source map v3 JSON\\n   string.\"\n [m opts]\n (let\n  [lines\n   (atom [[]])\n   names->idx\n   (atom {})\n   name-idx\n   (atom 0)\n   preamble-lines\n   (take (or (:preamble-line-count opts) 0) (repeat []))\n   info->segv\n   (fn\n    [info source-idx line col]\n    (let\n     [segv [(:gcol info) source-idx line col]]\n     (if-let\n      [name (:name info)]\n      (let\n       [idx\n        (if-let\n         [idx (get @names->idx name)]\n         idx\n         (let\n          [cidx @name-idx]\n          (swap! names->idx assoc name cidx)\n          (swap! name-idx inc)\n          cidx))]\n       (conj segv idx))\n      segv)))\n   encode-cols\n   (fn\n    [infos source-idx line col]\n    (doseq\n     [info infos]\n     (let\n      [segv\n       (info->segv info source-idx line col)\n       gline\n       (:gline info)\n       lc\n       (count @lines)]\n      (if\n       (> gline (dec lc))\n       (swap!\n        lines\n        (fn\n         [lines]\n         (conj\n          (into lines (repeat (dec (- gline (dec lc))) []))\n          [segv])))\n       (swap!\n        lines\n        (fn [lines] (update-in lines [gline] conj segv)))))))]\n  (doseq\n   [[source-idx [_ lines]] (map-indexed (fn [i v] [i v]) m)]\n   (doseq\n    [[line cols] lines]\n    (doseq\n     [[col infos] cols]\n     (encode-cols infos source-idx line col))))\n  (let\n   [source-map-file-contents\n    (cond->\n     #js {\"version\" 3, \"file\" (:file opts), \"sources\" (let [paths (keys m) f (comp (if (true? (:source-map-timestamp opts)) (fn* [p1__45059#] (str p1__45059# \"?rel=\" (.valueOf (js/Date.)))) identity) (fn* [p1__45060#] (last (string/split p1__45060# #\"/\"))))] (->> paths (map f) (into-array))), \"lineCount\" (:lines opts), \"mappings\" (->> (lines->segs (concat preamble-lines (clojure.core/deref lines))) (map (fn* [p1__45061#] (string/join \",\" p1__45061#))) (string/join \";\")), \"names\" (into-array (map (set/map-invert (clojure.core/deref names->idx)) (range (count (clojure.core/deref names->idx)))))}\n     (:sources-content opts)\n     (doto\n      (gobj/set\n       \"sourcesContent\"\n       (into-array (:sources-content opts)))))]\n   (.stringify js/JSON source-map-file-contents))))\n"} {:sym invert-reverse-map, :meta {:doc "Given a ClojureScript to JavaScript source map, invert it. Useful when\n   mapping JavaScript stack traces when environment support is unavailable.", :arglists ([reverse-map])}, :source "(defn\n invert-reverse-map\n \"Given a ClojureScript to JavaScript source map, invert it. Useful when\\n   mapping JavaScript stack traces when environment support is unavailable.\"\n [reverse-map]\n (let\n  [inverted (atom (sorted-map))]\n  (doseq\n   [[line columns] reverse-map]\n   (doseq\n    [[column column-info] columns]\n    (doseq\n     [{:keys [gline gcol name]} column-info]\n     (swap!\n      inverted\n      update-in\n      [gline]\n      (fnil\n       (fn\n        [columns]\n        (update-in\n         columns\n         [gcol]\n         (fnil conj [])\n         {:line line, :col column, :name name}))\n       (sorted-map))))))\n  @inverted))\n"} {:sym decode, :meta {:doc "Convert a v3 source map JSON object into a source map mapping\n  generated JavaScript source locations to the original\n  ClojureScript.", :arglists [[source-map] [mappings source-map]]}, :source "(defn\n decode\n \"Convert a v3 source map JSON object into a source map mapping\\n  generated JavaScript source locations to the original\\n  ClojureScript.\"\n ([source-map] (decode (gobj/get source-map \"mappings\") source-map))\n ([mappings source-map]\n  (let\n   [sources\n    (gobj/get source-map \"sources\")\n    relseg-init\n    [0 0 0 0 0]\n    lines\n    (seq (string/split mappings #\";\"))]\n   (loop\n    [gline 0 lines lines relseg relseg-init result {}]\n    (if\n     lines\n     (let\n      [line\n       (first lines)\n       [result relseg]\n       (if\n        (string/blank? line)\n        [result relseg]\n        (let\n         [segs (seq (string/split line #\",\"))]\n         (loop\n          [segs segs relseg relseg result result]\n          (if\n           segs\n           (let\n            [seg\n             (first segs)\n             nrelseg\n             (seg-combine (base64-vlq/decode seg) relseg)]\n            (recur\n             (next segs)\n             nrelseg\n             (update-result\n              result\n              (seg->map nrelseg source-map)\n              gline)))\n           [result relseg]))))]\n      (recur (inc gline) (next lines) (assoc relseg 0 0) result))\n     result)))))\n"} {:sym seg->map, :meta {:doc "Take a source map segment represented as a vector\n   and return a map.", :arglists ([seg source-map])}, :source "(defn\n seg->map\n \"Take a source map segment represented as a vector\\n   and return a map.\"\n [seg source-map]\n (let\n  [[gcol source line col name] seg]\n  {:gcol gcol,\n   :source (aget (gobj/get source-map \"sources\") source),\n   :line line,\n   :col col,\n   :name\n   (when-let\n    [name (-> seg meta :name)]\n    (aget (gobj/get source-map \"names\") name))}))\n"} {:sym source-compare, :meta {:doc "Take a seq of source file names and return a comparator\n   that can be used to construct a sorted map. For reverse\n   source maps.", :arglists ([sources])}, :source "(defn\n source-compare\n \"Take a seq of source file names and return a comparator\\n   that can be used to construct a sorted map. For reverse\\n   source maps.\"\n [sources]\n (let\n  [sources (indexed-sources sources)]\n  (fn [a b] (compare (sources a) (sources b)))))\n"} {:sym decode-reverse, :meta {:doc "Convert a v3 source map JSON object into a reverse source map\n  mapping original ClojureScript source locations to the generated\n  JavaScript.", :arglists [[source-map] [mappings source-map]]}, :source "(defn\n decode-reverse\n \"Convert a v3 source map JSON object into a reverse source map\\n  mapping original ClojureScript source locations to the generated\\n  JavaScript.\"\n ([source-map]\n  (decode-reverse (gobj/get source-map \"mappings\") source-map))\n ([mappings source-map]\n  (let\n   [sources\n    (gobj/get source-map \"sources\")\n    relseg-init\n    [0 0 0 0 0]\n    lines\n    (seq (string/split mappings #\";\"))]\n   (loop\n    [gline\n     0\n     lines\n     lines\n     relseg\n     relseg-init\n     result\n     (sorted-map-by (source-compare sources))]\n    (if\n     lines\n     (let\n      [line\n       (first lines)\n       [result relseg]\n       (if\n        (string/blank? line)\n        [result relseg]\n        (let\n         [segs (seq (string/split line #\",\"))]\n         (loop\n          [segs segs relseg relseg result result]\n          (if\n           segs\n           (let\n            [seg\n             (first segs)\n             nrelseg\n             (seg-combine (base64-vlq/decode seg) relseg)]\n            (recur\n             (next segs)\n             nrelseg\n             (update-reverse-result\n              result\n              (seg->map nrelseg source-map)\n              gline)))\n           [result relseg]))))]\n      (recur (inc gline) (next lines) (assoc relseg 0 0) result))\n     result)))))\n"} {:sym lines->segs, :meta {:doc "Take a nested sorted map encoding line and column information\n   for a file and return a vector of vectors of encoded segments.\n   Each vector represents a line, and the internal vectors are segments\n   representing the contents of the line.", :arglists ([lines])}, :source "(defn\n lines->segs\n \"Take a nested sorted map encoding line and column information\\n   for a file and return a vector of vectors of encoded segments.\\n   Each vector represents a line, and the internal vectors are segments\\n   representing the contents of the line.\"\n [lines]\n (let\n  [relseg (atom [0 0 0 0 0])]\n  (reduce\n   (fn\n    [segs cols]\n    (swap!\n     relseg\n     (fn [[_ source line col name]] [0 source line col name]))\n    (conj\n     segs\n     (reduce\n      (fn\n       [cols [gcol sidx line col name :as seg]]\n       (let\n        [offset (map - seg @relseg)]\n        (swap!\n         relseg\n         (fn [[_ _ _ _ lname]] [gcol sidx line col (or name lname)]))\n        (conj cols (base64-vlq/encode offset))))\n      []\n      cols)))\n   []\n   lines)))\n"} {:sym merge-source-maps, :meta {:doc "Merge an internal source map representation of a single\n   ClojureScript file mapping original to generated with a\n   second source map mapping original JS to generated JS.\n   The is to support source maps that work through multiple\n   compilation steps like Google Closure optimization passes.", :arglists ([cljs-map js-map])}, :source "(defn\n merge-source-maps\n \"Merge an internal source map representation of a single\\n   ClojureScript file mapping original to generated with a\\n   second source map mapping original JS to generated JS.\\n   The is to support source maps that work through multiple\\n   compilation steps like Google Closure optimization passes.\"\n [cljs-map js-map]\n (loop\n  [line-map-seq (seq cljs-map) new-lines (sorted-map)]\n  (if\n   line-map-seq\n   (let\n    [[line col-map]\n     (first line-map-seq)\n     new-cols\n     (loop\n      [col-map-seq (seq col-map) new-cols (sorted-map)]\n      (if\n       col-map-seq\n       (let\n        [[col infos] (first col-map-seq)]\n        (recur\n         (next col-map-seq)\n         (assoc\n          new-cols\n          col\n          (reduce\n           (fn\n            [v {:keys [gline gcol]}]\n            (into v (get-in js-map [gline gcol])))\n           []\n           infos))))\n       new-cols))]\n    (recur (next line-map-seq) (assoc new-lines line new-cols)))\n   new-lines)))\n"} {:sym update-reverse-result, :meta {:doc "Helper for decode-reverse. Take a reverse source map and\n  update it with a segment map.", :arglists ([result segmap gline])}, :source "(defn\n update-reverse-result\n \"Helper for decode-reverse. Take a reverse source map and\\n  update it with a segment map.\"\n [result segmap gline]\n (let\n  [{:keys [gcol source line col name]}\n   segmap\n   d\n   {:gline gline, :gcol gcol}\n   d\n   (if name (assoc d :name name) d)]\n  (update-in\n   result\n   [source]\n   (fnil\n    (fn\n     [m]\n     (update-in\n      m\n      [line]\n      (fnil\n       (fn [m] (update-in m [col] (fnil (fn [v] (conj v d)) [])))\n       (sorted-map))))\n    (sorted-map)))))\n"} {:sym indexed-sources, :meta {:doc "Take a seq of source file names and return a map from\n   file number to integer index. For reverse source maps.", :arglists ([sources])}, :source "(defn\n indexed-sources\n \"Take a seq of source file names and return a map from\\n   file number to integer index. For reverse source maps.\"\n [sources]\n (->>\n  sources\n  (map-indexed (fn [a b] [a b]))\n  (reduce (fn [m [i v]] (assoc m v i)) {})))\n"} {:sym seg-combine, :meta {:doc "Combine a source map segment vector and a relative\n   source map segment vector and combine them to get\n   an absolute segment posititon information as a vector.", :arglists ([seg relseg])}, :source "(defn\n seg-combine\n \"Combine a source map segment vector and a relative\\n   source map segment vector and combine them to get\\n   an absolute segment posititon information as a vector.\"\n [seg relseg]\n (let\n  [[gcol source line col name]\n   seg\n   [rgcol rsource rline rcol rname]\n   relseg\n   nseg\n   [(+ gcol rgcol)\n    (+ (or source 0) rsource)\n    (+ (or line 0) rline)\n    (+ (or col 0) rcol)\n    (+ (or name 0) rname)]]\n  (if name (with-meta nseg {:name (+ name rname)}) nseg)))\n"}), oakcljs.tools.reader.impl.commons ({:sym match-number, :meta {:doc nil, :arglists ([s])}, :source "(defn\n match-number\n [s]\n (if\n  (matches? int-pattern s)\n  (match-int s)\n  (if\n   (matches? float-pattern s)\n   (match-float s)\n   (when (matches? ratio-pattern s) (match-ratio s)))))\n"} {:sym skip-line, :meta {:doc "Advances the reader to the end of a line. Returns the reader", :arglists ([reader])}, :source "(defn\n skip-line\n \"Advances the reader to the end of a line. Returns the reader\"\n [reader]\n (loop [] (when-not (newline? (read-char reader)) (recur)))\n reader)\n"} {:sym int-pattern, :meta {}, :source "(def\n int-pattern\n #\"^([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)(N)?$\")\n"} {:sym read-comment, :meta {:doc nil, :arglists ([rdr & _])}, :source "(defn read-comment [rdr & _] (skip-line rdr))\n"} {:sym parse-symbol, :meta {:doc "Parses a string into a vector of the namespace and symbol", :arglists ([token])}, :source "(defn\n parse-symbol\n \"Parses a string into a vector of the namespace and symbol\"\n [token]\n (when-not\n  (or\n   (identical? \"\" token)\n   (true? (.test #\":$\" token))\n   (true? (.test #\"^::\" token)))\n  (let\n   [ns-idx\n    (.indexOf token \"/\")\n    ns\n    (when (pos? ns-idx) (subs token 0 ns-idx))]\n   (if-not\n    (nil? ns)\n    (let\n     [ns-idx (inc ns-idx)]\n     (when-not\n      (== ns-idx (count token))\n      (let\n       [sym (subs token ns-idx)]\n       (when\n        (and\n         (not (numeric? (nth sym 0)))\n         (not (identical? \"\" sym))\n         (false? (.test #\":$\" ns))\n         (or (identical? sym \"/\") (== -1 (.indexOf sym \"/\"))))\n        [ns sym]))))\n    (when\n     (or (identical? token \"/\") (== -1 (.indexOf token \"/\")))\n     [nil token])))))\n"} {:sym number-literal?, :meta {:doc "Checks whether the reader is at the start of a number literal", :arglists ([reader initch])}, :source "(defn\n number-literal?\n \"Checks whether the reader is at the start of a number literal\"\n [reader initch]\n (or\n  (numeric? initch)\n  (and\n   (or (identical? \\+ initch) (identical? \\- initch))\n   (numeric? (peek-char reader)))))\n"} {:sym read-past, :meta {:doc "Read until first character that doesn't match pred, returning\n   char.", :arglists ([pred rdr])}, :source "(defn\n read-past\n \"Read until first character that doesn't match pred, returning\\n   char.\"\n [pred rdr]\n (loop [ch (read-char rdr)] (if (pred ch) (recur (read-char rdr)) ch)))\n"} {:sym float-pattern, :meta {}, :source "(def float-pattern #\"([-+]?[0-9]+(\\.[0-9]*)?([eE][-+]?[0-9]+)?)(M)?\")\n"} {:sym matches?, :meta {:doc nil, :arglists ([pattern s])}, :source "(defn\n matches?\n [pattern s]\n (let [[match] (re-find pattern s)] (identical? match s)))\n"} {:sym throwing-reader, :meta {:doc nil, :arglists ([msg])}, :source "(defn throwing-reader [msg] (fn [rdr & _] (reader-error rdr msg)))\n"} {:sym ratio-pattern, :meta {}, :source "(def ratio-pattern #\"([-+]?[0-9]+)/([0-9]+)\")\n"}), dynadoc.transform ({:sym with-focus->binding, :meta {:doc nil, :arglists ([with-focus])}, :source "(defn\n with-focus->binding\n [with-focus]\n (let\n  [form\n   (or (:form with-focus) (:binding with-focus))\n   [binding-type binding-val]\n   form]\n  (when (#{:local-symbol :sym} binding-type) binding-val)))\n"} {:sym add-focus, :meta {:doc nil, :arglists ([form with-focus body])}, :source "(defn\n add-focus\n [form with-focus body]\n (if-let\n  [bind (with-focus->binding with-focus)]\n  (postwalk (fn [x] (if (= x bind) form x)) body)\n  form))\n"} {:sym add-card, :meta {:doc nil, :arglists ([form with-card id])}, :source "(defn\n add-card\n [form with-card id]\n (list\n  'let\n  [with-card\n   #?(:cljs (list (quote .getElementById) (quote js/document) id) :clj id)]\n  form))\n"} {:sym add-callback, :meta {:doc nil, :arglists ([form with-callback])}, :source "(defn\n add-callback\n [form with-callback]\n (list\n  'let\n  ['es-channel\n   '(dynadoc.aliases/chan)\n   with-callback\n   '(fn [data] (dynadoc.aliases/put! es-channel data))]\n  form\n  '(dynadoc.aliases/<!! es-channel)))\n"} {:sym transform, :meta {:doc nil, :arglists [[example] [{:keys [body id with-focus with-card with-callback]} form]]}, :source "(defn\n transform\n ([example]\n  (transform\n   example\n   (or (some-> example :with-focus :init-expr) (:body example))))\n ([{:keys [body id with-focus with-card with-callback]} form]\n  (cond->\n   form\n   (some? with-focus)\n   (add-focus with-focus body)\n   (some? with-card)\n   (add-card with-card id)\n   (some? with-callback)\n   (add-callback with-callback))))\n"}), odoyle.rules ({:sym ->rule, :meta {:doc nil, :arglists ([[rule-name rule]])}, :source "(defn\n ->rule\n [[rule-name rule]]\n (let\n  [{:keys [what-block when-block then-block then-finally-block]}\n   rule\n   conditions\n   (mapv ->condition (:body what-block))\n   when-body\n   (:body when-block)\n   when-body\n   (if (> (count when-body) 1) (cons 'and when-body) (first when-body))\n   then-body\n   (:body then-block)\n   then-finally-body\n   (:body then-finally-block)\n   syms\n   (->>\n    conditions\n    (mapcat :bindings)\n    (map :sym)\n    (filter simple-symbol?)\n    set\n    vec)]\n  {:rule-name rule-name,\n   :fn-name\n   (->\n    (str (namespace rule-name) \"-\" (name rule-name))\n    (str/replace \".\" \"-\")\n    symbol),\n   :conditions conditions,\n   :arg {:keys syms},\n   :when-body when-body,\n   :then-body then-body,\n   :then-finally-body then-finally-body}))\n"} {:sym fire-rules, :meta {:doc "Fires :then and :then-finally blocks for any rules with a complete set of matches.", :arglists ([session])}, :source "(defn\n fire-rules\n \"Fires :then and :then-finally blocks for any rules with a complete set of matches.\"\n [session]\n (let\n  [then-queue\n   (:then-queue session)\n   then-finally-queue\n   (:then-finally-queue session)]\n  (if\n   (and\n    (or (seq then-queue) (seq then-finally-queue))\n    (nil? *session*))\n   (let\n    [session\n     (assoc session :then-queue #{} :then-finally-queue #{})\n     session\n     (reduce\n      (fn\n       [session [node-id _]]\n       (let\n        [node-path [:beta-nodes node-id]]\n        (update-in session node-path assoc :trigger false)))\n      session\n      then-queue)\n     then-fns\n     (reduce\n      (fn\n       [queue [node-id id+attrs]]\n       (let\n        [node-path\n         [:beta-nodes node-id]\n         node\n         (get-in session node-path)\n         {:keys [matches then-fn]}\n         node]\n        (or\n         (when-let\n          [{:keys [vars enabled]} (get matches id+attrs)]\n          (when enabled (conj queue [then-fn vars])))\n         queue)))\n      []\n      then-queue)\n     session\n     (reduce\n      (fn\n       [session [then-fn match]]\n       (binding\n        [*session*\n         session\n         *mutable-session*\n         (volatile! session)\n         *match*\n         match]\n        (then-fn match)\n        @*mutable-session*))\n      session\n      then-fns)\n     then-finally-fns\n     (reduce\n      (fn\n       [queue node-id]\n       (let\n        [node-path\n         [:beta-nodes node-id]\n         node\n         (get-in session node-path)\n         {:keys [then-finally-fn]}\n         node]\n        (conj queue then-finally-fn)))\n      []\n      then-finally-queue)\n     session\n     (reduce\n      (fn\n       [session then-finally-fn]\n       (binding\n        [*session* session *mutable-session* (volatile! session)]\n        (then-finally-fn)\n        @*mutable-session*))\n      session\n      then-finally-fns)]\n    (fire-rules session))\n   session)))\n"} {:sym insert, :meta {:doc "Inserts a fact into the session. Can optionally insert multiple facts with the same id.", :arglists [[session [id attr value]] [session id attr->value] [session id attr value]]}, :source "(defn\n insert\n \"Inserts a fact into the session. Can optionally insert multiple facts with the same id.\"\n ([session [id attr value]] (insert session id attr value))\n ([session id attr->value]\n  (reduce-kv\n   (fn [session attr value] (insert session id attr value))\n   session\n   attr->value))\n ([session id attr value]\n  (->>\n   (get-alpha-nodes-for-fact\n    session\n    (:alpha-node session)\n    id\n    attr\n    value\n    true)\n   (upsert-fact session id attr value))))\n"} {:sym *match*, :meta {:doc "Provides a map of all the matched values from inside a :then block."}, :source "(def *match* nil)\n"} {:sym add-rule, :meta {:doc "Adds a rule to the given session.", :arglists ([session rule])}, :source "(defn\n add-rule\n \"Adds a rule to the given session.\"\n [session rule]\n (when\n  (get-in session [:rule-ids (:name rule)])\n  (throw (ex-info (str (:name rule) \" already exists in session\") {})))\n (let\n  [conditions\n   (:conditions rule)\n   session\n   (reduce add-condition session conditions)\n   leaf-node-id\n   (-> session :mem-node-ids last)\n   bindings\n   (:bindings session)\n   session\n   (reduce\n    (fn\n     [session mem-node-id]\n     (update-in\n      session\n      [:beta-nodes mem-node-id]\n      (fn [mem-node] (assoc mem-node :leaf-node-id leaf-node-id))))\n    session\n    (:mem-node-ids session))\n   session\n   (reduce\n    (fn\n     [session join-node-id]\n     (update-in\n      session\n      [:beta-nodes join-node-id]\n      (fn\n       [join-node]\n       (assoc\n        join-node\n        :id-key\n        (some\n         (fn\n          [{:keys [field key]}]\n          (when\n           (and (= :id field) (contains? (:joins bindings) key))\n           key))\n         (-> join-node :condition :bindings))\n        :disable-fast-updates\n        (contains?\n         (:joins bindings)\n         (some\n          (fn [{:keys [field key]}] (when (= :value field) key))\n          (-> join-node :condition :bindings)))))))\n    session\n    (:join-node-ids session))]\n  (->\n   session\n   (assoc-in [:beta-nodes leaf-node-id :when-fn] (:when-fn rule))\n   (assoc-in [:beta-nodes leaf-node-id :then-fn] (:then-fn rule))\n   (assoc-in\n    [:beta-nodes leaf-node-id :then-finally-fn]\n    (:then-finally-fn rule))\n   (assoc-in [:rule-ids (:name rule)] leaf-node-id)\n   (dissoc :mem-node-ids :join-node-ids :bindings))))\n"} {:sym ->session, :meta {:doc "Returns an empty session.", :arglists ([])}, :source "(defn\n ->session\n \"Returns an empty session.\"\n []\n (map->Session\n  {:alpha-node\n   (map->AlphaNode\n    {:path nil,\n     :test-field nil,\n     :test-value nil,\n     :children [],\n     :successors [],\n     :facts {}}),\n   :beta-nodes {},\n   :last-id -1,\n   :rule-ids {},\n   :id-attr-nodes {},\n   :then-queue #{}}))\n"} {:sym reset!, :meta {:doc "Mutates the session from a :then or :then-finally block.", :arglists ([new-session])}, :source "(defn\n reset!\n \"Mutates the session from a :then or :then-finally block.\"\n [new-session]\n (if\n  *mutable-session*\n  (if\n   (= *session* @*mutable-session*)\n   (vreset! *mutable-session* new-session)\n   (throw\n    (ex-info\n     \"You may only call `reset!` once in a :then or :then-finally block\"\n     {})))\n  (throw\n   (ex-info\n    \"You may only call `reset!` in a :then or :then-finally block\"\n    {}))))\n"} {:sym retract!, :meta {:doc "Equivalent to:\n  \n  (o/reset! (o/retract o/*session* id attr))\n  \n  Using the long form is recommended.", :arglists ([id attr])}, :source "(defn\n retract!\n \"Equivalent to:\\n  \\n  (o/reset! (o/retract o/*session* id attr))\\n  \\n  Using the long form is recommended.\"\n [id attr]\n (if\n  *mutable-session*\n  (vswap! *mutable-session* retract id attr)\n  (throw\n   (ex-info\n    \"This function must be called in a :then or :then-finally block\"\n    {}))))\n"} {:sym insert!, :meta {:doc "Equivalent to:\n  \n  (o/reset! (o/insert o/*session* id attr value))\n  \n  Using the long form is recommended.", :arglists [[id attr->value] [id attr value]]}, :source "(defn\n insert!\n \"Equivalent to:\\n  \\n  (o/reset! (o/insert o/*session* id attr value))\\n  \\n  Using the long form is recommended.\"\n ([id attr->value]\n  (run! (fn [[attr value]] (insert! id attr value)) attr->value))\n ([id attr value]\n  (if\n   *mutable-session*\n   (vswap! *mutable-session* insert id attr value)\n   (throw\n    (ex-info\n     \"This function must be called in a :then or :then-finally block\"\n     {})))))\n"} {:sym *session*, :meta {:doc "Provides the current value of the session from inside a :then or :then-finally block."}, :source "(def *session* nil)\n"} {:sym retract, :meta {:doc "Retracts the fact with the given id + attr combo.", :arglists ([session id attr])}, :source "(defn\n retract\n \"Retracts the fact with the given id + attr combo.\"\n [session id attr]\n (let\n  [id+attr\n   [id attr]\n   node-paths\n   (get-in session [:id-attr-nodes id+attr])]\n  (when-not\n   node-paths\n   (throw (ex-info (str id+attr \" not in session\") {})))\n  (reduce\n   (fn\n    [session node-path]\n    (let\n     [node\n      (get-in session node-path)\n      fact\n      (get-in node [:facts id attr])]\n     (right-activate-alpha-node\n      session\n      node-path\n      (->Token fact :retract nil))))\n   session\n   node-paths)))\n"} {:sym query-all, :meta {:doc "When called with just a session, returns a vector of all inserted facts.\n  Otherwise, returns a vector of maps containing all the matches for the given rule.", :arglists [[session] [session rule-name]]}, :source "(defn\n query-all\n \"When called with just a session, returns a vector of all inserted facts.\\n  Otherwise, returns a vector of maps containing all the matches for the given rule.\"\n ([session]\n  (mapv\n   (fn\n    [[[id attr] nodes]]\n    (->\n     (get-in session (first nodes))\n     (get-in [:facts id attr])\n     ((juxt :id :attr :value))))\n   (:id-attr-nodes session)))\n ([session rule-name]\n  (let\n   [rule-id\n    (or\n     (get-in session [:rule-ids rule-name])\n     (throw (ex-info (str rule-name \" not in session\") {})))\n    rule\n    (get-in session [:beta-nodes rule-id])]\n   (reduce-kv\n    (fn [v _ {:keys [vars enabled]}] (if enabled (conj v vars) v))\n    []\n    (:matches rule)))))\n"} {:sym parse, :meta {:doc nil, :arglists ([spec content])}, :source "(defn\n parse\n [spec content]\n (let\n  [res (s/conform spec content)]\n  (if\n   (= :clojure.spec.alpha/invalid res)\n   (throw (ex-info (expound/expound-str spec content) {}))\n   res)))\n"}), cross-parinfer.core ({:sym paren-mode, :meta {:doc "Runs paren mode on the given text.", :arglists ([text x line])}, :source "(defn\n paren-mode\n \"Runs paren mode on the given text.\"\n [text x line]\n #?(:clj (let [res (try (Parinfer/parenMode text (int x) (int line) nil false) (catch Exception _ (Parinfer/parenMode text (int 0) (int 0) nil false)))] {:x (.-cursorX res), :text (.-text res)}) :cljs (let [res (.parenMode js/parinfer text #js {:cursorLine line, :cursorX x})] {:x (aget res \"cursorX\"), :text (aget res \"text\")})))\n"} {:sym add-indent, :meta {:doc "Adds indent to the state.", :arglists ([state])}, :source "(defn\n add-indent\n \"Adds indent to the state.\"\n [state]\n (let\n  [{:keys [text cursor-position indent-type]}\n   state\n   [start-pos end-pos]\n   cursor-position\n   [start-line start-x]\n   (position->row-col text start-pos)\n   [end-line _]\n   (position->row-col text end-pos)\n   lines\n   (split-lines text)\n   tags\n   (ts/code->tags text)\n   new-indent-level\n   (case\n    indent-type\n    :return\n    (ts/indent-for-line tags (inc start-line))\n    :back\n    (ts/back-indent-for-line\n     tags\n     (inc start-line)\n     (indent-count (get lines start-line)))\n    :forward\n    (ts/forward-indent-for-line\n     tags\n     (inc start-line)\n     (indent-count (get lines start-line)))\n    :normal\n    start-x)\n   lines\n   (if\n    (= indent-type :normal)\n    (loop\n     [lines lines tags tags line-num (inc start-line)]\n     (if-let\n      [line (get lines line-num)]\n      (let\n       [indent\n        (ts/indent-for-line tags (inc line-num))\n        current-indent\n        (indent-count line)]\n       (if\n        (and (> indent 0) (> indent start-x))\n        (let\n         [lines\n          (update-indent (- indent current-indent) lines line-num)\n          text\n          (str/join \\newline lines)\n          tags\n          (ts/code->tags text)]\n         (recur lines tags (inc line-num)))\n        lines))\n      lines))\n    (let\n     [old-indent-level\n      (indent-count (get lines start-line))\n      diff\n      (- new-indent-level old-indent-level)\n      diff\n      (if\n       (neg? diff)\n       (->>\n        (seq (get lines start-line))\n        (split-with (fn* [p1__44982#] (= p1__44982# \\space)))\n        first\n        (take (* -1 diff))\n        count\n        (* -1))\n       diff)]\n     (reduce\n      (partial update-indent diff)\n      lines\n      (range start-line (inc end-line)))))\n   text\n   (str/join \\newline lines)\n   text\n   (:text (indent-mode text new-indent-level start-line true))\n   lines\n   (split-lines text)]\n  {:cursor-position\n   (if\n    (= start-pos end-pos)\n    (let\n     [pos (row-col->position text start-line new-indent-level)]\n     [pos pos])\n    [(row-col->position text start-line 0)\n     (row-col->position text end-line (count (get lines end-line)))]),\n   :text text}))\n"} {:sym indent-count, :meta {:doc nil, :arglists ([line])}, :source "(defn\n indent-count\n [line]\n (->>\n  line\n  seq\n  (take-while (fn* [p1__44980#] (= p1__44980# \\space)))\n  count))\n"} {:sym row-col->position, :meta {:doc "Converts a row and column number to a position.", :arglists ([text row col])}, :source "(defn\n row-col->position\n \"Converts a row and column number to a position.\"\n [text row col]\n (let\n  [all-lines\n   (vec (split-lines text))\n   lines\n   (vec (take row all-lines))\n   last-line\n   (get all-lines row)\n   lines\n   (if\n    (and last-line (>= (count last-line) col))\n    (conj lines (subs last-line 0 col))\n    lines)\n   text\n   (str/join \"\\n\" lines)]\n  (count text)))\n"} {:sym position->row-col, :meta {:doc "Converts a position to a row and column number.", :arglists ([text position])}, :source "(defn\n position->row-col\n \"Converts a position to a row and column number.\"\n [text position]\n (let\n  [text\n   (subs text 0 position)\n   last-newline\n   (.lastIndexOf text \"\\n\")\n   row\n   (count (re-seq #\"\\n\" text))\n   col\n   (if (>= last-newline 0) (- position last-newline 1) position)]\n  [row col]))\n"} {:sym split-lines, :meta {:doc "Splits the string into lines.", :arglists ([s])}, :source "(defn\n split-lines\n \"Splits the string into lines.\"\n [s]\n (vec (.split s \"\\n\" -1)))\n"} {:sym update-indent, :meta {:doc nil, :arglists ([diff lines line-num])}, :source "(defn\n update-indent\n [diff lines line-num]\n (update\n  lines\n  line-num\n  (fn\n   [line]\n   (let\n    [[spaces code]\n     (split-with (fn* [p1__44981#] (= p1__44981# \\space)) (seq line))\n     spaces\n     (if\n      (pos? diff)\n      (concat spaces (repeat diff \\space))\n      (drop (* -1 diff) spaces))]\n    (str (str/join spaces) (str/join code))))))\n"} {:sym mode, :meta {:doc "Runs the specified mode, which can be :paren, :indent, or :both.", :arglists ([mode-type text x line])}, :source "(defn\n mode\n \"Runs the specified mode, which can be :paren, :indent, or :both.\"\n [mode-type text x line]\n (case\n  mode-type\n  :paren\n  (paren-mode text x line)\n  :indent\n  (indent-mode text x line)\n  :both\n  (-> text (paren-mode x line) :text (indent-mode x line))))\n"} {:sym indent-mode, :meta {:doc "Runs indent mode on the given text.", :arglists [[text x line] [text x line preview-cursor-scope?]]}, :source "(defn\n indent-mode\n \"Runs indent mode on the given text.\"\n ([text x line] (indent-mode text x line false))\n ([text x line preview-cursor-scope?]\n  #?(:clj (let [res (try (Parinfer/indentMode text (int x) (int line) nil preview-cursor-scope?) (catch Exception _ (Parinfer/indentMode text (int 0) (int 0) nil preview-cursor-scope?)))] {:x (.-cursorX res), :text (.-text res)}) :cljs (let [res (.indentMode js/parinfer text #js {:cursorLine line, :cursorX x, :previewCursorScope preview-cursor-scope?})] {:x (aget res \"cursorX\"), :text (aget res \"text\")}))))\n"} {:sym add-parinfer, :meta {:doc "Adds parinfer to the state.", :arglists ([mode-type state])}, :source "(defn\n add-parinfer\n \"Adds parinfer to the state.\"\n [mode-type state]\n (let\n  [{:keys [cursor-position text]}\n   state\n   [start-pos end-pos]\n   cursor-position\n   [row col]\n   (position->row-col text start-pos)\n   result\n   (mode mode-type text col row)]\n  (if\n   (not= start-pos end-pos)\n   (assoc state :text (:text result))\n   (let\n    [pos (row-col->position (:text result) row (:x result))]\n    (assoc state :text (:text result) :cursor-position [pos pos])))))\n"}), play-cljc.gl.examples-advanced ({:sym crescent-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n crescent-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity\n    game\n    (primitives/crescent\n     {:vertical-radius 20,\n      :outer-radius 20,\n      :inner-radius 15,\n      :thickness 10,\n      :subdivisions-down 30}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"} {:sym balls-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/balls-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/balls-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/balls-3d/0"}]} {:sym planes-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n planes-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity\n    game\n    (primitives/plane\n     {:width 20,\n      :depth 20,\n      :subdivisions-width 10,\n      :subdivisions-height 10}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"} {:sym planes-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/planes-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/planes-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/planes-3d/0"}]} {:sym disc-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n disc-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity game (primitives/disc {:radius 20, :divisions 20}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"} {:sym advanced-render, :meta {:doc nil, :arglists ([{:keys [entity objects total-time], :as game}])}, :source "(defn\n advanced-render\n [{:keys [entity objects total-time], :as game}]\n (eu/resize-example game)\n (c/render game {:clear {:color [1 1 1 1], :depth 1}})\n (let\n  [[width height]\n   (eu/get-size game)\n   projection-matrix\n   (m/perspective-matrix-3d (m/deg->rad 60) (/ width height) 1 2000)\n   camera-pos\n   [0 0 100]\n   target\n   [0 0 0]\n   up\n   [0 1 0]\n   camera-matrix\n   (m/look-at-matrix-3d camera-pos target up)\n   view-matrix\n   (m/inverse-matrix-3d camera-matrix)\n   view-projection-matrix\n   (m/multiply-matrices-3d view-matrix projection-matrix)\n   entity\n   (assoc\n    entity\n    :uniforms\n    {'u_lightWorldPos [-50 30 100],\n     'u_viewInverse camera-matrix,\n     'u_lightColor [1 1 1 1]})]\n  (doseq\n   [{:keys [rx ry tz mat-uniforms]} objects]\n   (let\n    [world-matrix\n     (->>\n      (m/identity-matrix 4)\n      (m/multiply-matrices-3d\n       (m/x-rotation-matrix-3d (* rx total-time)))\n      (m/multiply-matrices-3d\n       (m/y-rotation-matrix-3d (* ry total-time)))\n      (m/multiply-matrices-3d (m/translation-matrix-3d 0 0 tz)))]\n    (c/render\n     game\n     (->\n      entity\n      (assoc :viewport {:x 0, :y 0, :width width, :height height})\n      (update\n       :uniforms\n       assoc\n       'u_world\n       world-matrix\n       'u_worldViewProjection\n       (->>\n        view-projection-matrix\n        (m/multiply-matrices-3d world-matrix))\n       'u_worldInverseTranspose\n       (->> world-matrix (m/inverse-matrix-3d) (m/transpose-matrix-3d))\n       'u_color\n       (:u_color mat-uniforms)\n       'u_specular\n       (:u_specular mat-uniforms)\n       'u_shininess\n       (:u_shininess mat-uniforms)\n       'u_specularFactor\n       (:u_specularFactor mat-uniforms)))))))\n game)\n"} {:sym cubes-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n cubes-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity game (primitives/cube {:size 20}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"} {:sym cubes-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/cubes-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/cubes-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/cubes-3d/0"}]} {:sym cylinder-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/cylinder-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/cylinder-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/cylinder-3d/0"}]} {:sym torus-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/torus-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/torus-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/torus-3d/0"}]} {:sym crescent-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/crescent-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/crescent-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/crescent-3d/0"}]} {:sym balls-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n balls-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity\n    game\n    (primitives/sphere\n     {:radius 10, :subdivisions-axis 48, :subdivisions-height 24}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"} {:sym shape-entity, :meta {:doc nil, :arglists ([game {:keys [positions normals texcoords indices]}])}, :source "(defn\n shape-entity\n [game {:keys [positions normals texcoords indices]}]\n (c/compile\n  game\n  {:vertex data/advanced-vertex-shader,\n   :fragment data/advanced-fragment-shader,\n   :attributes\n   {'a_position {:data positions, :type (gl game FLOAT), :size 3},\n    'a_normal {:data normals, :type (gl game FLOAT), :size 3},\n    'a_texCoord {:data texcoords, :type (gl game FLOAT), :size 2}},\n   :indices\n   {:data\n    (#?(:clj short-array :cljs (fn* [p1__45475#] (js/Uint16Array. p1__45475#)))\n     indices),\n    :type (gl game UNSIGNED_SHORT)}}))\n"} {:sym cylinder-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n cylinder-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity\n    game\n    (primitives/cylinder\n     {:bottom-radius 10,\n      :top-radius 10,\n      :height 30,\n      :radial-subdivisions 10,\n      :vertical-subdivisions 10}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"} {:sym disc-3d, :examples [{:with-card card, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-advanced/disc-3d-init) (play-cljc.gl.example-utils/game-loop play-cljc.gl.examples-advanced/advanced-render)), :body-str "(->>\n (play-cljc.gl.example-utils/init-example card)\n (play-cljc.gl.examples-advanced/disc-3d-init)\n (play-cljc.gl.example-utils/game-loop\n  play-cljc.gl.examples-advanced/advanced-render))\n", :id "play-cljc.gl.examples-advanced/disc-3d/0"}]} {:sym torus-3d-init, :meta {:doc nil, :arglists ([game])}, :source "(defn\n torus-3d-init\n [game]\n (gl game enable (gl game CULL_FACE))\n (gl game enable (gl game DEPTH_TEST))\n (let\n  [entity\n   (shape-entity\n    game\n    (primitives/torus\n     {:radius 20,\n      :thickness 5,\n      :radial-subdivisions 20,\n      :body-subdivisions 20}))\n   objects\n   (vec\n    (for\n     [i (range 50)]\n     {:tz (rand 150),\n      :rx (rand (* 2 (math PI))),\n      :ry (rand (math PI)),\n      :mat-uniforms\n      {:u_color [(rand) (rand) (rand) 1],\n       :u_specular [1 1 1 1],\n       :u_shininess (rand 500),\n       :u_specularFactor (rand 1)}}))]\n  (assoc game :entity entity :objects objects)))\n"}), cljs.core.async.impl.ioc-helpers ({:sym EXCEPTION-FRAMES, :meta {}, :source "(def EXCEPTION-FRAMES 4)\n"} {:sym STATE-IDX, :meta {}, :source "(def STATE-IDX 1)\n"} {:sym aset-object, :meta {:doc nil, :arglists ([arr idx o])}, :source "(defn aset-object [arr idx o] (aget arr idx o))\n"} {:sym run-state-machine-wrapped, :meta {:doc nil, :arglists ([state])}, :source "(defn\n run-state-machine-wrapped\n [state]\n (try\n  (run-state-machine state)\n  (catch\n   js/Object\n   ex\n   (impl/close! (aget-object state USER-START-IDX))\n   (throw ex))))\n"} {:sym FN-IDX, :meta {}, :source "(def FN-IDX 0)\n"} {:sym aget-object, :meta {:doc nil, :arglists ([arr idx])}, :source "(defn aget-object [arr idx] (aget arr idx))\n"} {:sym return-chan, :meta {:doc nil, :arglists ([state value])}, :source "(defn\n return-chan\n [state value]\n (let\n  [c (aget state USER-START-IDX)]\n  (when-not (nil? value) (impl/put! c value (fn-handler (fn [] nil))))\n  (impl/close! c)\n  c))\n"} {:sym BINDINGS-IDX, :meta {}, :source "(def BINDINGS-IDX 3)\n"} {:sym CURRENT-EXCEPTION, :meta {}, :source "(def CURRENT-EXCEPTION 5)\n"} {:sym run-state-machine, :meta {:doc nil, :arglists ([state])}, :source "(defn run-state-machine [state] ((aget-object state FN-IDX) state))\n"} {:sym finished?, :meta {:doc "Returns true if the machine is in a finished state", :arglists ([state-array])}, :source "(defn\n finished?\n \"Returns true if the machine is in a finished state\"\n [state-array]\n (keyword-identical? (aget state-array STATE-IDX) :finished))\n"} {:sym USER-START-IDX, :meta {}, :source "(def USER-START-IDX 6)\n"} {:sym put!, :meta {:doc nil, :arglists ([state blk c val])}, :source "(defn\n put!\n [state blk c val]\n (if-let\n  [cb\n   (impl/put!\n    c\n    val\n    (fn-handler\n     (fn\n      [ret-val]\n      (ioc/aset-all! state VALUE-IDX ret-val STATE-IDX blk)\n      (run-state-machine-wrapped state))))]\n  (do (ioc/aset-all! state VALUE-IDX @cb STATE-IDX blk) :recur)\n  nil))\n"} {:sym take!, :meta {:doc nil, :arglists ([state blk c])}, :source "(defn\n take!\n [state blk c]\n (if-let\n  [cb\n   (impl/take!\n    c\n    (fn-handler\n     (fn\n      [x]\n      (ioc/aset-all! state VALUE-IDX x STATE-IDX blk)\n      (run-state-machine-wrapped state))))]\n  (do (ioc/aset-all! state VALUE-IDX @cb STATE-IDX blk) :recur)\n  nil))\n"} {:sym VALUE-IDX, :meta {}, :source "(def VALUE-IDX 2)\n"}), play-cljc.gl.example-utils ({:sym textures, :meta {}, :source "(def textures (atom 0))\n"} {:sym listen-for-mouse, :meta {:doc nil, :arglists ([{:keys [context], :as game} *state])}, :source "(defn\n listen-for-mouse\n [{:keys [context], :as game} *state]\n #?(:clj (GLFW/glfwSetCursorPosCallback context (proxy [GLFWCursorPosCallback] [] (invoke [window xpos ypos] (swap! *state (fn [{:keys [tx ty], :or {tx 0, ty 0}, :as state}] (let [*fb-width (MemoryUtil/memAllocInt 1) *fb-height (MemoryUtil/memAllocInt 1) *window-width (MemoryUtil/memAllocInt 1) *window-height (MemoryUtil/memAllocInt 1) _ (GLFW/glfwGetFramebufferSize context *fb-width *fb-height) _ (GLFW/glfwGetWindowSize context *window-width *window-height) fb-width (.get *fb-width) fb-height (.get *fb-height) window-width (.get *window-width) window-height (.get *window-height) width-ratio (/ fb-width window-width) height-ratio (/ fb-height window-height) x (- (* xpos width-ratio) tx) y (- (* ypos height-ratio) ty) rx (/ x fb-width) ry (/ y fb-height) r (Math/atan2 rx ry) cx (- x (/ fb-width 2)) cy (- (/ fb-height 2) y) cr (-> (/ cx fb-width) (* 360) m/deg->rad)] (MemoryUtil/memFree *fb-width) (MemoryUtil/memFree *fb-height) (MemoryUtil/memFree *window-width) (MemoryUtil/memFree *window-height) (assoc state :x x :y y :rx rx :ry ry :r r :cx cx :cy cy :cr cr))))))) :cljs (events/listen js/window \"mousemove\" (fn [event] (swap! *state (fn [{:keys [tx ty], :or {tx 0, ty 0}, :as state}] (let [bounds (.getBoundingClientRect context.canvas) x (- (.-clientX event) (.-left bounds) tx) y (- (.-clientY event) (.-top bounds) ty) rx (/ x (.-width bounds)) ry (/ y (.-height bounds)) r (js/Math.atan2 rx ry) cx (- x (/ (.-width bounds) 2)) cy (- (/ (.-height bounds) 2) y) cr (-> (/ cx (.-width bounds)) (* 360) m/deg->rad)] (assoc state :x x :y y :rx rx :ry ry :r r :cx cx :cy cy :cr cr))))))))\n"} {:sym get-size, :meta {:doc nil, :arglists ([game])}, :source "(defn\n get-size\n [game]\n #?(:clj (let [*width (MemoryUtil/memAllocInt 1) *height (MemoryUtil/memAllocInt 1) _ (GLFW/glfwGetFramebufferSize (:context game) *width *height) w (.get *width) h (.get *height)] (MemoryUtil/memFree *width) (MemoryUtil/memFree *height) [w h]) :cljs [(-> game :context .-canvas .-clientWidth) (-> game :context .-canvas .-clientHeight)]))\n"} {:sym get-width, :meta {:doc nil, :arglists ([game])}, :source "(defn get-width [game] (first (get-size game)))\n"} {:sym cos, :meta {}, :source "(def cos (fn* [p1__45477#] (math cos p1__45477#)))\n"} {:sym resize-example, :meta {:doc nil, :arglists ([{:keys [context], :as game}])}, :source "(defn\n resize-example\n [{:keys [context], :as game}]\n #?(:cljs (let [display-width context.canvas.clientWidth display-height context.canvas.clientHeight] (when (or (not= context.canvas.width display-width) (not= context.canvas.height display-height)) (set! context.canvas.width display-width) (set! context.canvas.height display-height)))))\n"} {:sym get-image, :meta {:doc nil, :arglists ([fname callback])}, :source "(defn\n get-image\n [fname callback]\n #?(:clj (let [is (io/input-stream (io/resource (str \"dynadoc-extend/cljs/\" fname))) bytes (with-open [out (java.io.ByteArrayOutputStream.)] (io/copy is out) (.toByteArray out)) *width (MemoryUtil/memAllocInt 1) *height (MemoryUtil/memAllocInt 1) *components (MemoryUtil/memAllocInt 1) direct-buffer (doto (ByteBuffer/allocateDirect (alength bytes)) (.put bytes) (.flip)) decoded-image (STBImage/stbi_load_from_memory direct-buffer *width *height *components STBImage/STBI_rgb_alpha) image {:data decoded-image, :width (.get *width), :height (.get *height)}] (MemoryUtil/memFree *width) (MemoryUtil/memFree *height) (MemoryUtil/memFree *components) (callback image)) :cljs (let [image (js/Image.)] (doto image (-> .-src (set! fname)) (-> .-onload (set! (fn* [] (callback {:data image, :width image.width, :height image.height}))))))))\n"} {:sym get-height, :meta {:doc nil, :arglists ([game])}, :source "(defn get-height [game] (second (get-size game)))\n"} {:sym PI, :meta {}, :source "(def PI (math PI))\n"} {:sym init-example, :meta {:doc nil, :arglists ([#?(:clj window :cljs card)])}, :source "(defn\n init-example\n [#?(:clj window :cljs card)]\n #?(:clj (assoc (c/->game window) :tex-count textures :total-time 0 :delta-time 0) :cljs (do (when-let [canvas (.querySelector card \"canvas\")] (.removeChild card canvas)) (let [canvas (doto (js/document.createElement \"canvas\") (-> .-style .-width (set! \"100%\")) (-> .-style .-height (set! \"100%\"))) context (.getContext canvas \"webgl2\")] (.appendChild card canvas) (assoc (c/->game context) :total-time 0 :delta-time 0)))))\n"} {:sym game-loop, :meta {:doc nil, :arglists ([f game])}, :source "(defn\n game-loop\n [f game]\n #?(:clj {:f f, :game game} :cljs (let [game (f game)] (js/requestAnimationFrame (fn [ts] (let [ts (* ts 0.001)] (game-loop f (assoc game :delta-time (- ts (:total-time game)) :total-time ts))))))))\n"} {:sym sin, :meta {}, :source "(def sin (fn* [p1__45478#] (math sin p1__45478#)))\n"}), dynadoc.aliases ({:sym chan, :meta {}, :source "(def chan async/promise-chan)\n"} {:sym put!, :meta {}, :source "(def put! async/put!)\n"} {:sym <!!, :meta {}, :source "(def <!! #?(:clj async/<!! :cljs identity))\n"}), cljs.analyzer.impl ({:sym ANY_SYM, :meta {}, :source "(def ANY_SYM 'any)\n"} {:sym BOOLEAN_OR_SEQ, :meta {}, :source "(def BOOLEAN_OR_SEQ '#{seq boolean})\n"} {:sym BOOLEAN_SYM, :meta {}, :source "(def BOOLEAN_SYM 'boolean)\n"} {:sym IGNORE_SYM, :meta {}, :source "(def IGNORE_SYM 'ignore)\n"} {:sym NOT_NATIVE, :meta {}, :source "(def NOT_NATIVE '#{clj not-native})\n"}), cljs.spec.test.alpha ({:sym get-env, :meta {:doc nil, :arglists ([])}, :source "(defn get-env [] {:ua-product (get-ua-product)})\n"} {:sym distinct-by, :meta {:doc nil, :arglists [[f coll]]}, :source "(defn\n distinct-by\n ([f coll]\n  (let\n   [step\n    (fn\n     step\n     [xs seen]\n     (lazy-seq\n      ((fn\n        [[x :as xs] seen]\n        (when-let\n         [s (seq xs)]\n         (let\n          [v (f x)]\n          (if\n           (contains? seen v)\n           (recur (rest s) seen)\n           (cons x (step (rest s) (conj seen v)))))))\n       xs\n       seen)))]\n   (step coll #{}))))\n"} {:sym summarize-results, :meta {:doc "Given a collection of check-results, e.g. from 'check', pretty\nprints the summary-result (default abbrev-result) of each.\n\nReturns a map with :total, the total number of results, plus a\nkey with a count for each different :type of result.", :arglists [[check-results] [check-results summary-result]]}, :source "(defn\n summarize-results\n \"Given a collection of check-results, e.g. from 'check', pretty\\nprints the summary-result (default abbrev-result) of each.\\n\\nReturns a map with :total, the total number of results, plus a\\nkey with a count for each different :type of result.\"\n ([check-results] (summarize-results check-results abbrev-result))\n ([check-results summary-result]\n  (reduce\n   (fn\n    [summary result]\n    (pp/pprint (summary-result result))\n    (->\n     summary\n     (update :total inc)\n     (update (result-type result) (fnil inc 0))))\n   {:total 0}\n   check-results)))\n"} {:sym instrumentable-syms, :meta {:doc "Given an opts map as per instrument, returns the set of syms\nthat can be instrumented.", :arglists [[] [opts]]}, :source "(defn\n instrumentable-syms\n \"Given an opts map as per instrument, returns the set of syms\\nthat can be instrumented.\"\n ([] (instrumentable-syms nil))\n ([opts]\n  (assert\n   (every? ident? (keys (:gen opts)))\n   \"instrument :gen expects ident keys\")\n  (reduce\n   into\n   #{}\n   [(filter fn-spec-name? (keys (s/registry)))\n    (keys (:spec opts))\n    (:stub opts)\n    (keys (:replace opts))])))\n"} {:sym get-host-port, :meta {:doc nil, :arglists ([])}, :source "(defn\n get-host-port\n []\n (if\n  (not= \"browser\" *target*)\n  {}\n  {:host (.. js/window -location -host),\n   :port (.. js/window -location -port)}))\n"} {:sym get-ua-product, :meta {:doc nil, :arglists ([])}, :source "(defn\n get-ua-product\n []\n (if\n  (not= \"browser\" *target*)\n  (keyword *target*)\n  (cond\n   product/SAFARI\n   :safari\n   product/CHROME\n   :chrome\n   product/FIREFOX\n   :firefox\n   product/IE\n   :ie)))\n"} {:sym ->sym, :meta {:doc nil, :arglists ([x])}, :source "(defn ->sym [x] (@#'s/->sym x))\n"} {:sym abbrev-result, :meta {:doc "Given a check result, returns an abbreviated version\nsuitable for summary use.", :arglists ([x])}, :source "(defn\n abbrev-result\n \"Given a check result, returns an abbreviated version\\nsuitable for summary use.\"\n [x]\n (if\n  (:failure x)\n  (->\n   (dissoc x :clojure.spec.test.check/ret)\n   (update :spec s/describe)\n   (update :failure unwrap-failure))\n  (dissoc x :spec :clojure.spec.test.check/opts)))\n"} {:sym validate-check-opts, :meta {:doc nil, :arglists ([opts])}, :source "(defn\n validate-check-opts\n [opts]\n (assert\n  (every? ident? (keys (:gen opts)))\n  \"check :gen expects ident keys\"))\n"}), play-cljc.gl.text ({:sym ->font-entity, :meta {:doc "Returns an entity with all characters in the font. The second arity is for backwards\n  compatibility and should not be used.", :arglists [[game data baked-font] [game data width height]]}, :source "(defn\n ->font-entity\n \"Returns an entity with all characters in the font. The second arity is for backwards\\n  compatibility and should not be used.\"\n ([game data baked-font]\n  (->\n   (->font-entity\n    game\n    data\n    (:bitmap-width baked-font)\n    (:bitmap-height baked-font))\n   (assoc :baked-font baked-font)\n   map->FontEntity))\n ([game data width height]\n  (->\n   (e/->image-entity game data width height)\n   (assoc :vertex font-vertex-shader :fragment font-fragment-shader)\n   (update\n    :uniforms\n    merge\n    {'u_color [0 0 0 1],\n     'u_scale_matrix (m/identity-matrix 3),\n     'u_translate_matrix (m/identity-matrix 3)})\n   #?(:clj (assoc-in [:uniforms (quote u_image) :opts] {:mip-level 0, :internal-fmt (gl game RED), :width width, :height height, :border 0, :src-fmt (gl game RED), :src-type (gl game UNSIGNED_BYTE)})))))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.text/->font-entity game data baked-font)}, :body (let [game (play-cljc.gl.example-utils/init-example card)] (play-cljc.gl.examples-text/init game) (play-cljc.gl.examples-text/load-roboto (fn [{:keys [data], :as image} baked-font] (let [entity (play-cljc.gl.core/compile game focus)] (->> game (play-cljc.gl.example-utils/game-loop (fn font-entity-render [game] (play-cljc.gl.example-utils/resize-example game) (let [game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) screen-ratio (/ game-width game-height) image-ratio (/ (:width entity) (:height entity)) [img-width img-height] (if (> screen-ratio image-ratio) [(* game-height (/ (:width entity) (:height entity))) game-height] [game-width (* game-width (/ (:height entity) (:width entity)))])] (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height} :clear {:color [1 1 1 1], :depth 1}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/translate 0 0) (play-cljc.transforms/scale img-width img-height)))) game))))))), :body-str "(play-cljc.gl.text/->font-entity game data baked-font)\n", :id "play-cljc.gl.text/->font-entity/0"}]} {:sym ->text-entity, :meta {:doc "Returns an entity with the given text rendered to it. The second arity is for backwards\n  compatibility and should not be used.", :arglists [[game {{:keys [baked-chars baseline font-height first-char bitmap-width bitmap-height]} :baked-font, :as font-entity} text] [game baked-font image-entity text]]}, :source "(defn\n ->text-entity\n \"Returns an entity with the given text rendered to it. The second arity is for backwards\\n  compatibility and should not be used.\"\n ([game\n   {{:keys\n     [baked-chars\n      baseline\n      font-height\n      first-char\n      bitmap-width\n      bitmap-height]}\n    :baked-font,\n    :as font-entity}\n   text]\n  (when-not\n   (:program font-entity)\n   (throw\n    (ex-info\n     \"Only compiled font entities can be passed to ->text-entity\"\n     {})))\n  (loop\n   [text (seq text) total (float 0) inner-entities []]\n   (if-let\n    [ch (first text)]\n    (let\n     [{:keys [x y w h xoff yoff xadv]}\n      (nth\n       baked-chars\n       (- #?(:clj (int ch) :cljs (.charCodeAt ch 0)) first-char))]\n     (recur\n      (rest text)\n      (+ total (float xadv))\n      (conj\n       inner-entities\n       (->\n        font-entity\n        (t/project bitmap-width bitmap-height)\n        (t/crop x y w h)\n        (t/translate (+ xoff total) (- font-height baseline yoff))\n        (t/scale w h)\n        (update-in\n         [:uniforms 'u_matrix]\n         (fn*\n          [p1__44990#]\n          (m/multiply-matrices 3 flip-y-matrix p1__44990#)))))))\n    (->\n     (e/->image-entity game nil total font-height)\n     (assoc\n      :width\n      total\n      :height\n      font-height\n      :render-to-texture\n      {'u_image\n       (mapv\n        (fn*\n         [p1__44991#]\n         (assoc\n          p1__44991#\n          :viewport\n          {:x 0,\n           :y (- font-height bitmap-height),\n           :width bitmap-width,\n           :height bitmap-height}))\n        inner-entities)})))))\n ([game baked-font image-entity text]\n  (->text-entity\n   game\n   (assoc image-entity :baked-font baked-font)\n   text)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.text/->text-entity game font-entity "Hello, world!")}, :body (let [game (play-cljc.gl.example-utils/init-example card)] (play-cljc.gl.examples-text/init game) (play-cljc.gl.examples-text/load-roboto (fn [{:keys [data], :as image} baked-font] (let [font-entity (play-cljc.gl.core/compile game (play-cljc.gl.text/->font-entity game data baked-font)) entity (play-cljc.gl.core/compile game focus)] (->> game (play-cljc.gl.example-utils/game-loop (fn text-entity-render [game] (play-cljc.gl.example-utils/resize-example game) (let [game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height} :clear {:color [1 1 1 1], :depth 1}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/translate 0 0) (play-cljc.transforms/scale (:width entity) (:height entity))))) game))))))), :body-str "(play-cljc.gl.text/->text-entity game font-entity \"Hello, world!\")\n", :id "play-cljc.gl.text/->text-entity/0"}]}), clojure.string ({:sym ends-with?, :meta {:doc "True if s ends with substr.", :arglists ([s substr])}, :source "(defn\n ends-with?\n \"True if s ends with substr.\"\n [s substr]\n (gstring/endsWith s substr))\n"} {:sym capitalize, :meta {:doc "Converts first character of the string to upper-case, all other\n  characters to lower-case.", :arglists ([s])}, :source "(defn\n capitalize\n \"Converts first character of the string to upper-case, all other\\n  characters to lower-case.\"\n [s]\n (gstring/capitalize s))\n"} {:sym reverse, :meta {:doc "Returns s with its characters reversed.", :arglists ([s])}, :source "(defn\n reverse\n \"Returns s with its characters reversed.\"\n [s]\n (->\n  (.replace s re-surrogate-pair \"$2$1\")\n  (.. (split \"\") (reverse) (join \"\"))))\n"} {:sym join, :meta {:doc "Returns a string of all elements in coll, as returned by (seq coll),\n  separated by an optional separator.", :arglists [[coll] [separator coll]]}, :source "(defn\n join\n \"Returns a string of all elements in coll, as returned by (seq coll),\\n  separated by an optional separator.\"\n ([coll]\n  (loop\n   [sb (StringBuffer.) coll (seq coll)]\n   (if-not\n    (nil? coll)\n    (recur (. sb (append (str (first coll)))) (next coll))\n    (.toString sb))))\n ([separator coll]\n  (loop\n   [sb (StringBuffer.) coll (seq coll)]\n   (if-not\n    (nil? coll)\n    (do\n     (. sb (append (str (first coll))))\n     (let\n      [coll (next coll)]\n      (when-not (nil? coll) (. sb (append separator)))\n      (recur sb coll)))\n    (.toString sb)))))\n"} {:sym replace-first, :meta {:doc "Replaces the first instance of match with replacement in s.\n\n   match/replacement can be:\n\n   string / string\n   pattern / (string or function of match).\n\n   See also replace.\n\n   The replacement is literal (i.e. none of its characters are treated\n   specially) for all cases above except pattern / string.\n\n   For pattern / string, $1, $2, etc. in the replacement string are\n   substituted with the string that matched the corresponding\n   parenthesized group in the pattern.\n\n   Example:\n   (clojure.string/replace-first \"swap first two words\"\n                                 #\"(\\w+)(\\s+)(\\w+)\" \"$3$2$1\")\n   -> \"first swap two words\"", :arglists ([s match replacement])}, :source "(defn\n replace-first\n \"Replaces the first instance of match with replacement in s.\\n\\n   match/replacement can be:\\n\\n   string / string\\n   pattern / (string or function of match).\\n\\n   See also replace.\\n\\n   The replacement is literal (i.e. none of its characters are treated\\n   specially) for all cases above except pattern / string.\\n\\n   For pattern / string, $1, $2, etc. in the replacement string are\\n   substituted with the string that matched the corresponding\\n   parenthesized group in the pattern.\\n\\n   Example:\\n   (clojure.string/replace-first \\\"swap first two words\\\"\\n                                 #\\\"(\\\\w+)(\\\\s+)(\\\\w+)\\\" \\\"$3$2$1\\\")\\n   -> \\\"first swap two words\\\"\"\n [s match replacement]\n (.replace s match replacement))\n"} {:sym starts-with?, :meta {:doc "True if s starts with substr.", :arglists ([s substr])}, :source "(defn\n starts-with?\n \"True if s starts with substr.\"\n [s substr]\n (gstring/startsWith s substr))\n"} {:sym escape, :meta {:doc "Return a new string, using cmap to escape each character ch\n   from s as follows:\n\n   If (cmap ch) is nil, append ch to the new string.\n   If (cmap ch) is non-nil, append (str (cmap ch)) instead.", :arglists ([s cmap])}, :source "(defn\n escape\n \"Return a new string, using cmap to escape each character ch\\n   from s as follows:\\n\\n   If (cmap ch) is nil, append ch to the new string.\\n   If (cmap ch) is non-nil, append (str (cmap ch)) instead.\"\n [s cmap]\n (let\n  [buffer (StringBuffer.) length (.-length s)]\n  (loop\n   [index 0]\n   (if\n    (== length index)\n    (. buffer (toString))\n    (let\n     [ch (.charAt s index) replacement (get cmap ch)]\n     (if-not\n      (nil? replacement)\n      (.append buffer (str replacement))\n      (.append buffer ch))\n     (recur (inc index)))))))\n"} {:sym last-index-of, :meta {:doc "Return last index of value (string or char) in s, optionally\n  searching backward from from-index or nil if not found.", :arglists [[s value] [s value from-index]]}, :source "(defn\n last-index-of\n \"Return last index of value (string or char) in s, optionally\\n  searching backward from from-index or nil if not found.\"\n ([s value]\n  (let [result (.lastIndexOf s value)] (if (neg? result) nil result)))\n ([s value from-index]\n  (let\n   [result (.lastIndexOf s value from-index)]\n   (if (neg? result) nil result))))\n"} {:sym includes?, :meta {:doc "True if s includes substr.", :arglists ([s substr])}, :source "(defn\n includes?\n \"True if s includes substr.\"\n [s substr]\n (gstring/contains s substr))\n"} {:sym replace, :meta {:doc "Replaces all instance of match with replacement in s.\n\n   match/replacement can be:\n\n   string / string\n   pattern / (string or function of match).\n\n   See also replace-first.\n\n   The replacement is literal (i.e. none of its characters are treated\n   specially) for all cases above except pattern / string.\n\n   For pattern / string, $1, $2, etc. in the replacement string are\n   substituted with the string that matched the corresponding\n   parenthesized group in the pattern.\n\n   Example:\n   (clojure.string/replace \"Almost Pig Latin\" #\"\\b(\\w)(\\w+)\\b\" \"$2$1ay\")\n   -> \"lmostAay igPay atinLay\"", :arglists ([s match replacement])}, :source "(defn\n replace\n \"Replaces all instance of match with replacement in s.\\n\\n   match/replacement can be:\\n\\n   string / string\\n   pattern / (string or function of match).\\n\\n   See also replace-first.\\n\\n   The replacement is literal (i.e. none of its characters are treated\\n   specially) for all cases above except pattern / string.\\n\\n   For pattern / string, $1, $2, etc. in the replacement string are\\n   substituted with the string that matched the corresponding\\n   parenthesized group in the pattern.\\n\\n   Example:\\n   (clojure.string/replace \\\"Almost Pig Latin\\\" #\\\"\\\\b(\\\\w)(\\\\w+)\\\\b\\\" \\\"$2$1ay\\\")\\n   -> \\\"lmostAay igPay atinLay\\\"\"\n [s match replacement]\n (cond\n  (string? match)\n  (.replace\n   s\n   (js/RegExp. (gstring/regExpEscape match) \"g\")\n   replacement)\n  (instance? js/RegExp match)\n  (if\n   (string? replacement)\n   (replace-all s match replacement)\n   (replace-all s match (replace-with replacement)))\n  :else\n  (throw (str \"Invalid match arg: \" match))))\n"} {:sym split-lines, :meta {:doc "Splits s on \\n or \\r\\n.", :arglists ([s])}, :source "(defn split-lines \"Splits s on \\\\n or \\\\r\\\\n.\" [s] (split s #\"\\n|\\r\\n\"))\n"} {:sym lower-case, :meta {:doc "Converts string to all lower-case.", :arglists ([s])}, :source "(defn\n lower-case\n \"Converts string to all lower-case.\"\n [s]\n (.toLowerCase s))\n"} {:sym trim-newline, :meta {:doc "Removes all trailing newline \\n or return \\r characters from\n  string.  Similar to Perl's chomp.", :arglists ([s])}, :source "(defn\n trim-newline\n \"Removes all trailing newline \\\\n or return \\\\r characters from\\n  string.  Similar to Perl's chomp.\"\n [s]\n (loop\n  [index (.-length s)]\n  (if\n   (zero? index)\n   \"\"\n   (let\n    [ch (get s (dec index))]\n    (if\n     (or (identical? \\newline ch) (identical? \\return ch))\n     (recur (dec index))\n     (.substring s 0 index))))))\n"} {:sym upper-case, :meta {:doc "Converts string to all upper-case.", :arglists ([s])}, :source "(defn\n upper-case\n \"Converts string to all upper-case.\"\n [s]\n (.toUpperCase s))\n"} {:sym split, :meta {:doc "Splits string on a regular expression. Optional argument limit is\n  the maximum number of splits. Not lazy. Returns vector of the splits.", :arglists [[s re] [s re limit]]}, :source "(defn\n split\n \"Splits string on a regular expression. Optional argument limit is\\n  the maximum number of splits. Not lazy. Returns vector of the splits.\"\n ([s re] (split s re 0))\n ([s re limit]\n  (discard-trailing-if-needed\n   limit\n   (if\n    (identical? \"/(?:)/\" (str re))\n    (split-with-empty-regex s limit)\n    (if\n     (< limit 1)\n     (vec (.split (str s) re))\n     (loop\n      [s s limit limit parts []]\n      (if\n       (== 1 limit)\n       (conj parts s)\n       (let\n        [m (re-find re s)]\n        (if-not\n         (nil? m)\n         (let\n          [index (.indexOf s m)]\n          (recur\n           (.substring s (+ index (count m)))\n           (dec limit)\n           (conj parts (.substring s 0 index))))\n         (conj parts s))))))))))\n"} {:sym trimr, :meta {:doc "Removes whitespace from the right side of string.", :arglists ([s])}, :source "(defn\n trimr\n \"Removes whitespace from the right side of string.\"\n [s]\n (gstring/trimRight s))\n"} {:sym index-of, :meta {:doc "Return index of value (string or char) in s, optionally searching\n  forward from from-index or nil if not found.", :arglists [[s value] [s value from-index]]}, :source "(defn\n index-of\n \"Return index of value (string or char) in s, optionally searching\\n  forward from from-index or nil if not found.\"\n ([s value]\n  (let [result (.indexOf s value)] (if (neg? result) nil result)))\n ([s value from-index]\n  (let\n   [result (.indexOf s value from-index)]\n   (if (neg? result) nil result))))\n"} {:sym trim, :meta {:doc "Removes whitespace from both ends of string.", :arglists ([s])}, :source "(defn\n trim\n \"Removes whitespace from both ends of string.\"\n [s]\n (gstring/trim s))\n"} {:sym triml, :meta {:doc "Removes whitespace from the left side of string.", :arglists ([s])}, :source "(defn\n triml\n \"Removes whitespace from the left side of string.\"\n [s]\n (gstring/trimLeft s))\n"} {:sym blank?, :meta {:doc "True is s is nil, empty, or contains only whitespace.", :arglists ([s])}, :source "(defn\n blank?\n \"True is s is nil, empty, or contains only whitespace.\"\n [s]\n (gstring/isEmptyOrWhitespace (gstring/makeSafe s)))\n"}), cljs.spec.alpha ({:sym form, :meta {:doc "returns the spec as data", :arglists ([spec])}, :source "(defn form \"returns the spec as data\" [spec] (describe* (specize spec)))\n"} {:sym nilable-impl, :meta {:doc "Do not call this directly, use 'nilable'", :arglists ([form pred gfn])}, :source "(defn\n nilable-impl\n \"Do not call this directly, use 'nilable'\"\n [form pred gfn]\n (let\n  [spec (delay (specize pred form))]\n  (reify\n   Specize\n   (specize* [s] s)\n   (specize* [s _] s)\n   Spec\n   (conform* [_ x] (if (nil? x) nil (conform* @spec x)))\n   (unform* [_ x] (if (nil? x) nil (unform* @spec x)))\n   (explain*\n    [_ path via in x]\n    (when-not\n     (c/or (pvalid? @spec x) (nil? x))\n     (conj\n      (explain-1 form pred (conj path :cljs.spec.alpha/pred) via in x)\n      {:path (conj path :cljs.spec.alpha/nil),\n       :pred 'nil?,\n       :val x,\n       :via via,\n       :in in})))\n   (gen*\n    [_ overrides path rmap]\n    (if\n     gfn\n     (gfn)\n     (gen/frequency\n      [[1 (gen/delay (gen/return nil))]\n       [9\n        (gen/delay\n         (gensub\n          pred\n          overrides\n          (conj path :cljs.spec.alpha/pred)\n          rmap\n          form))]])))\n   (with-gen* [_ gfn] (nilable-impl form pred gfn))\n   (describe*\n    [_]\n    (clojure.core/sequence\n     (clojure.core/seq\n      (clojure.core/concat\n       (clojure.core/list 'cljs.spec.alpha/nilable)\n       (clojure.core/list (s/mres form)))))))))\n"} {:sym *recursion-limit*, :meta {}, :source "(def\n *recursion-limit*\n \"A soft limit on how many times a branching spec (or/alt/*/opt-keys/multi-spec)\\n  can be recursed through during generation. After this a\\n  non-recursive branch will be chosen.\"\n 4)\n"} {:sym *coll-error-limit*, :meta {}, :source "(def\n *coll-error-limit*\n \"The number of errors reported by explain in a collection spec'ed with 'every'\"\n 20)\n"} {:sym explain-printer, :meta {:doc "Default printer for explain-data. nil indicates a successful validation.", :arglists ([ed])}, :source "(defn\n explain-printer\n \"Default printer for explain-data. nil indicates a successful validation.\"\n [ed]\n (if\n  ed\n  (let\n   [problems\n    (->>\n     (:cljs.spec.alpha/problems ed)\n     (sort-by (fn* [p1__45298#] (- (count (:in p1__45298#)))))\n     (sort-by (fn* [p1__45299#] (- (count (:path p1__45299#))))))]\n   (print\n    (with-out-str\n     (doseq\n      [{:keys [path pred val reason via in], :as prob} problems]\n      (pr val)\n      (print \" - failed: \")\n      (if reason (print reason) (pr (abbrev pred)))\n      (when-not (empty? in) (print (str \" in: \" (pr-str in))))\n      (when-not (empty? path) (print (str \" at: \" (pr-str path))))\n      (when-not\n       (empty? via)\n       (print (str \" spec: \" (pr-str (last via)))))\n      (doseq\n       [[k v] prob]\n       (when-not\n        (#{:path :pred :via :val :reason :in} k)\n        (print \"\\n\\t\" (pr-str k) \" \")\n        (pr v)))\n      (newline)))))\n  (println \"Success!\")))\n"} {:sym Specize, :meta {:doc nil}, :methods (specize*)} {:sym alt-impl, :meta {:doc "Do not call this directly, use 'alt'", :arglists ([ks ps forms])}, :source "(defn\n alt-impl\n \"Do not call this directly, use 'alt'\"\n [ks ps forms]\n (assoc (alt* ps ks forms) :id (random-uuid)))\n"} {:sym def-impl, :meta {:doc "Do not call this directly, use 'def'", :arglists ([k form spec])}, :source "(defn\n def-impl\n \"Do not call this directly, use 'def'\"\n [k form spec]\n (assert\n  (c/and (ident? k) (namespace k))\n  \"k must be namespaced keyword or resolveable symbol\")\n (if\n  (nil? spec)\n  (swap! registry-ref dissoc k)\n  (let\n   [spec\n    (if\n     (c/or (spec? spec) (regex? spec) (get @registry-ref spec))\n     spec\n     (spec-impl form spec nil nil))]\n   (swap! registry-ref assoc k (with-name spec k))))\n k)\n"} {:sym *explain-out*, :meta {}, :source "(def *explain-out* explain-printer)\n"} {:sym regex-spec-impl, :meta {:doc "Do not call this directly, use 'spec' with a regex op argument", :arglists ([re gfn])}, :source "(defn\n regex-spec-impl\n \"Do not call this directly, use 'spec' with a regex op argument\"\n [re gfn]\n (reify\n  Specize\n  (specize* [s] s)\n  (specize* [s _] s)\n  Spec\n  (conform*\n   [_ x]\n   (if\n    (c/or (nil? x) (sequential? x))\n    (re-conform re (seq x))\n    :cljs.spec.alpha/invalid))\n  (unform* [_ x] (op-unform re x))\n  (explain*\n   [_ path via in x]\n   (if\n    (c/or (nil? x) (sequential? x))\n    (re-explain path via in re (seq x))\n    [{:path path,\n      :pred\n      (clojure.core/sequence\n       (clojure.core/seq\n        (clojure.core/concat\n         (clojure.core/list 'clojure.core/fn)\n         (clojure.core/list\n          (clojure.core/vec\n           (clojure.core/sequence\n            (clojure.core/seq\n             (clojure.core/concat (clojure.core/list '%))))))\n         (clojure.core/list\n          (clojure.core/sequence\n           (clojure.core/seq\n            (clojure.core/concat\n             (clojure.core/list 'cljs.core/or)\n             (clojure.core/list\n              (clojure.core/sequence\n               (clojure.core/seq\n                (clojure.core/concat\n                 (clojure.core/list 'clojure.core/nil?)\n                 (clojure.core/list '%)))))\n             (clojure.core/list\n              (clojure.core/sequence\n               (clojure.core/seq\n                (clojure.core/concat\n                 (clojure.core/list 'clojure.core/sequential?)\n                 (clojure.core/list '%)))))))))))),\n      :val x,\n      :via via,\n      :in in}]))\n  (gen*\n   [_ overrides path rmap]\n   (if gfn (gfn) (re-gen re overrides path rmap (op-describe re))))\n  (with-gen* [_ gfn] (regex-spec-impl re gfn))\n  (describe* [_] (op-describe re))))\n"} {:sym merge-spec-impl, :meta {:doc "Do not call this directly, use 'merge'", :arglists ([forms preds gfn])}, :source "(defn\n merge-spec-impl\n \"Do not call this directly, use 'merge'\"\n [forms preds gfn]\n (reify\n  Specize\n  (specize* [s] s)\n  (specize* [s _] s)\n  Spec\n  (conform*\n   [_ x]\n   (let\n    [ms\n     (map\n      (fn* [p1__45311# p2__45312#] (dt p1__45311# x p2__45312#))\n      preds\n      forms)]\n    (if\n     (some invalid? ms)\n     :cljs.spec.alpha/invalid\n     (apply c/merge ms))))\n  (unform*\n   [_ x]\n   (apply\n    c/merge\n    (map (fn* [p1__45313#] (unform p1__45313# x)) (reverse preds))))\n  (explain*\n   [_ path via in x]\n   (apply\n    concat\n    (map\n     (fn*\n      [p1__45314# p2__45315#]\n      (explain-1 p1__45314# p2__45315# path via in x))\n     forms\n     preds)))\n  (gen*\n   [_ overrides path rmap]\n   (if\n    gfn\n    (gfn)\n    (gen/fmap\n     (fn* [p1__45316#] (apply c/merge p1__45316#))\n     (apply\n      gen/tuple\n      (map\n       (fn*\n        [p1__45317# p2__45318#]\n        (gensub p1__45317# overrides path rmap p2__45318#))\n       preds\n       forms)))))\n  (with-gen* [_ gfn] (merge-spec-impl forms preds gfn))\n  (describe*\n   [_]\n   (clojure.core/sequence\n    (clojure.core/seq\n     (clojure.core/concat\n      (clojure.core/list 'cljs.spec.alpha/merge)\n      forms))))))\n"} {:sym explain-data*, :meta {:doc nil, :arglists ([spec path via in x])}, :source "(defn\n explain-data*\n [spec path via in x]\n (when-let\n  [probs (explain* (specize spec) path via in x)]\n  (when-not\n   (empty? probs)\n   {:cljs.spec.alpha/problems probs,\n    :cljs.spec.alpha/spec spec,\n    :cljs.spec.alpha/value x})))\n"} {:sym MAX_INT, :meta {}, :source "(def MAX_INT 9007199254740991)\n"} {:sym check-asserts, :meta {:doc "Enable or disable spec asserts that have been compiled\nwith '*compile-asserts*' true.  See 'assert'.\nInitially set to boolean value of cljs.spec.alpha/*runtime-asserts*.\nDefaults to false.", :arglists ([flag])}, :source "(defn\n check-asserts\n \"Enable or disable spec asserts that have been compiled\\nwith '*compile-asserts*' true.  See 'assert'.\\nInitially set to boolean value of cljs.spec.alpha/*runtime-asserts*.\\nDefaults to false.\"\n [flag]\n (set! *runtime-asserts* flag))\n"} {:sym assert*, :meta {:doc "Do not call this directly, use 'assert'.", :arglists ([spec x])}, :source "(defn\n assert*\n \"Do not call this directly, use 'assert'.\"\n [spec x]\n (if\n  (valid? spec x)\n  x\n  (let\n   [ed\n    (c/merge\n     (assoc\n      (explain-data* spec [] [] [] x)\n      :cljs.spec.alpha/failure\n      :assertion-failed))]\n   (throw\n    (js/Error.\n     (str\n      \"Spec assertion failed\\n\"\n      (with-out-str (explain-out ed))))))))\n"} {:sym inst-in-range?, :meta {:doc "Return true if inst at or after start and before end", :arglists ([start end inst])}, :source "(defn\n inst-in-range?\n \"Return true if inst at or after start and before end\"\n [start end inst]\n (c/and\n  (inst? inst)\n  (let\n   [t (inst-ms inst)]\n   (c/and (<= (inst-ms start) t) (< t (inst-ms end))))))\n"} {:sym and-spec-impl, :meta {:doc "Do not call this directly, use 'and'", :arglists ([forms preds gfn])}, :source "(defn\n and-spec-impl\n \"Do not call this directly, use 'and'\"\n [forms preds gfn]\n (let\n  [specs\n   (delay (mapv specize preds forms))\n   cform\n   (case\n    (count preds)\n    2\n    (fn\n     [x]\n     (let\n      [specs @specs ret (conform* (specs 0) x)]\n      (if\n       (invalid? ret)\n       :cljs.spec.alpha/invalid\n       (conform* (specs 1) ret))))\n    3\n    (fn\n     [x]\n     (let\n      [specs @specs ret (conform* (specs 0) x)]\n      (if\n       (invalid? ret)\n       :cljs.spec.alpha/invalid\n       (let\n        [ret (conform* (specs 1) ret)]\n        (if\n         (invalid? ret)\n         :cljs.spec.alpha/invalid\n         (conform* (specs 2) ret))))))\n    (fn\n     [x]\n     (let\n      [specs @specs]\n      (loop\n       [ret x i 0]\n       (if\n        (< i (count specs))\n        (let\n         [nret (conform* (specs i) ret)]\n         (if\n          (invalid? nret)\n          :cljs.spec.alpha/invalid\n          (recur nret (inc i))))\n        ret)))))]\n  (reify\n   Specize\n   (specize* [s] s)\n   (specize* [s _] s)\n   Spec\n   (conform* [_ x] (cform x))\n   (unform*\n    [_ x]\n    (reduce\n     (fn* [p1__45310# p2__45309#] (unform p2__45309# p1__45310#))\n     x\n     (reverse preds)))\n   (explain*\n    [_ path via in x]\n    (explain-pred-list forms preds path via in x))\n   (gen*\n    [_ overrides path rmap]\n    (if\n     gfn\n     (gfn)\n     (gensub (first preds) overrides path rmap (first forms))))\n   (with-gen* [_ gfn] (and-spec-impl forms preds gfn))\n   (describe*\n    [_]\n    (clojure.core/sequence\n     (clojure.core/seq\n      (clojure.core/concat\n       (clojure.core/list 'cljs.spec.alpha/and)\n       forms)))))))\n"} {:sym describe*, :meta {:doc nil, :arglists ([spec])}, :protocol Spec} {:sym map-spec-impl, :meta {:doc "Do not call this directly, use 'spec' with a map argument", :arglists ([{:keys [req-un opt-un keys-pred pred-exprs opt-keys req-specs req req-keys opt-specs pred-forms opt gfn], :as argm}])}, :source "(defn\n map-spec-impl\n \"Do not call this directly, use 'spec' with a map argument\"\n [{:keys\n   [req-un\n    opt-un\n    keys-pred\n    pred-exprs\n    opt-keys\n    req-specs\n    req\n    req-keys\n    opt-specs\n    pred-forms\n    opt\n    gfn],\n   :as argm}]\n (let\n  [k->s\n   (zipmap (concat req-keys opt-keys) (concat req-specs opt-specs))\n   keys->specnames\n   (fn* [p1__45301#] (c/or (k->s p1__45301#) p1__45301#))\n   id\n   (random-uuid)]\n  (reify\n   Specize\n   (specize* [s] s)\n   (specize* [s _] s)\n   Spec\n   (conform*\n    [_ m]\n    (if\n     (keys-pred m)\n     (let\n      [reg (registry)]\n      (loop\n       [ret m [[k v] & ks :as keys] m]\n       (if\n        keys\n        (let\n         [sname (keys->specnames k)]\n         (if-let\n          [s (get reg sname)]\n          (let\n           [cv (conform s v)]\n           (if\n            (invalid? cv)\n            :cljs.spec.alpha/invalid\n            (recur (if (identical? cv v) ret (assoc ret k cv)) ks)))\n          (recur ret ks)))\n        ret)))\n     :cljs.spec.alpha/invalid))\n   (unform*\n    [_ m]\n    (let\n     [reg (registry)]\n     (loop\n      [ret m [k & ks :as keys] (c/keys m)]\n      (if\n       keys\n       (if\n        (contains? reg (keys->specnames k))\n        (let\n         [cv (get m k) v (unform (keys->specnames k) cv)]\n         (recur (if (identical? cv v) ret (assoc ret k v)) ks))\n        (recur ret ks))\n       ret))))\n   (explain*\n    [_ path via in x]\n    (if-not\n     (map? x)\n     [{:path path, :pred 'clojure.core/map?, :val x, :via via, :in in}]\n     (let\n      [reg (registry)]\n      (apply\n       concat\n       (when-let\n        [probs\n         (->>\n          (map\n           (fn [pred form] (when-not (pred x) form))\n           pred-exprs\n           pred-forms)\n          (keep identity)\n          seq)]\n        (map\n         (fn*\n          [p1__45302#]\n          (identity\n           {:path path, :pred p1__45302#, :val x, :via via, :in in}))\n         probs))\n       (map\n        (fn\n         [[k v]]\n         (when-not\n          (c/or\n           (not (contains? reg (keys->specnames k)))\n           (pvalid? (keys->specnames k) v k))\n          (explain-1\n           (keys->specnames k)\n           (keys->specnames k)\n           (conj path k)\n           via\n           (conj in k)\n           v)))\n        (seq x))))))\n   (gen*\n    [_ overrides path rmap]\n    (if\n     gfn\n     (gfn)\n     (let\n      [rmap\n       (inck rmap id)\n       rgen\n       (fn [k s] [k (gensub s overrides (conj path k) rmap k)])\n       ogen\n       (fn\n        [k s]\n        (when-not\n         (recur-limit? rmap id path k)\n         [k (gen/delay (gensub s overrides (conj path k) rmap k))]))\n       reqs\n       (map rgen req-keys req-specs)\n       opts\n       (remove nil? (map ogen opt-keys opt-specs))]\n      (when\n       (every? identity (concat (map second reqs) (map second opts)))\n       (gen/bind\n        (gen/tuple\n         (and-k-gen req)\n         (or-k-gen opt)\n         (and-k-gen req-un)\n         (or-k-gen opt-un))\n        (fn\n         [[req-ks opt-ks req-un-ks opt-un-ks]]\n         (let\n          [qks\n           (flatten (concat req-ks opt-ks))\n           unqks\n           (map\n            (comp keyword name)\n            (flatten (concat req-un-ks opt-un-ks)))]\n          (->>\n           (into reqs opts)\n           (filter\n            (fn*\n             [p1__45303#]\n             ((set (concat qks unqks)) (first p1__45303#))))\n           (apply concat)\n           (apply gen/hash-map)))))))))\n   (with-gen* [_ gfn] (map-spec-impl (assoc argm :gfn gfn)))\n   (describe*\n    [_]\n    (cons\n     'cljs.spec.alpha/keys\n     (cond->\n      []\n      req\n      (conj :req req)\n      opt\n      (conj :opt opt)\n      req-un\n      (conj :req-un req-un)\n      opt-un\n      (conj :opt-un opt-un)))))))\n"} {:sym explain, :meta {:doc "Given a spec and a value that fails to conform, prints an explanation to *out*.", :arglists ([spec x])}, :source "(defn\n explain\n \"Given a spec and a value that fails to conform, prints an explanation to *out*.\"\n [spec x]\n (explain-out (explain-data spec x)))\n"} {:sym with-gen*, :meta {:doc nil, :arglists ([spec gfn])}, :protocol Spec} {:sym or-spec-impl, :meta {:doc "Do not call this directly, use 'or'", :arglists ([keys forms preds gfn])}, :source "(defn\n or-spec-impl\n \"Do not call this directly, use 'or'\"\n [keys forms preds gfn]\n (let\n  [id\n   (random-uuid)\n   kps\n   (zipmap keys preds)\n   specs\n   (delay (mapv specize preds forms))\n   cform\n   (case\n    (count preds)\n    2\n    (fn\n     [x]\n     (let\n      [specs @specs ret (conform* (specs 0) x)]\n      (if\n       (invalid? ret)\n       (let\n        [ret (conform* (specs 1) x)]\n        (if\n         (invalid? ret)\n         :cljs.spec.alpha/invalid\n         (tagged-ret (keys 1) ret)))\n       (tagged-ret (keys 0) ret))))\n    3\n    (fn\n     [x]\n     (let\n      [specs @specs ret (conform* (specs 0) x)]\n      (if\n       (invalid? ret)\n       (let\n        [ret (conform* (specs 1) x)]\n        (if\n         (invalid? ret)\n         (let\n          [ret (conform* (specs 2) x)]\n          (if\n           (invalid? ret)\n           :cljs.spec.alpha/invalid\n           (tagged-ret (keys 2) ret)))\n         (tagged-ret (keys 1) ret)))\n       (tagged-ret (keys 0) ret))))\n    (fn\n     [x]\n     (let\n      [specs @specs]\n      (loop\n       [i 0]\n       (if\n        (< i (count specs))\n        (let\n         [spec (specs i)]\n         (let\n          [ret (conform* spec x)]\n          (if\n           (invalid? ret)\n           (recur (inc i))\n           (tagged-ret (keys i) ret))))\n        :cljs.spec.alpha/invalid)))))]\n  (reify\n   Specize\n   (specize* [s] s)\n   (specize* [s _] s)\n   Spec\n   (conform* [_ x] (cform x))\n   (unform* [_ [k x]] (unform (kps k) x))\n   (explain*\n    [this path via in x]\n    (when-not\n     (pvalid? this x)\n     (apply\n      concat\n      (map\n       (fn\n        [k form pred]\n        (when-not\n         (pvalid? pred x)\n         (explain-1 form pred (conj path k) via in x)))\n       keys\n       forms\n       preds))))\n   (gen*\n    [_ overrides path rmap]\n    (if\n     gfn\n     (gfn)\n     (let\n      [gen\n       (fn\n        [k p f]\n        (let\n         [rmap (inck rmap id)]\n         (when-not\n          (recur-limit? rmap id path k)\n          (gen/delay (gensub p overrides (conj path k) rmap f)))))\n       gs\n       (remove nil? (map gen keys preds forms))]\n      (when-not (empty? gs) (gen/one-of gs)))))\n   (with-gen* [_ gfn] (or-spec-impl keys forms preds gfn))\n   (describe*\n    [_]\n    (clojure.core/sequence\n     (clojure.core/seq\n      (clojure.core/concat\n       (clojure.core/list 'cljs.spec.alpha/or)\n       (mapcat vector keys forms))))))))\n"} {:sym *fspec-iterations*, :meta {}, :source "(def\n *fspec-iterations*\n \"The number of times an anonymous fn specified by fspec will be (generatively) tested during conform\"\n 21)\n"} {:sym Spec, :meta {:doc nil}, :methods (conform* describe* explain* gen* unform* with-gen*)} {:sym unform, :meta {:doc "Given a spec and a value created by or compliant with a call to\n  'conform' with the same spec, returns a value with all conform\n   destructuring undone.", :arglists ([spec x])}, :source "(defn\n unform\n \"Given a spec and a value created by or compliant with a call to\\n  'conform' with the same spec, returns a value with all conform\\n   destructuring undone.\"\n [spec x]\n (unform* (specize spec) x))\n"} {:sym valid?, :meta {:doc "Helper function that returns true when x is valid for spec.", :arglists [[spec x] [spec x form]]}, :source "(defn\n valid?\n \"Helper function that returns true when x is valid for spec.\"\n ([spec x]\n  (let [spec (specize spec)] (not (invalid? (conform* spec x)))))\n ([spec x form]\n  (let [spec (specize spec form)] (not (invalid? (conform* spec x))))))\n"} {:sym gen, :meta {:doc "Given a spec, returns the generator for it, or throws if none can\n  be constructed. Optionally an overrides map can be provided which\n  should map spec names or paths (vectors of keywords) to no-arg\n  generator-creating fns. These will be used instead of the generators at those\n  names/paths. Note that parent generator (in the spec or overrides\n  map) will supersede those of any subtrees. A generator for a regex\n  op must always return a sequential collection (i.e. a generator for\n  s/? should return either an empty sequence/vector or a\n  sequence/vector with one item in it)", :arglists [[spec] [spec overrides]]}, :source "(defn\n gen\n \"Given a spec, returns the generator for it, or throws if none can\\n  be constructed. Optionally an overrides map can be provided which\\n  should map spec names or paths (vectors of keywords) to no-arg\\n  generator-creating fns. These will be used instead of the generators at those\\n  names/paths. Note that parent generator (in the spec or overrides\\n  map) will supersede those of any subtrees. A generator for a regex\\n  op must always return a sequential collection (i.e. a generator for\\n  s/? should return either an empty sequence/vector or a\\n  sequence/vector with one item in it)\"\n ([spec] (gen spec nil))\n ([spec overrides]\n  (gensub\n   spec\n   overrides\n   []\n   {:cljs.spec.alpha/recursion-limit *recursion-limit*}\n   spec)))\n"} {:sym nonconforming, :meta {:doc "takes a spec and returns a spec that has the same properties except\n  'conform' returns the original (not the conformed) value. Note, will specize regex ops.", :arglists ([spec])}, :source "(defn\n nonconforming\n \"takes a spec and returns a spec that has the same properties except\\n  'conform' returns the original (not the conformed) value. Note, will specize regex ops.\"\n [spec]\n (let\n  [spec (delay (specize spec))]\n  (reify\n   Specize\n   (specize* [s] s)\n   (specize* [s _] s)\n   Spec\n   (conform*\n    [_ x]\n    (let\n     [ret (conform* @spec x)]\n     (if (invalid? ret) :cljs.spec.alpha/invalid x)))\n   (unform* [_ x] (unform* @spec x))\n   (explain* [_ path via in x] (explain* @spec path via in x))\n   (gen* [_ overrides path rmap] (gen* @spec overrides path rmap))\n   (with-gen* [_ gfn] (nonconforming (with-gen* @spec gfn)))\n   (describe*\n    [_]\n    (clojure.core/sequence\n     (clojure.core/seq\n      (clojure.core/concat\n       (clojure.core/list 'cljs.spec.alpha/nonconforming)\n       (clojure.core/list (describe* @spec)))))))))\n"} {:sym unform*, :meta {:doc nil, :arglists ([spec y])}, :protocol Spec} {:sym abbrev, :meta {:doc nil, :arglists ([form])}, :source "(defn\n abbrev\n [form]\n (cond\n  (seq? form)\n  (walk/postwalk\n   (fn\n    [form]\n    (cond\n     (c/and (symbol? form) (namespace form))\n     (-> form name symbol)\n     (c/and (seq? form) (= 'fn (first form)) (= '[%] (second form)))\n     (last form)\n     :else\n     form))\n   form)\n  (c/and (symbol? form) (namespace form))\n  (-> form name symbol)\n  :else\n  form))\n"} {:sym regex?, :meta {:doc "returns x if x is a (cljs.spec.alpha) regex op, else logical false", :arglists ([x])}, :source "(defn\n regex?\n \"returns x if x is a (cljs.spec.alpha) regex op, else logical false\"\n [x]\n (c/and (:cljs.spec.alpha/op x) x))\n"} {:sym int-in-range?, :meta {:doc "Return true if start <= val, val < end and val is a fixed\n  precision integer.", :arglists ([start end val])}, :source "(defn\n int-in-range?\n \"Return true if start <= val, val < end and val is a fixed\\n  precision integer.\"\n [start end val]\n (cond\n  (integer? val)\n  (c/and (<= start val) (< val end))\n  (instance? goog.math.Long val)\n  (c/and (.lessThanOrEqual start val) (.lessThan val end))\n  (instance? goog.math.Integer val)\n  (c/and (.lessThanOrEqual start val) (.lessThan val end))\n  :else\n  false))\n"} {:sym spec?, :meta {:doc "returns x if x is a spec object, else logical false", :arglists ([x])}, :source "(defn\n spec?\n \"returns x if x is a spec object, else logical false\"\n [x]\n (when (implements? Spec x) x))\n"} {:sym registry, :meta {:doc "returns the registry map, prefer 'get-spec' to lookup a spec by name", :arglists ([])}, :source "(defn\n registry\n \"returns the registry map, prefer 'get-spec' to lookup a spec by name\"\n []\n @registry-ref)\n"} {:sym rep+impl, :meta {:doc "Do not call this directly, use '+'", :arglists ([form p])}, :source "(defn\n rep+impl\n \"Do not call this directly, use '+'\"\n [form p]\n (pcat*\n  {:ps [p (rep* p p [] true form)],\n   :forms\n   (clojure.core/vec\n    (clojure.core/sequence\n     (clojure.core/seq\n      (clojure.core/concat\n       (clojure.core/list form)\n       (clojure.core/list\n        (clojure.core/sequence\n         (clojure.core/seq\n          (clojure.core/concat\n           (clojure.core/list 'cljs.spec.alpha/*)\n           (clojure.core/list form))))))))),\n   :ret [],\n   :rep+ form}))\n"} {:sym exercise, :meta {:doc "generates a number (default 10) of values compatible with spec and maps conform over them,\n  returning a sequence of [val conformed-val] tuples. Optionally takes\n  a generator overrides map as per gen", :arglists [[spec] [spec n] [spec n overrides]]}, :source "(defn\n exercise\n \"generates a number (default 10) of values compatible with spec and maps conform over them,\\n  returning a sequence of [val conformed-val] tuples. Optionally takes\\n  a generator overrides map as per gen\"\n ([spec] (exercise spec 10))\n ([spec n] (exercise spec n nil))\n ([spec n overrides]\n  (map\n   (fn* [p1__45334#] (vector p1__45334# (conform spec p1__45334#)))\n   (gen/sample (gen spec overrides) n))))\n"} {:sym explain-data, :meta {:doc "Given a spec and a value x which ought to conform, returns nil if x\n  conforms, else a map with at least the key ::problems whose value is\n  a collection of problem-maps, where problem-map has at least :path :pred and :val\n  keys describing the predicate and the value that failed at that\n  path.", :arglists ([spec x])}, :source "(defn\n explain-data\n \"Given a spec and a value x which ought to conform, returns nil if x\\n  conforms, else a map with at least the key ::problems whose value is\\n  a collection of problem-maps, where problem-map has at least :path :pred and :val\\n  keys describing the predicate and the value that failed at that\\n  path.\"\n [spec x]\n (explain-data*\n  spec\n  []\n  (if-let [name (spec-name spec)] [name] [])\n  []\n  x))\n"} {:sym tuple-impl, :meta {:doc "Do not call this directly, use 'tuple'", :arglists [[forms preds] [forms preds gfn]]}, :source "(defn\n tuple-impl\n \"Do not call this directly, use 'tuple'\"\n ([forms preds] (tuple-impl forms preds nil))\n ([forms preds gfn]\n  (let\n   [specs (delay (mapv specize preds forms)) cnt (count preds)]\n   (reify\n    Specize\n    (specize* [s] s)\n    (specize* [s _] s)\n    Spec\n    (conform*\n     [_ x]\n     (let\n      [specs @specs]\n      (if-not\n       (c/and (vector? x) (= (count x) cnt))\n       :cljs.spec.alpha/invalid\n       (loop\n        [ret x i 0]\n        (if\n         (= i cnt)\n         ret\n         (let\n          [v (x i) cv (conform* (specs i) v)]\n          (if\n           (invalid? cv)\n           :cljs.spec.alpha/invalid\n           (recur\n            (if (identical? cv v) ret (assoc ret i cv))\n            (inc i)))))))))\n    (unform*\n     [_ x]\n     (assert (c/and (vector? x) (= (count x) (count preds))))\n     (loop\n      [ret x i 0]\n      (if\n       (= i (count x))\n       ret\n       (let\n        [cv (x i) v (unform (preds i) cv)]\n        (recur (if (identical? cv v) ret (assoc ret i v)) (inc i))))))\n    (explain*\n     [_ path via in x]\n     (cond\n      (not (vector? x))\n      [{:path path,\n        :pred 'clojure.core/vector?,\n        :val x,\n        :via via,\n        :in in}]\n      (not= (count x) (count preds))\n      [{:path path,\n        :pred\n        (clojure.core/sequence\n         (clojure.core/seq\n          (clojure.core/concat\n           (clojure.core/list 'clojure.core/=)\n           (clojure.core/list\n            (clojure.core/sequence\n             (clojure.core/seq\n              (clojure.core/concat\n               (clojure.core/list 'clojure.core/count)\n               (clojure.core/list '%)))))\n           (clojure.core/list (count preds))))),\n        :val x,\n        :via via,\n        :in in}]\n      :else\n      (apply\n       concat\n       (map\n        (fn\n         [i form pred]\n         (let\n          [v (x i)]\n          (when-not\n           (pvalid? pred v)\n           (explain-1 form pred (conj path i) via (conj in i) v))))\n        (range (count preds))\n        forms\n        preds))))\n    (gen*\n     [_ overrides path rmap]\n     (if\n      gfn\n      (gfn)\n      (let\n       [gen\n        (fn [i p f] (gensub p overrides (conj path i) rmap f))\n        gs\n        (map gen (range (count preds)) preds forms)]\n       (when (every? identity gs) (apply gen/tuple gs)))))\n    (with-gen* [_ gfn] (tuple-impl forms preds gfn))\n    (describe*\n     [_]\n     (clojure.core/sequence\n      (clojure.core/seq\n       (clojure.core/concat\n        (clojure.core/list 'cljs.spec.alpha/tuple)\n        forms))))))))\n"} {:sym multi-spec-impl, :meta {:doc "Do not call this directly, use 'multi-spec'", :arglists [[form mmvar retag] [form mmvar retag gfn]]}, :source "(defn\n multi-spec-impl\n \"Do not call this directly, use 'multi-spec'\"\n ([form mmvar retag] (multi-spec-impl form mmvar retag nil))\n ([form mmvar retag gfn]\n  (let\n   [id\n    (random-uuid)\n    predx\n    (fn*\n     [p1__45304#]\n     (let\n      [mm @mmvar]\n      (c/and\n       (-get-method mm ((-dispatch-fn mm) p1__45304#))\n       (mm p1__45304#))))\n    dval\n    (fn* [p1__45305#] ((-dispatch-fn @mmvar) p1__45305#))\n    tag\n    (if\n     (keyword? retag)\n     (fn* [p1__45306# p2__45307#] (assoc p1__45306# retag p2__45307#))\n     retag)]\n   (reify\n    Specize\n    (specize* [s] s)\n    (specize* [s _] s)\n    Spec\n    (conform*\n     [_ x]\n     (if-let\n      [pred (predx x)]\n      (dt pred x form)\n      :cljs.spec.alpha/invalid))\n    (unform*\n     [_ x]\n     (if-let\n      [pred (predx x)]\n      (unform pred x)\n      (throw\n       (js/Error.\n        (str\n         \"No method of: \"\n         form\n         \" for dispatch value: \"\n         (dval x))))))\n    (explain*\n     [_ path via in x]\n     (let\n      [dv (dval x) path (conj path dv)]\n      (if-let\n       [pred (predx x)]\n       (explain-1 form pred path via in x)\n       [{:path path,\n         :pred form,\n         :val x,\n         :reason \"no method\",\n         :via via,\n         :in in}])))\n    (gen*\n     [_ overrides path rmap]\n     (if\n      gfn\n      (gfn)\n      (let\n       [gen\n        (fn\n         [[k f]]\n         (let\n          [p (f nil)]\n          (let\n           [rmap (inck rmap id)]\n           (when-not\n            (recur-limit? rmap id path k)\n            (gen/delay\n             (gen/fmap\n              (fn* [p1__45308#] (tag p1__45308# k))\n              (gensub\n               p\n               overrides\n               (conj path k)\n               rmap\n               (list 'method form k))))))))\n        gs\n        (->>\n         (methods @mmvar)\n         (remove (fn [[k]] (invalid? k)))\n         (map gen)\n         (remove nil?))]\n       (when (every? identity gs) (gen/one-of gs)))))\n    (with-gen* [_ gfn] (multi-spec-impl form mmvar retag gfn))\n    (describe*\n     [_]\n     (clojure.core/sequence\n      (clojure.core/seq\n       (clojure.core/concat\n        (clojure.core/list 'cljs.spec.alpha/multi-spec)\n        (clojure.core/list form)\n        (clojure.core/list retag)))))))))\n"} {:sym conform, :meta {:doc "Given a spec and a value, returns :cljs.spec.alpha/invalid if value does\n  not match spec, else the (possibly destructured) value.", :arglists ([spec x])}, :source "(defn\n conform\n \"Given a spec and a value, returns :cljs.spec.alpha/invalid if value does\\n  not match spec, else the (possibly destructured) value.\"\n [spec x]\n (conform* (specize spec) x))\n"} {:sym gen*, :meta {:doc nil, :arglists ([spec overrides path rmap])}, :protocol Spec} {:sym fspec-impl, :meta {:doc "Do not call this directly, use 'fspec'", :arglists ([argspec aform retspec rform fnspec fform gfn])}, :source "(defn\n fspec-impl\n \"Do not call this directly, use 'fspec'\"\n [argspec aform retspec rform fnspec fform gfn]\n (let\n  [specs {:args argspec, :ret retspec, :fn fnspec}]\n  (reify\n   ILookup\n   (-lookup [this k] (get specs k))\n   (-lookup [_ k not-found] (get specs k not-found))\n   Specize\n   (specize* [s] s)\n   (specize* [s _] s)\n   Spec\n   (conform*\n    [_ f]\n    (if\n     (ifn? f)\n     (if\n      (identical? f (validate-fn f specs *fspec-iterations*))\n      f\n      :cljs.spec.alpha/invalid)\n     :cljs.spec.alpha/invalid))\n   (unform* [_ f] f)\n   (explain*\n    [_ path via in f]\n    (if\n     (ifn? f)\n     (let\n      [args (validate-fn f specs 100)]\n      (if\n       (identical? f args)\n       nil\n       (let\n        [ret (try (apply f args) (catch js/Error t t))]\n        (if\n         (instance? js/Error ret)\n         [{:path path,\n           :pred '(apply fn),\n           :val args,\n           :reason (.-message ret),\n           :via via,\n           :in in}]\n         (let\n          [cret (dt retspec ret rform)]\n          (if\n           (invalid? cret)\n           (explain-1 rform retspec (conj path :ret) via in ret)\n           (when\n            fnspec\n            (let\n             [cargs (conform argspec args)]\n             (explain-1\n              fform\n              fnspec\n              (conj path :fn)\n              via\n              in\n              {:args cargs, :ret cret})))))))))\n     [{:path path, :pred 'ifn?, :val f, :via via, :in in}]))\n   (gen*\n    [_ overrides _ _]\n    (if\n     gfn\n     (gfn)\n     (gen/return\n      (fn\n       [& args]\n       (assert\n        (pvalid? argspec args)\n        (with-out-str (explain argspec args)))\n       (gen/generate (gen retspec overrides))))))\n   (with-gen*\n    [_ gfn]\n    (fspec-impl argspec aform retspec rform fnspec fform gfn))\n   (describe*\n    [_]\n    (clojure.core/sequence\n     (clojure.core/seq\n      (clojure.core/concat\n       (clojure.core/list 'cljs.spec.alpha/fspec)\n       (clojure.core/list :args)\n       (clojure.core/list aform)\n       (clojure.core/list :ret)\n       (clojure.core/list rform)\n       (clojure.core/list :fn)\n       (clojure.core/list fform))))))))\n"} {:sym *coll-check-limit*, :meta {}, :source "(def\n *coll-check-limit*\n \"The number of items validated in a collection spec'ed with 'every'\"\n 101)\n"} {:sym get-spec, :meta {:doc "Returns spec registered for keyword/symbol/var k, or nil.", :arglists ([k])}, :source "(defn\n get-spec\n \"Returns spec registered for keyword/symbol/var k, or nil.\"\n [k]\n (get (registry) (if (keyword? k) k (->sym k))))\n"} {:sym every-impl, :meta {:doc "Do not call this directly, use 'every', 'every-kv', 'coll-of' or 'map-of'", :arglists [[form pred opts] [form pred {conform-into :into, describe-form :cljs.spec.alpha/describe, :keys [kind :cljs.spec.alpha/kind-form count max-count min-count distinct gen-max :cljs.spec.alpha/kfn :cljs.spec.alpha/cpred conform-keys :cljs.spec.alpha/conform-all], :or {gen-max 20}, :as opts} gfn]]}, :source "(defn\n every-impl\n \"Do not call this directly, use 'every', 'every-kv', 'coll-of' or 'map-of'\"\n ([form pred opts] (every-impl form pred opts nil))\n ([form\n   pred\n   {conform-into :into,\n    describe-form :cljs.spec.alpha/describe,\n    :keys\n    [kind\n     :cljs.spec.alpha/kind-form\n     count\n     max-count\n     min-count\n     distinct\n     gen-max\n     :cljs.spec.alpha/kfn\n     :cljs.spec.alpha/cpred\n     conform-keys\n     :cljs.spec.alpha/conform-all],\n    :or {gen-max 20},\n    :as opts}\n   gfn]\n  (let\n   [gen-into\n    (if conform-into (empty conform-into) (get empty-coll kind-form))\n    spec\n    (delay (specize pred))\n    check?\n    (fn* [p1__45319#] (valid? @spec p1__45319#))\n    kfn\n    (c/or kfn (fn [i v] i))\n    addcv\n    (fn [ret i v cv] (conj ret cv))\n    cfns\n    (fn\n     [x]\n     (cond\n      (c/and\n       (vector? x)\n       (c/or (not conform-into) (vector? conform-into)))\n      [identity\n       (fn [ret i v cv] (if (identical? v cv) ret (assoc ret i cv)))\n       identity]\n      (c/and\n       (map? x)\n       (c/or (c/and kind (not conform-into)) (map? conform-into)))\n      [(if conform-keys empty identity)\n       (fn\n        [ret i v cv]\n        (if\n         (c/and (identical? v cv) (not conform-keys))\n         ret\n         (assoc ret (nth (if conform-keys cv v) 0) (nth cv 1))))\n       identity]\n      (c/or\n       (list? conform-into)\n       (seq? conform-into)\n       (c/and (not conform-into) (c/or (list? x) (seq? x))))\n      [empty addcv reverse]\n      :else\n      [(fn* [p1__45320#] (empty (c/or conform-into p1__45320#)))\n       addcv\n       identity]))]\n   (reify\n    Specize\n    (specize* [s] s)\n    (specize* [s _] s)\n    Spec\n    (conform*\n     [_ x]\n     (let\n      [spec @spec]\n      (cond\n       (not (cpred x))\n       :cljs.spec.alpha/invalid\n       conform-all\n       (let\n        [[init add complete] (cfns x)]\n        (loop\n         [ret (init x) i 0 [v & vs :as vseq] (seq x)]\n         (if\n          vseq\n          (let\n           [cv (conform* spec v)]\n           (if\n            (invalid? cv)\n            :cljs.spec.alpha/invalid\n            (recur (add ret i v cv) (inc i) vs)))\n          (complete ret))))\n       :else\n       (if\n        (indexed? x)\n        (let\n         [step (max 1 (long (/ (c/count x) *coll-check-limit*)))]\n         (loop\n          [i 0]\n          (if\n           (>= i (c/count x))\n           x\n           (if\n            (valid? spec (nth x i))\n            (recur (c/+ i step))\n            :cljs.spec.alpha/invalid))))\n        (let\n         [limit *coll-check-limit*]\n         (loop\n          [i 0 [v & vs :as vseq] (seq x)]\n          (cond\n           (c/or (nil? vseq) (= i limit))\n           x\n           (valid? spec v)\n           (recur (inc i) vs)\n           :else\n           :cljs.spec.alpha/invalid)))))))\n    (unform*\n     [_ x]\n     (if\n      conform-all\n      (let\n       [spec @spec [init add complete] (cfns x)]\n       (loop\n        [ret (init x) i 0 [v & vs :as vseq] (seq x)]\n        (if\n         (>= i (c/count x))\n         (complete ret)\n         (recur (add ret i v (unform* spec v)) (inc i) vs))))\n      x))\n    (explain*\n     [_ path via in x]\n     (c/or\n      (coll-prob\n       x\n       kind\n       kind-form\n       distinct\n       count\n       min-count\n       max-count\n       path\n       via\n       in)\n      (apply\n       concat\n       ((if conform-all identity (partial take *coll-error-limit*))\n        (keep\n         identity\n         (map\n          (fn\n           [i v]\n           (let\n            [k (kfn i v)]\n            (when-not\n             (check? v)\n             (let\n              [prob (explain-1 form pred path via (conj in k) v)]\n              prob))))\n          (range)\n          x))))))\n    (gen*\n     [_ overrides path rmap]\n     (if\n      gfn\n      (gfn)\n      (let\n       [pgen (gensub pred overrides path rmap form)]\n       (gen/bind\n        (cond\n         gen-into\n         (gen/return gen-into)\n         kind\n         (gen/fmap\n          (fn*\n           [p1__45321#]\n           (if (empty? p1__45321#) p1__45321# (empty p1__45321#)))\n          (gensub kind overrides path rmap form))\n         :else\n         (gen/return []))\n        (fn\n         [init]\n         (gen/fmap\n          (fn*\n           [p1__45322#]\n           (if (vector? init) p1__45322# (into init p1__45322#)))\n          (cond\n           distinct\n           (if\n            count\n            (gen/vector-distinct\n             pgen\n             {:num-elements count, :max-tries 100})\n            (gen/vector-distinct\n             pgen\n             {:min-elements (c/or min-count 0),\n              :max-elements\n              (c/or\n               max-count\n               (max gen-max (c/* 2 (c/or min-count 0)))),\n              :max-tries 100}))\n           count\n           (gen/vector pgen count)\n           (c/or min-count max-count)\n           (gen/vector\n            pgen\n            (c/or min-count 0)\n            (c/or max-count (max gen-max (c/* 2 (c/or min-count 0)))))\n           :else\n           (gen/vector pgen 0 gen-max))))))))\n    (with-gen* [_ gfn] (every-impl form pred opts gfn))\n    (describe*\n     [_]\n     (c/or\n      describe-form\n      (clojure.core/sequence\n       (clojure.core/seq\n        (clojure.core/concat\n         (clojure.core/list 'cljs.spec.alpha/every)\n         (clojure.core/list (s/mres form))\n         (mapcat identity opts))))))))))\n"} {:sym spec-impl, :meta {:doc "Do not call this directly, use 'spec'", :arglists [[form pred gfn cpred?] [form pred gfn cpred? unc]]}, :source "(defn\n spec-impl\n \"Do not call this directly, use 'spec'\"\n ([form pred gfn cpred?] (spec-impl form pred gfn cpred? nil))\n ([form pred gfn cpred? unc]\n  (cond\n   (spec? pred)\n   (cond-> pred gfn (with-gen gfn))\n   (regex? pred)\n   (regex-spec-impl pred gfn)\n   (ident? pred)\n   (cond-> (the-spec pred) gfn (with-gen gfn))\n   :else\n   (reify\n    Specize\n    (specize* [s] s)\n    (specize* [s _] s)\n    Spec\n    (conform*\n     [_ x]\n     (let\n      [ret (pred x)]\n      (if cpred? ret (if ret x :cljs.spec.alpha/invalid))))\n    (unform*\n     [_ x]\n     (if\n      cpred?\n      (if unc (unc x) (throw (js/Error. \"no unform fn for conformer\")))\n      x))\n    (explain*\n     [_ path via in x]\n     (when\n      (invalid? (dt pred x form cpred?))\n      [{:path path, :pred form, :val x, :via via, :in in}]))\n    (gen* [_ _ _ _] (if gfn (gfn) (gen/gen-for-pred pred)))\n    (with-gen* [_ gfn] (spec-impl form pred gfn cpred? unc))\n    (describe* [_] form)))))\n"} {:sym invalid?, :meta {:doc "tests the validity of a conform return value", :arglists ([ret])}, :source "(defn\n invalid?\n \"tests the validity of a conform return value\"\n [ret]\n (keyword-identical? :cljs.spec.alpha/invalid ret))\n"} {:sym amp-impl, :meta {:doc "Do not call this directly, use '&'", :arglists ([re re-form preds pred-forms])}, :source "(defn\n amp-impl\n \"Do not call this directly, use '&'\"\n [re re-form preds pred-forms]\n {:cljs.spec.alpha/op :cljs.spec.alpha/amp,\n  :p1 re,\n  :amp re-form,\n  :ps preds,\n  :forms pred-forms})\n"} {:sym cat-impl, :meta {:doc "Do not call this directly, use 'cat'", :arglists ([ks ps forms])}, :source "(defn\n cat-impl\n \"Do not call this directly, use 'cat'\"\n [ks ps forms]\n (pcat* {:ks ks, :ps ps, :forms forms, :ret {}}))\n"} {:sym explain-str, :meta {:doc "Given a spec and a value that fails to conform, returns an explanation as a string.", :arglists ([spec x])}, :source "(defn\n explain-str\n \"Given a spec and a value that fails to conform, returns an explanation as a string.\"\n [spec x]\n (with-out-str (explain spec x)))\n"} {:sym *compile-asserts*, :meta {:doc "If true, compiler will enable spec asserts, which are then\nsubject to runtime control via check-asserts? If false, compiler\nwill eliminate all spec assert overhead. See 'assert'.\nInitially set to the negation of the ':elide-asserts' compiler option.\nDefaults to true."}, :source "(defonce *compile-asserts* (s/init-compile-asserts))\n"} {:sym with-gen, :meta {:doc "Takes a spec and a no-arg, generator-returning fn and returns a version of that spec that uses that generator", :arglists ([spec gen-fn])}, :source "(defn\n with-gen\n \"Takes a spec and a no-arg, generator-returning fn and returns a version of that spec that uses that generator\"\n [spec gen-fn]\n (let\n  [spec (reg-resolve spec)]\n  (if\n   (regex? spec)\n   (assoc spec :cljs.spec.alpha/gfn gen-fn)\n   (with-gen* (specize spec) gen-fn))))\n"} {:sym conform*, :meta {:doc nil, :arglists ([spec x])}, :protocol Spec} {:sym check-asserts?, :meta {:doc "Returns the value set by check-asserts.", :arglists ([])}, :source "(defn\n check-asserts?\n \"Returns the value set by check-asserts.\"\n []\n *runtime-asserts*)\n"} {:sym rep-impl, :meta {:doc "Do not call this directly, use '*'", :arglists ([form p])}, :source "(defn\n rep-impl\n \"Do not call this directly, use '*'\"\n [form p]\n (rep* p p [] false form))\n"} {:sym describe, :meta {:doc "returns an abbreviated description of the spec as data", :arglists ([spec])}, :source "(defn\n describe\n \"returns an abbreviated description of the spec as data\"\n [spec]\n (abbrev (form spec)))\n"} {:sym explain-out, :meta {:doc "Prints explanation data (per 'explain-data') to *out* using the printer in *explain-out*,\n    by default explain-printer.", :arglists ([ed])}, :source "(defn\n explain-out\n \"Prints explanation data (per 'explain-data') to *out* using the printer in *explain-out*,\\n    by default explain-printer.\"\n [ed]\n (*explain-out* ed))\n"} {:sym specize*, :meta {:doc nil, :arglists ([_] [_ form])}, :protocol Specize} {:sym maybe-impl, :meta {:doc "Do not call this directly, use '?'", :arglists ([p form])}, :source "(defn\n maybe-impl\n \"Do not call this directly, use '?'\"\n [p form]\n (assoc\n  (alt*\n   [p (accept :cljs.spec.alpha/nil)]\n   nil\n   [form :cljs.spec.alpha/nil])\n  :maybe\n  form))\n"} {:sym explain*, :meta {:doc nil, :arglists ([spec path via in x])}, :protocol Spec}), cljs.reader ({:sym *default-data-reader-fn*, :meta {}, :source "(def *default-data-reader-fn* (atom nil))\n"} {:sym read, :meta {:doc "Reads the first object from an cljs.tools.reader.reader-types/IPushbackReader.\n   Returns the object read. If EOF, throws if eof-error? is true otherwise returns eof.\n   If no reader is provided, *in* will be used.\n\n   Reads data in the edn format (subset of Clojure data):\n   http://edn-format.org\n\n   cljs.tools.reader.edn/read doesn't depend on dynamic Vars, all configuration\n   is done by passing an opt map.\n\n   opts is a map that can include the following keys:\n   :eof - value to return on end-of-file. When not supplied, eof throws an exception.\n   :readers  - a map of tag symbols to data-reader functions to be considered before default-data-readers.\n              When not supplied, only the default-data-readers will be used.\n   :default - A function of two args, that will, if present and no reader is found for a tag,\n              be called with the tag and the value.", :arglists [[reader] [{:keys [eof], :as opts} reader] [reader eof-error? eof opts]]}, :source "(defn\n read\n \"Reads the first object from an cljs.tools.reader.reader-types/IPushbackReader.\\n   Returns the object read. If EOF, throws if eof-error? is true otherwise returns eof.\\n   If no reader is provided, *in* will be used.\\n\\n   Reads data in the edn format (subset of Clojure data):\\n   http://edn-format.org\\n\\n   cljs.tools.reader.edn/read doesn't depend on dynamic Vars, all configuration\\n   is done by passing an opt map.\\n\\n   opts is a map that can include the following keys:\\n   :eof - value to return on end-of-file. When not supplied, eof throws an exception.\\n   :readers  - a map of tag symbols to data-reader functions to be considered before default-data-readers.\\n              When not supplied, only the default-data-readers will be used.\\n   :default - A function of two args, that will, if present and no reader is found for a tag,\\n              be called with the tag and the value.\"\n ([reader]\n  (edn/read\n   {:readers @*tag-table*,\n    :default @*default-data-reader-fn*,\n    :eof nil}\n   reader))\n ([{:keys [eof], :as opts} reader]\n  (edn/read\n   (update\n    (merge opts {:default @*default-data-reader-fn*})\n    :readers\n    (fn [m] (merge @*tag-table* m)))\n   reader))\n ([reader eof-error? eof opts]\n  (edn/read\n   reader\n   eof-error?\n   eof\n   (update\n    (merge opts {:default @*default-data-reader-fn*})\n    :readers\n    (fn [m] (merge @*tag-table* m))))))\n"} {:sym *tag-table*, :meta {}, :source "(def\n *tag-table*\n (atom\n  (add-data-readers\n   {'inst read-date, 'uuid read-uuid, 'queue read-queue, 'js read-js})))\n"} {:sym parse-and-validate-timestamp, :meta {:doc nil, :arglists ([s])}, :source "(defn\n parse-and-validate-timestamp\n [s]\n (let\n  [[_\n    years\n    months\n    days\n    hours\n    minutes\n    seconds\n    fraction\n    offset-sign\n    offset-hours\n    offset-minutes\n    :as\n    v]\n   (re-matches timestamp-regex s)]\n  (if-not\n   v\n   (throw (js/Error. (str \"Unrecognized date/time syntax: \" s)))\n   (let\n    [years\n     (parse-int years)\n     months\n     (or (parse-int months) 1)\n     days\n     (or (parse-int days) 1)\n     hours\n     (or (parse-int hours) 0)\n     minutes\n     (or (parse-int minutes) 0)\n     seconds\n     (or (parse-int seconds) 0)\n     fraction\n     (or (parse-int (zero-fill-right-and-truncate fraction 3)) 0)\n     offset-sign\n     (if (= offset-sign \"-\") -1 1)\n     offset-hours\n     (or (parse-int offset-hours) 0)\n     offset-minutes\n     (or (parse-int offset-minutes) 0)\n     offset\n     (* offset-sign (+ (* offset-hours 60) offset-minutes))]\n    [years\n     (check 1 months 12 \"timestamp month field must be in range 1..12\")\n     (check\n      1\n      days\n      (days-in-month months (leap-year? years))\n      \"timestamp day field must be in range 1..last day in month\")\n     (check 0 hours 23 \"timestamp hour field must be in range 0..23\")\n     (check\n      0\n      minutes\n      59\n      \"timestamp minute field must be in range 0..59\")\n     (check\n      0\n      seconds\n      (if (= minutes 59) 60 59)\n      \"timestamp second field must be in range 0..60\")\n     (check\n      0\n      fraction\n      999\n      \"timestamp millisecond field must be in range 0..999\")\n     offset]))))\n"} {:sym register-tag-parser!, :meta {:doc nil, :arglists ([tag f])}, :source "(defn\n register-tag-parser!\n [tag f]\n (let\n  [old-parser (get @*tag-table* tag)]\n  (swap! *tag-table* assoc tag f)\n  old-parser))\n"} {:sym register-default-tag-parser!, :meta {:doc nil, :arglists ([f])}, :source "(defn\n register-default-tag-parser!\n [f]\n (let\n  [old-parser @*default-data-reader-fn*]\n  (swap! *default-data-reader-fn* (fn [_] f))\n  old-parser))\n"} {:sym deregister-default-tag-parser!, :meta {:doc nil, :arglists ([])}, :source "(defn\n deregister-default-tag-parser!\n []\n (let\n  [old-parser @*default-data-reader-fn*]\n  (swap! *default-data-reader-fn* (fn [_] nil))\n  old-parser))\n"} {:sym read-string, :meta {:doc "Reads one object from the string s.\n   Returns nil when s is nil or empty.\n\n   Reads data in the edn format (subset of Clojure data):\n   http://edn-format.org\n\n   opts is a map as per cljs.tools.reader.edn/read", :arglists [[s] [opts s]]}, :source "(defn\n read-string\n \"Reads one object from the string s.\\n   Returns nil when s is nil or empty.\\n\\n   Reads data in the edn format (subset of Clojure data):\\n   http://edn-format.org\\n\\n   opts is a map as per cljs.tools.reader.edn/read\"\n ([s]\n  (edn/read-string\n   {:readers @*tag-table*,\n    :default @*default-data-reader-fn*,\n    :eof nil}\n   s))\n ([opts s]\n  (edn/read-string\n   (update\n    (merge {:default @*default-data-reader-fn*} opts)\n    :readers\n    (fn [m] (merge @*tag-table* m)))\n   s)))\n"} {:sym deregister-tag-parser!, :meta {:doc nil, :arglists ([tag])}, :source "(defn\n deregister-tag-parser!\n [tag]\n (let\n  [old-parser (get @*tag-table* tag)]\n  (swap! *tag-table* dissoc tag)\n  old-parser))\n"} {:sym parse-timestamp, :meta {:doc nil, :arglists ([ts])}, :source "(defn\n parse-timestamp\n [ts]\n (if-let\n  [[years months days hours minutes seconds ms offset]\n   (parse-and-validate-timestamp ts)]\n  (js/Date.\n   (-\n    (.UTC js/Date years (dec months) days hours minutes seconds ms)\n    (* offset 60 1000)))\n  (throw (js/Error. (str \"Unrecognized date/time syntax: \" ts)))))\n"}), clojure.walk ({:sym walk, :meta {:doc "Traverses form, an arbitrary data structure.  inner and outer are\n  functions.  Applies inner to each element of form, building up a\n  data structure of the same type, then applies outer to the result.\n  Recognizes all Clojure data structures. Consumes seqs as with doall.", :arglists ([inner outer form])}, :source "(defn\n walk\n \"Traverses form, an arbitrary data structure.  inner and outer are\\n  functions.  Applies inner to each element of form, building up a\\n  data structure of the same type, then applies outer to the result.\\n  Recognizes all Clojure data structures. Consumes seqs as with doall.\"\n {:added \"1.1\"}\n [inner outer form]\n (cond\n  (list? form)\n  (outer (apply list (map inner form)))\n  (map-entry? form)\n  (outer (MapEntry. (inner (key form)) (inner (val form)) nil))\n  (seq? form)\n  (outer (doall (map inner form)))\n  (record? form)\n  (outer (reduce (fn [r x] (conj r (inner x))) form form))\n  (coll? form)\n  (outer (into (empty form) (map inner form)))\n  :else\n  (outer form)))\n"} {:sym postwalk, :meta {:doc "Performs a depth-first, post-order traversal of form.  Calls f on\n  each sub-form, uses f's return value in place of the original.\n  Recognizes all Clojure data structures. Consumes seqs as with doall.", :arglists ([f form])}, :source "(defn\n postwalk\n \"Performs a depth-first, post-order traversal of form.  Calls f on\\n  each sub-form, uses f's return value in place of the original.\\n  Recognizes all Clojure data structures. Consumes seqs as with doall.\"\n {:added \"1.1\"}\n [f form]\n (walk (partial postwalk f) f form))\n"} {:sym prewalk, :meta {:doc "Like postwalk, but does pre-order traversal.", :arglists ([f form])}, :source "(defn\n prewalk\n \"Like postwalk, but does pre-order traversal.\"\n {:added \"1.1\"}\n [f form]\n (walk (partial prewalk f) identity (f form)))\n"} {:sym keywordize-keys, :meta {:doc "Recursively transforms all map keys from strings to keywords.", :arglists ([m])}, :source "(defn\n keywordize-keys\n \"Recursively transforms all map keys from strings to keywords.\"\n {:added \"1.1\"}\n [m]\n (let\n  [f (fn [[k v]] (if (string? k) [(keyword k) v] [k v]))]\n  (postwalk (fn [x] (if (map? x) (into {} (map f x)) x)) m)))\n"} {:sym stringify-keys, :meta {:doc "Recursively transforms all map keys from keywords to strings.", :arglists ([m])}, :source "(defn\n stringify-keys\n \"Recursively transforms all map keys from keywords to strings.\"\n {:added \"1.1\"}\n [m]\n (let\n  [f (fn [[k v]] (if (keyword? k) [(name k) v] [k v]))]\n  (postwalk (fn [x] (if (map? x) (into {} (map f x)) x)) m)))\n"} {:sym prewalk-replace, :meta {:doc "Recursively transforms form by replacing keys in smap with their\n  values.  Like clojure/replace but works on any data structure.  Does\n  replacement at the root of the tree first.", :arglists ([smap form])}, :source "(defn\n prewalk-replace\n \"Recursively transforms form by replacing keys in smap with their\\n  values.  Like clojure/replace but works on any data structure.  Does\\n  replacement at the root of the tree first.\"\n {:added \"1.1\"}\n [smap form]\n (prewalk (fn [x] (if (contains? smap x) (smap x) x)) form))\n"} {:sym postwalk-replace, :meta {:doc "Recursively transforms form by replacing keys in smap with their\n  values.  Like clojure/replace but works on any data structure.  Does\n  replacement at the leaves of the tree first.", :arglists ([smap form])}, :source "(defn\n postwalk-replace\n \"Recursively transforms form by replacing keys in smap with their\\n  values.  Like clojure/replace but works on any data structure.  Does\\n  replacement at the leaves of the tree first.\"\n {:added \"1.1\"}\n [smap form]\n (postwalk (fn [x] (if (contains? smap x) (smap x) x)) form))\n"}), tag-soup.core ({:sym special-indent, :meta {}, :source "(def\n special-indent\n #{'and\n   '>=\n   '>\n   '/\n   '->>\n   '<=\n   '=\n   'cond->>\n   '+\n   '==\n   '*\n   'some->>\n   'some->\n   'not=\n   'cond->\n   '<\n   '-\n   '->\n   'as->\n   'or})\n"} {:sym code->tags, :meta {:doc "Returns the tags for the given string containing code.", :arglists ([text])}, :source "(defn\n code->tags\n \"Returns the tags for the given string containing code.\"\n [text]\n (let\n  [reader (indexing-push-back-reader text)]\n  (loop\n   [m (transient {})]\n   (if-let\n    [token (read-safe reader)]\n    (recur (tag-map token m 0))\n    (persistent! m)))))\n"} {:sym indent-for-line, :meta {:doc "Returns the number of spaces the given line should be indented.", :arglists ([tags line])}, :source "(defn\n indent-for-line\n \"Returns the number of spaces the given line should be indented.\"\n [tags line]\n (or\n  (->>\n   (get-tags-before-line tags line)\n   reverse\n   (some :next-line-indent))\n  0))\n"} {:sym adjust-indent, :meta {:doc "Returns how much the indent should be adjusted for the given token.", :arglists ([token])}, :source "(defn\n adjust-indent\n \"Returns how much the indent should be adjusted for the given token.\"\n [token]\n (if\n  (list? token)\n  (let\n   [first-val (-> token first unwrap-value)]\n   (cond\n    (or (vector? first-val) (list? first-val))\n    0\n    (#{:use :require :import} first-val)\n    (inc (count (str first-val)))\n    (#{:cljr :clj :cljs} first-val)\n    0\n    (contains? special-indent first-val)\n    (inc (count (str first-val)))\n    :else\n    1))\n  0))\n"} {:sym read-safe, :meta {:doc "Returns either a form or an exception object, or nil if EOF is reached.", :arglists ([reader])}, :source "(defn\n read-safe\n \"Returns either a form or an exception object, or nil if EOF is reached.\"\n [reader]\n (try\n  (binding\n   [*wrap-value-and-add-metadata?* true r/*suppress-read* true]\n   (r/read {:read-cond :preserve, :eof nil} reader))\n  (catch ExceptionInfo e e)))\n"} {:sym unwrap-value, :meta {:doc nil, :arglists ([value])}, :source "(defn\n unwrap-value\n [value]\n (if (-> value meta :wrapped?) (first value) value))\n"} {:sym get-tags-before-line, :meta {:doc "Returns the tags before the given line.", :arglists ([tags line])}, :source "(defn\n get-tags-before-line\n \"Returns the tags before the given line.\"\n [tags line]\n (->>\n  tags\n  (filter (fn* [p1__45000#] (< (first p1__45000#) line)))\n  (sort-by first)\n  (map second)\n  (map (fn* [p1__45001#] (sort-by :column p1__45001#)))\n  (apply concat)))\n"} {:sym forward-indent-for-line, :meta {:doc "Returns the number of spaces the given line should be indented forward.", :arglists ([tags line current-indent])}, :source "(defn\n forward-indent-for-line\n \"Returns the number of spaces the given line should be indented forward.\"\n [tags line current-indent]\n (let\n  [tags-before (get-tags-before-line tags line)]\n  (loop\n   [tags (reverse tags-before) max-tab-stop -1 tab-stop -1]\n   (if-let\n    [tag (first tags)]\n    (if-let\n     [indent (:indent tag)]\n     (cond\n      (<= indent current-indent)\n      (recur [] max-tab-stop tab-stop)\n      (or (neg? max-tab-stop) (< current-indent indent max-tab-stop))\n      (recur\n       (rest tags)\n       (inc indent)\n       (if (:skip-indent? tag) tab-stop indent))\n      :else\n      (recur (rest tags) max-tab-stop tab-stop))\n     (recur (rest tags) max-tab-stop tab-stop))\n    (if (<= tab-stop current-indent) (+ current-indent 2) tab-stop)))))\n"} {:sym tag-map, :meta {:doc "Returns a transient map containing the tags, organized by line number.", :arglists ([token results-map parent-indent])}, :source "(defn\n tag-map\n \"Returns a transient map containing the tags, organized by line number.\"\n [token results-map parent-indent]\n (cond\n  (instance? ExceptionInfo token)\n  (let\n   [{:keys [line col]} (ex-data token)]\n   (assoc!\n    results-map\n    line\n    (conj\n     (get results-map line [])\n     {:error? true,\n      :message #?(:clj (.getMessage token) :cljs (.-message token)),\n      :column col})))\n  (and (coll? token) (nil? (meta token)))\n  (reduce\n   (fn [results-map token] (tag-map token results-map parent-indent))\n   results-map\n   token)\n  :else\n  (let\n   [{:keys [line column end-line end-column]} (meta token)]\n   (if-not\n    (and line column end-line end-column)\n    results-map\n    (let\n     [value\n      (unwrap-value token)\n      indent\n      (max parent-indent (dec column))\n      top-level?\n      (= parent-indent 0)]\n     (if\n      (coll? value)\n      (let\n       [delimiter-size\n        (if (set? value) 2 1)\n        new-end-column\n        (+ column delimiter-size)\n        adjustment\n        (adjust-indent value)\n        next-line-indent\n        (+ (dec column) delimiter-size adjustment)]\n       (as->\n        results-map\n        $\n        (assoc!\n         $\n         line\n         (->\n          (get $ line [])\n          (conj\n           {:begin? true,\n            :column column,\n            :value value,\n            :indent indent,\n            :top-level? top-level?,\n            :skip-indent? true})\n          (conj {:delimiter? true, :column column})\n          (conj\n           {:end? true,\n            :column new-end-column,\n            :next-line-indent next-line-indent,\n            :indent next-line-indent})))\n        (reduce\n         (fn\n          [results-map token]\n          (tag-map token results-map next-line-indent))\n         $\n         value)\n        (assoc!\n         $\n         end-line\n         (->\n          (get $ end-line [])\n          (conj {:delimiter? true, :column (dec end-column)})\n          (conj\n           {:end? true,\n            :column end-column,\n            :next-line-indent parent-indent})\n          (conj {:end? true, :column end-column})))))\n      (as->\n       results-map\n       $\n       (assoc!\n        $\n        line\n        (conj\n         (get $ line [])\n         {:begin? true,\n          :column column,\n          :value value,\n          :indent indent,\n          :top-level? top-level?}))\n       (assoc!\n        $\n        end-line\n        (conj\n         (get $ end-line [])\n         {:end? true, :column end-column})))))))))\n"} {:sym back-indent-for-line, :meta {:doc "Returns the number of spaces the given line should be indented back.", :arglists ([tags line current-indent])}, :source "(defn\n back-indent-for-line\n \"Returns the number of spaces the given line should be indented back.\"\n [tags line current-indent]\n (let\n  [tags-before (get-tags-before-line tags line)]\n  (loop\n   [tags (reverse tags-before) max-tab-stop current-indent]\n   (if-let\n    [tag (first tags)]\n    (if-let\n     [indent (:indent tag)]\n     (if\n      (< indent max-tab-stop)\n      (if (:skip-indent? tag) (recur (rest tags) (inc indent)) indent)\n      (recur (rest tags) max-tab-stop))\n     (recur (rest tags) max-tab-stop))\n    (- current-indent 2)))))\n"}), expound.paths ({:sym paths-to-value, :meta {:doc nil, :arglists ([form val path paths])}, :source "(defn\n paths-to-value\n [form val path paths]\n (cond\n  (= form val)\n  (conj paths path)\n  (or (sequential? form) (set? form))\n  (reduce\n   (fn [ps [x i]] (paths-to-value x val (conj path i) ps))\n   paths\n   (map vector form (range)))\n  (map? form)\n  (reduce\n   (fn\n    [ps [k v]]\n    (->>\n     ps\n     (paths-to-value k val (conj path (->KeyPathSegment k)))\n     (paths-to-value v val (conj path k))))\n   paths\n   form)\n  :else\n  paths))\n"} {:sym equalish?, :meta {:doc nil, :arglists ([x y])}, :source "(defn equalish? [x y] (or (= x y) (fn-equal x y) (both-nan? x y)))\n"} {:sym in-with-kps, :meta {:doc nil, :arglists ([form val in in'])}, :source "(defn\n in-with-kps\n [form val in in']\n (let\n  [res (in-with-kps* form val in in')]\n  (if (= :expound.paths/not-found res) nil res)))\n"} {:sym value-in, :meta {:doc "Similar to get-in, but works with paths that reference map keys", :arglists ([form in])}, :source "(defn\n value-in\n \"Similar to get-in, but works with paths that reference map keys\"\n [form in]\n (if\n  (nil? in)\n  form\n  (let\n   [[k & rst] in]\n   (cond\n    (empty? in)\n    form\n    (and (map? form) (kps? k))\n    (recur (:key k) rst)\n    (and (map? form) (kvps? k))\n    (recur (nth (seq form) (:idx k)) rst)\n    (associative? form)\n    (recur (get form k) rst)\n    (and (int? k) (seqable? form))\n    (recur (nth (seq form) k) rst)))))\n"} {:sym kvps?, :meta {:doc nil, :arglists ([x])}, :source "(defn kvps? [x] (instance? KeyValuePathSegment x))\n"} {:sym in-with-kps-ints-are-keys, :meta {:doc nil, :arglists ([form val in in'])}, :source "(defn\n in-with-kps-ints-are-keys\n [form val in in']\n (if\n  (= form :expound.paths/not-found)\n  form\n  (let\n   [[k & rst] in]\n   (cond\n    (and (empty? in) (equalish? form val))\n    in'\n    (associative? form)\n    (in-with-kps*\n     (get form k :expound.paths/not-found)\n     val\n     rst\n     (conj in' k))\n    (and (int? k) (seqable? form))\n    (in-with-kps*\n     (nth (seq form) k :expound.paths/not-found)\n     val\n     rst\n     (conj in' k))\n    :else\n    :expound.paths/not-found))))\n"} {:sym compare-path-segment, :meta {:doc nil, :arglists ([x y])}, :source "(defn\n compare-path-segment\n [x y]\n (cond\n  (and (int? x) (kvps? y))\n  (compare x (:idx y))\n  (and (kvps? x) (int? y))\n  (compare (:idx x) y)\n  (and (kps? x) (not (kps? y)))\n  -1\n  (and (not (kps? x)) (kps? y))\n  1\n  (and (vector? x) (vector? y))\n  (compare-paths x y)\n  :else\n  (compare x y)))\n"} {:sym kvps-path?, :meta {:doc "True if path points to a key/value pair", :arglists ([x])}, :source "(defn\n kvps-path?\n \"True if path points to a key/value pair\"\n [x]\n (boolean (and (vector? x) (some kvps? x))))\n"} {:sym compare-paths, :meta {:doc nil, :arglists ([path1 path2])}, :source "(defn\n compare-paths\n [path1 path2]\n (->> (map compare-path-segment path1 path2) (remove #{0}) first))\n"} {:sym in-with-kps-fuzzy-match-for-regex-failures, :meta {:doc nil, :arglists ([form val in in'])}, :source "(defn\n in-with-kps-fuzzy-match-for-regex-failures\n [form val in in']\n (if\n  (= form :expound.paths/not-found)\n  form\n  (let\n   [[k & rst] in]\n   (cond\n    (and (empty? in) (seqable? form) (= val '()))\n    in'\n    (and (empty? in) (and (seq? val) (= form (first val))))\n    in'\n    (and (nat-int? k) (seqable? form))\n    (in-with-kps*\n     (nth (seq form) k :expound.paths/not-found)\n     val\n     rst\n     (conj in' k))\n    :else\n    :expound.paths/not-found))))\n"} {:sym in-with-kps*, :meta {:doc nil, :arglists ([form val in in'])}, :source "(defn\n in-with-kps*\n [form val in in']\n (if\n  (fn? form)\n  in'\n  (let\n   [br1 (in-with-kps-ints-are-key-value-indicators form val in in')]\n   (if\n    (not= :expound.paths/not-found br1)\n    br1\n    (let\n     [br2 (in-with-kps-maps-as-seqs form val in in')]\n     (if\n      (not= :expound.paths/not-found br2)\n      br2\n      (let\n       [br3 (in-with-kps-ints-are-keys form val in in')]\n       (if\n        (not= :expound.paths/not-found br3)\n        br3\n        (let\n         [br4\n          (in-with-kps-fuzzy-match-for-regex-failures form val in in')]\n         (if\n          (not= :expound.paths/not-found br4)\n          br4\n          :expound.paths/not-found))))))))))\n"} {:sym kps-path?, :meta {:doc "True if path points to a key", :arglists ([x])}, :source "(defn\n kps-path?\n \"True if path points to a key\"\n [x]\n (boolean (and (vector? x) (kps? (last x)))))\n"} {:sym in-with-kps-maps-as-seqs, :meta {:doc nil, :arglists ([form val in in'])}, :source "(defn\n in-with-kps-maps-as-seqs\n [form val in in']\n (let\n  [[k & rst] in [idx & rst2] rst]\n  (cond\n   (= :expound.paths/not-found form)\n   :expound.paths/not-found\n   (and (empty? in) (equalish? form val))\n   in'\n   (and (map? form) (nat-int? k) (< k (count (seq form))))\n   (in-with-kps*\n    (nth (seq form) k)\n    val\n    rst\n    (conj in' (->KeyValuePathSegment k)))\n   (and\n    (map? form)\n    (nat-int? k)\n    (int? idx)\n    (< k (count (seq form)))\n    (< idx (count (nth (seq form) k))))\n   (in-with-kps*\n    (nth (nth (seq form) k) idx)\n    val\n    rst2\n    (conj in' (->KeyValuePathSegment k) idx))\n   :else\n   :expound.paths/not-found)))\n"} {:sym prefix-path?, :meta {:doc "True if partial-path is a prefix of full-path.", :arglists ([partial-path full-path])}, :source "(defn\n prefix-path?\n \"True if partial-path is a prefix of full-path.\"\n [partial-path full-path]\n (and\n  (< (count partial-path) (count full-path))\n  (= partial-path (subvec full-path 0 (count partial-path)))))\n"} {:sym in-with-kps-ints-are-key-value-indicators, :meta {:doc nil, :arglists ([form val in in'])}, :source "(defn\n in-with-kps-ints-are-key-value-indicators\n [form val in in']\n (if\n  (= form :expound.paths/not-found)\n  form\n  (let\n   [[k & rst] in [idx & rst2] rst]\n   (cond\n    (and (empty? in) (equalish? form val))\n    in'\n    (and (map? form) (= 0 idx))\n    (in-with-kps* k val rst2 (conj in' (->KeyPathSegment k)))\n    (and (map? form) (= 1 idx))\n    (in-with-kps*\n     (get form k :expound.paths/not-found)\n     val\n     rst2\n     (conj in' k))\n    :else\n    :expound.paths/not-found))))\n"} {:sym fn-equal, :meta {:doc nil, :arglists ([x y])}, :source "(defn fn-equal [x y] (and (fn? x) (fn? y) (= (pr-str x) (pr-str y))))\n"} {:sym kps?, :meta {:doc nil, :arglists ([x])}, :source "(defn kps? [x] (instance? KeyPathSegment x))\n"} {:sym both-nan?, :meta {:doc nil, :arglists ([x y])}, :source "(defn both-nan? [x y] (and (util/nan? x) (util/nan? y)))\n"}), cljs.core.async.impl.timers ({:sym timeout, :meta {:doc "returns a channel that will close after msecs", :arglists ([msecs])}, :source "(defn\n timeout\n \"returns a channel that will close after msecs\"\n [msecs]\n (let\n  [timeout\n   (+ (.valueOf (js/Date.)) msecs)\n   me\n   (.ceilingEntry timeouts-map timeout)]\n  (or\n   (when\n    (and me (< (.-key me) (+ timeout TIMEOUT_RESOLUTION_MS)))\n    (.-val me))\n   (let\n    [timeout-channel (channels/chan nil)]\n    (.put timeouts-map timeout timeout-channel)\n    (dispatch/queue-delay\n     (fn\n      []\n      (.remove timeouts-map timeout)\n      (impl/close! timeout-channel))\n     msecs)\n    timeout-channel))))\n"} {:sym random-level, :meta {:doc nil, :arglists [[] [level]]}, :source "(defn\n random-level\n ([] (random-level 0))\n ([level]\n  (if\n   (and (< (.random js/Math) P) (< level MAX_LEVEL))\n   (recur (inc level))\n   level)))\n"} {:sym skip-list, :meta {:doc nil, :arglists ([])}, :source "(defn skip-list [] (SkipList. (skip-list-node 0) 0))\n"} {:sym MAX_LEVEL, :meta {}, :source "(def MAX_LEVEL 15)\n"} {:sym P, :meta {}, :source "(def P (/ 1 2))\n"} {:sym timeouts-map, :meta {}, :source "(def timeouts-map (skip-list))\n"} {:sym skip-list-node, :meta {:doc nil, :arglists [[level] [k v level]]}, :source "(defn\n skip-list-node\n ([level] (skip-list-node nil nil level))\n ([k v level]\n  (let\n   [arr (make-array (inc level))]\n   (loop\n    [i 0]\n    (when (< i (alength arr)) (aset arr i nil) (recur (inc i))))\n   (SkipListNode. k v arr))))\n"} {:sym least-greater-node, :meta {:doc nil, :arglists [[x k level] [x k level update]]}, :source "(defn\n least-greater-node\n ([x k level] (least-greater-node x k level nil))\n ([x k level update]\n  (if-not\n   (neg? level)\n   (let\n    [x\n     (loop\n      [x x]\n      (if-let\n       [x'\n        (when\n         (< level (alength (.-forward x)))\n         (aget (.-forward x) level))]\n       (if (< (.-key x') k) (recur x') x)\n       x))]\n    (when-not (nil? update) (aset update level x))\n    (recur x k (dec level) update))\n   x)))\n"} {:sym TIMEOUT_RESOLUTION_MS, :meta {}, :source "(def TIMEOUT_RESOLUTION_MS 10)\n"}), play-cljc.primitives-3d ({:sym plane, :meta {:doc nil, :arglists ([{:keys [width depth subdivisions-width subdivisions-depth], :or {width 1, depth 1, subdivisions-width 1, subdivisions-depth 1}}])}, :source "(defn\n plane\n [{:keys [width depth subdivisions-width subdivisions-depth],\n   :or {width 1, depth 1, subdivisions-width 1, subdivisions-depth 1}}]\n (let\n  [num-verts-across (inc subdivisions-width)]\n  (->\n   (fn\n    [m z]\n    (reduce\n     (fn\n      [m x]\n      (let\n       [u (/ x subdivisions-width) v (/ z subdivisions-depth)]\n       (->\n        m\n        (update\n         :positions\n         (fn\n          [positions]\n          (->\n           positions\n           (conj! (- (* width u) (* width 0.5)))\n           (conj! 0)\n           (conj! (- (* depth v) (* depth 0.5))))))\n        (update\n         :normals\n         (fn [normals] (-> normals (conj! 0) (conj! 1) (conj! 0))))\n        (update\n         :texcoords\n         (fn [texcoords] (-> texcoords (conj! u) (conj! v)))))))\n     m\n     (range (inc subdivisions-width))))\n   (reduce\n    {:positions (transient []),\n     :normals (transient []),\n     :texcoords (transient [])}\n    (range (inc subdivisions-depth)))\n   (assoc\n    :indices\n    (reduce\n     (fn\n      [indices z]\n      (reduce\n       (fn\n        [indices x]\n        (->\n         indices\n         (conj! (-> z (* num-verts-across) (+ x)))\n         (conj! (-> z inc (* num-verts-across) (+ x)))\n         (conj! (-> z (* num-verts-across) (+ (inc x))))\n         (conj! (-> z inc (* num-verts-across) (+ x)))\n         (conj! (-> z inc (* num-verts-across) (+ (inc x))))\n         (conj! (-> z (* num-verts-across) (+ (inc x))))))\n       indices\n       (range subdivisions-width)))\n     (transient [])\n     (range subdivisions-depth)))\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"} {:sym sphere, :meta {:doc nil, :arglists ([{:keys [radius subdivisions-axis subdivisions-height]}])}, :source "(defn\n sphere\n [{:keys [radius subdivisions-axis subdivisions-height]}]\n (let\n  [start-latitude\n   0\n   end-latitude\n   (math PI)\n   start-longitude\n   0\n   end-longitude\n   (* 2 (math PI))\n   lat-range\n   (- end-latitude start-latitude)\n   long-range\n   (- end-longitude start-longitude)\n   num-vertices\n   (* (inc subdivisions-axis) (inc subdivisions-height))\n   num-verts-around\n   (inc subdivisions-axis)]\n  (->\n   (fn\n    [m y]\n    (reduce\n     (fn\n      [m x]\n      (let\n       [u\n        (/ x subdivisions-axis)\n        v\n        (/ y subdivisions-height)\n        theta\n        (+ (* long-range u) start-longitude)\n        phi\n        (+ (* lat-range v) start-latitude)\n        sin-theta\n        (math sin theta)\n        cos-theta\n        (math cos theta)\n        sin-phi\n        (math sin phi)\n        cos-phi\n        (math cos phi)\n        ux\n        (* cos-theta sin-phi)\n        uy\n        cos-phi\n        uz\n        (* sin-theta sin-phi)]\n       (->\n        m\n        (update\n         :positions\n         (fn\n          [positions]\n          (->\n           positions\n           (conj! (* radius ux))\n           (conj! (* radius uy))\n           (conj! (* radius uz)))))\n        (update\n         :normals\n         (fn [normals] (-> normals (conj! ux) (conj! uy) (conj! uz))))\n        (update\n         :texcoords\n         (fn [texcoords] (-> texcoords (conj! (- 1 u)) (conj! v)))))))\n     m\n     (range (inc subdivisions-axis))))\n   (reduce\n    {:positions (transient []),\n     :normals (transient []),\n     :texcoords (transient [])}\n    (range (inc subdivisions-height)))\n   (assoc\n    :indices\n    (reduce\n     (fn\n      [indices y]\n      (reduce\n       (fn\n        [indices x]\n        (->\n         indices\n         (conj! (-> y (* num-verts-around) (+ x)))\n         (conj! (-> y (* num-verts-around) (+ (inc x))))\n         (conj! (-> y inc (* num-verts-around) (+ x)))\n         (conj! (-> y inc (* num-verts-around) (+ x)))\n         (conj! (-> y (* num-verts-around) (+ (inc x))))\n         (conj! (-> y inc (* num-verts-around) (+ (inc x))))))\n       indices\n       (range subdivisions-axis)))\n     (transient [])\n     (range subdivisions-height)))\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"} {:sym cube-face-indices, :meta {}, :source "(def\n cube-face-indices\n [[3 7 5 1] [6 2 0 4] [6 7 3 2] [0 1 5 4] [7 6 4 5] [2 3 1 0]])\n"} {:sym cube, :meta {:doc nil, :arglists ([{:keys [size], :or {size 1}}])}, :source "(defn\n cube\n [{:keys [size], :or {size 1}}]\n (let\n  [k\n   (/ size 2)\n   corner-vertices\n   [[(- k) (- k) (- k)]\n    [k (- k) (- k)]\n    [(- k) k (- k)]\n    [k k (- k)]\n    [(- k) (- k) k]\n    [k (- k) k]\n    [(- k) k k]\n    [k k k]]\n   face-normals\n   [[1 0 0] [-1 0 0] [0 1 0] [0 -1 0] [0 0 1] [0 0 -1]]\n   uv-coords\n   [[1 0] [0 0] [0 1] [1 1]]\n   num-vertices\n   (* 6 4)]\n  (->\n   (fn\n    [m f]\n    (let\n     [face-indices (nth cube-face-indices f) offset (* 4 f)]\n     (->\n      (fn\n       [m v]\n       (->\n        m\n        (update\n         :positions\n         (fn\n          [positions]\n          (let\n           [[x y z] (nth corner-vertices (nth face-indices v))]\n           (-> positions (conj! x) (conj! y) (conj! z)))))\n        (update\n         :normals\n         (fn\n          [normals]\n          (let\n           [[x y z] (nth face-normals f)]\n           (-> normals (conj! x) (conj! y) (conj! z)))))\n        (update\n         :texcoords\n         (fn\n          [texcoords]\n          (let\n           [[u v] (nth uv-coords v)]\n           (-> texcoords (conj! u) (conj! v)))))))\n      (reduce m (range 4))\n      (update\n       :indices\n       (fn\n        [indices]\n        (->\n         indices\n         (conj! (+ offset 0))\n         (conj! (+ offset 1))\n         (conj! (+ offset 2))\n         (conj! (+ offset 0))\n         (conj! (+ offset 2))\n         (conj! (+ offset 3))))))))\n   (reduce\n    {:positions (transient []),\n     :normals (transient []),\n     :texcoords (transient []),\n     :indices (transient [])}\n    (range 6))\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"} {:sym cylinder, :meta {:doc nil, :arglists ([{:keys [bottom-radius top-radius height radial-subdivisions vertical-subdivisions top-cap? bottom-cap?], :or {top-cap? true, bottom-cap? true}}])}, :source "(defn\n cylinder\n [{:keys\n   [bottom-radius\n    top-radius\n    height\n    radial-subdivisions\n    vertical-subdivisions\n    top-cap?\n    bottom-cap?],\n   :or {top-cap? true, bottom-cap? true}}]\n (let\n  [extra\n   (+ (if top-cap? 2 0) (if bottom-cap? 2 0))\n   num-vertices\n   (* (inc radial-subdivisions) (+ vertical-subdivisions 1 extra))\n   verts-around-edge\n   (inc radial-subdivisions)\n   slant\n   (math atan2 (- bottom-radius top-radius) height)\n   cos-slant\n   (math cos slant)\n   sin-slant\n   (math sin slant)\n   start\n   (if top-cap? -2 0)\n   end\n   (+ vertical-subdivisions (if bottom-cap? 2 0))]\n  (->\n   (fn\n    [m yy]\n    (let\n     [v\n      (/ yy vertical-subdivisions)\n      y\n      (* height v)\n      [y v ring-radius]\n      (cond\n       (< yy 0)\n       [0 1 bottom-radius]\n       (> yy vertical-subdivisions)\n       [height 1 top-radius]\n       :else\n       [y\n        v\n        (+\n         bottom-radius\n         (*\n          (- top-radius bottom-radius)\n          (/ yy vertical-subdivisions)))])\n      [y v ring-radius]\n      (if\n       (or (= yy -2) (= yy (+ vertical-subdivisions 2)))\n       [y 0 0]\n       [y v ring-radius])\n      y\n      (- y (/ height 2))]\n     (reduce\n      (fn\n       [m ii]\n       (let\n        [sin\n         (math sin (-> ii (* (math PI)) (* 2) (/ radial-subdivisions)))\n         cos\n         (math\n          cos\n          (-> ii (* (math PI)) (* 2) (/ radial-subdivisions)))]\n        (->\n         m\n         (update\n          :positions\n          (fn\n           [positions]\n           (->\n            positions\n            (conj! (* sin ring-radius))\n            (conj! y)\n            (conj! (* cos ring-radius)))))\n         (update\n          :normals\n          (fn\n           [normals]\n           (->\n            normals\n            (conj!\n             (if\n              (or (< yy 0) (> yy vertical-subdivisions))\n              0\n              (* sin cos-slant)))\n            (conj!\n             (if\n              (< yy 0)\n              -1\n              (if (> yy vertical-subdivisions) 1 sin-slant)))\n            (conj!\n             (if\n              (or (< yy 0) (> yy vertical-subdivisions))\n              0\n              (* cos cos-slant))))))\n         (update\n          :texcoords\n          (fn\n           [texcoords]\n           (->\n            texcoords\n            (conj! (/ ii radial-subdivisions))\n            (conj! (- 1 v))))))))\n      m\n      (range verts-around-edge))))\n   (reduce\n    {:positions (transient []),\n     :normals (transient []),\n     :texcoords (transient [])}\n    (range start (inc end)))\n   (assoc\n    :indices\n    (reduce\n     (fn\n      [indices yy]\n      (reduce\n       (fn\n        [indices ii]\n        (->\n         indices\n         (conj! (-> verts-around-edge (* (+ yy 0)) (+ 0) (+ ii)))\n         (conj! (-> verts-around-edge (* (+ yy 0)) (+ 1) (+ ii)))\n         (conj! (-> verts-around-edge (* (+ yy 1)) (+ 1) (+ ii)))\n         (conj! (-> verts-around-edge (* (+ yy 0)) (+ 0) (+ ii)))\n         (conj! (-> verts-around-edge (* (+ yy 1)) (+ 1) (+ ii)))\n         (conj! (-> verts-around-edge (* (+ yy 1)) (+ 0) (+ ii)))))\n       indices\n       (range radial-subdivisions)))\n     (transient [])\n     (range (+ vertical-subdivisions extra))))\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"} {:sym crescent, :meta {:doc nil, :arglists ([{:keys [vertical-radius outer-radius inner-radius thickness subdivisions-down start-offset end-offset], :or {start-offset 0, end-offset 1}}])}, :source "(defn\n crescent\n [{:keys\n   [vertical-radius\n    outer-radius\n    inner-radius\n    thickness\n    subdivisions-down\n    start-offset\n    end-offset],\n   :or {start-offset 0, end-offset 1}}]\n (let\n  [subdivisions-thick\n   2\n   offset-range\n   (- end-offset start-offset)\n   num-vertices\n   (-> (inc subdivisions-down) (* 2) (* (+ 2 subdivisions-thick)))\n   lerp\n   (fn [a b s] (-> a (+ (- b a)) (* s)))\n   create-arc\n   (fn\n    [m arc-radius x normal-mult normal-add u-mult u-add]\n    (reduce\n     (fn\n      [m z]\n      (let\n       [u-back\n        (/ x (dec subdivisions-thick))\n        v\n        (/ z subdivisions-down)\n        x-back\n        (* (- u-back 0.5) 2)\n        angle\n        (-> (* v offset-range) (+ start-offset) (* (math PI)))\n        s\n        (math sin angle)\n        c\n        (math cos angle)\n        radius\n        (lerp vertical-radius arc-radius s)\n        px\n        (* x-back thickness)\n        py\n        (* c vertical-radius)\n        pz\n        (* s radius)\n        [nx ny nz]\n        (->> [0 s c] (mapv * normal-mult) (mapv + normal-add))]\n       (->\n        m\n        (update\n         :positions\n         (fn\n          [positions]\n          (-> positions (conj! px) (conj! py) (conj! pz))))\n        (update\n         :normals\n         (fn [normals] (-> normals (conj! nx) (conj! ny) (conj! nz))))\n        (update\n         :texcoords\n         (fn\n          [texcoords]\n          (->\n           texcoords\n           (conj! (+ (* u-back u-mult) u-add))\n           (conj! v)))))))\n     m\n     (range (inc subdivisions-down))))\n   num-vertices-down\n   (inc subdivisions-down)\n   create-surface\n   (fn\n    [m left-arc-offset right-arc-offset]\n    (update\n     m\n     :indices\n     (fn\n      [indices]\n      (reduce\n       (fn\n        [indices z]\n        (->\n         indices\n         (conj! (+ left-arc-offset z 0))\n         (conj! (+ left-arc-offset z 1))\n         (conj! (+ right-arc-offset z 0))\n         (conj! (+ left-arc-offset z 1))\n         (conj! (+ right-arc-offset z 1))\n         (conj! (+ right-arc-offset z 0))))\n       indices\n       (range subdivisions-down)))))]\n  (->\n   (fn\n    [m x]\n    (let\n     [u-back (-> x (/ (dec subdivisions-thick)) (- 0.5) (* 2))]\n     (->\n      m\n      (create-arc outer-radius x [1 1 1] [0 0 0] 1 0)\n      (create-arc outer-radius x [0 0 0] [u-back 0 0] 0 0)\n      (create-arc inner-radius x [1 1 1] [0 0 0] 1 0)\n      (create-arc inner-radius x [0 0 0] [u-back 0 0] 0 1))))\n   (reduce\n    {:positions (transient []),\n     :normals (transient []),\n     :texcoords (transient []),\n     :indices (transient [])}\n    (range subdivisions-thick))\n   (create-surface (* num-vertices-down 0) (* num-vertices-down 4))\n   (create-surface (* num-vertices-down 5) (* num-vertices-down 7))\n   (create-surface (* num-vertices-down 6) (* num-vertices-down 2))\n   (create-surface (* num-vertices-down 3) (* num-vertices-down 1))\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"} {:sym torus, :meta {:doc nil, :arglists ([{:keys [radius thickness radial-subdivisions body-subdivisions start-angle end-angle], :or {start-angle 0, end-angle (* 2 (math PI))}}])}, :source "(defn\n torus\n [{:keys\n   [radius\n    thickness\n    radial-subdivisions\n    body-subdivisions\n    start-angle\n    end-angle],\n   :or {start-angle 0, end-angle (* 2 (math PI))}}]\n (let\n  [angle-range\n   (- end-angle start-angle)\n   radial-parts\n   (inc radial-subdivisions)\n   body-parts\n   (inc body-subdivisions)\n   num-vertices\n   (* radial-parts body-parts)]\n  (->\n   (fn\n    [m slice]\n    (let\n     [v\n      (/ slice body-subdivisions)\n      slice-angle\n      (* v (math PI) 2)\n      slice-sin\n      (math sin slice-angle)\n      ring-radius\n      (+ radius (* slice-sin thickness))\n      ny\n      (math cos slice-angle)\n      y\n      (* ny thickness)]\n     (reduce\n      (fn\n       [m ring]\n       (let\n        [u\n         (/ ring radial-subdivisions)\n         ring-angle\n         (+ start-angle (* u angle-range))\n         x-sin\n         (math sin ring-angle)\n         z-cos\n         (math cos ring-angle)\n         x\n         (* x-sin ring-radius)\n         z\n         (* z-cos ring-radius)\n         nx\n         (* x-sin slice-sin)\n         nz\n         (* z-cos slice-sin)]\n        (->\n         m\n         (update\n          :positions\n          (fn\n           [positions]\n           (-> positions (conj! x) (conj! y) (conj! z))))\n         (update\n          :normals\n          (fn [normals] (-> normals (conj! nx) (conj! ny) (conj! nz))))\n         (update\n          :texcoords\n          (fn [texcoords] (-> texcoords (conj! u) (conj! (- 1 v))))))))\n      m\n      (range radial-parts))))\n   (reduce\n    {:positions (transient []),\n     :normals (transient []),\n     :texcoords (transient [])}\n    (range body-parts))\n   (assoc\n    :indices\n    (reduce\n     (fn\n      [indices slice]\n      (reduce\n       (fn\n        [indices ring]\n        (let\n         [next-ring-index (inc ring) next-slice-index (inc slice)]\n         (->\n          indices\n          (conj! (+ (* radial-parts slice) ring))\n          (conj! (+ (* radial-parts next-slice-index) ring))\n          (conj! (+ (* radial-parts slice) next-ring-index))\n          (conj! (+ (* radial-parts next-slice-index) ring))\n          (conj! (+ (* radial-parts next-slice-index) next-ring-index))\n          (conj! (+ (* radial-parts slice) next-ring-index)))))\n       indices\n       (range radial-subdivisions)))\n     (transient [])\n     (range body-subdivisions)))\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"} {:sym disc, :meta {:doc nil, :arglists ([{:keys [radius divisions stacks inner-radius stack-power], :or {stacks 1, inner-radius 0, stack-power 1}}])}, :source "(defn\n disc\n [{:keys [radius divisions stacks inner-radius stack-power],\n   :or {stacks 1, inner-radius 0, stack-power 1}}]\n (let\n  [num-vertices\n   (* (inc divisions) (inc stacks))\n   radius-span\n   (- radius inner-radius)\n   points-per-stack\n   (inc divisions)]\n  (->\n   (fn\n    [m stack]\n    (let\n     [stack-radius\n      (+\n       inner-radius\n       (* radius-span (math pow (/ stack stacks) stack-power)))]\n     (->\n      (fn\n       [m i]\n       (let\n        [first-index\n         (:first-index m)\n         theta\n         (-> 2 (* (math PI)) (* i) (/ divisions))\n         x\n         (* stack-radius (math cos theta))\n         z\n         (* stack-radius (math sin theta))]\n        (->\n         m\n         (update\n          :positions\n          (fn\n           [positions]\n           (-> positions (conj! x) (conj! 0) (conj! z))))\n         (update\n          :normals\n          (fn [normals] (-> normals (conj! 0) (conj! 1) (conj! 0))))\n         (update\n          :texcoords\n          (fn\n           [texcoords]\n           (->\n            texcoords\n            (conj! (- 1 (/ i divisions)))\n            (conj! (/ stack stacks)))))\n         (update\n          :indices\n          (fn\n           [indices]\n           (if\n            (and (pos? stack) (not= i divisions))\n            (let\n             [a\n              (+ first-index i 1)\n              b\n              (+ first-index i)\n              c\n              (-> first-index (+ i) (- points-per-stack))\n              d\n              (-> first-index (+ (inc i)) (- points-per-stack))]\n             (->\n              indices\n              (conj! a)\n              (conj! b)\n              (conj! c)\n              (conj! a)\n              (conj! c)\n              (conj! d)))\n            indices))))))\n      (reduce m (range (inc divisions)))\n      (update :first-index + (inc divisions)))))\n   (reduce\n    {:first-index 0,\n     :positions (transient []),\n     :normals (transient []),\n     :texcoords (transient []),\n     :indices (transient [])}\n    (range (inc stacks)))\n   (dissoc :first-index)\n   (update :positions persistent!)\n   (update :normals persistent!)\n   (update :texcoords persistent!)\n   (update :indices persistent!))))\n"}), expound.problems ({:sym highlight-line, :meta {:doc nil, :arglists ([prefix replacement])}, :source "(defn\n highlight-line\n [prefix replacement]\n (let\n  [max-width\n   (apply\n    max\n    (map\n     (fn* [p1__45013#] (count (str p1__45013#)))\n     (string/split-lines replacement)))]\n  (printer/indent\n   (count (str prefix))\n   (apply str (repeat max-width \"^\")))))\n"} {:sym value-in, :meta {}, :source "(def value-in paths/value-in)\n"} {:sym fix-via, :meta {:doc nil, :arglists ([spec problem])}, :source "(defn\n fix-via\n [spec problem]\n (if\n  (= spec (first (:via problem)))\n  (assoc problem :expound/via (:via problem))\n  (assoc problem :expound/via (into [spec] (:via problem)))))\n"} {:sym annotate, :meta {:doc nil, :arglists ([explain-data])}, :source "(defn\n annotate\n [explain-data]\n (let\n  [{:clojure.spec.alpha/keys [problems value args ret fn failure spec]}\n   explain-data\n   caller\n   (or\n    (:clojure.spec.test.alpha/caller explain-data)\n    (:orchestra.spec.test/caller explain-data))\n   form\n   (if\n    (not= :instrument failure)\n    value\n    (cond\n     (contains? explain-data :clojure.spec.alpha/ret)\n     ret\n     (contains? explain-data :clojure.spec.alpha/args)\n     args\n     (contains? explain-data :clojure.spec.alpha/fn)\n     fn))\n   problems'\n   (map\n    (comp\n     (partial adjust-in form)\n     (partial adjust-path failure)\n     (partial add-spec spec)\n     (partial fix-via spec)\n     (fn* [p1__45014#] (assoc p1__45014# :expound/form form))\n     (fn*\n      [p1__45015#]\n      (assoc\n       p1__45015#\n       :expound.spec.problem/type\n       (ptype failure p1__45015#))))\n    problems)]\n  (->\n   explain-data\n   (assoc\n    :expound/form\n    form\n    :expound/caller\n    caller\n    :expound/problems\n    problems'))))\n"} {:sym escape-replacement, :meta {:doc nil, :arglists ([pattern s])}, :source "(defn\n escape-replacement\n [pattern s]\n #?(:clj (if (string? pattern) s (string/re-quote-replacement s)) :cljs (string/replace s #\"\\$\" \"$$$$\")))\n"} {:sym highlighted-value, :meta {:doc "Given a problem, returns a pretty printed\n   string that highlights the problem value", :arglists ([opts problem])}, :source "(defn\n highlighted-value\n \"Given a problem, returns a pretty printed\\n   string that highlights the problem value\"\n [opts problem]\n (let\n  [{:keys [:expound/form :expound/in]}\n   problem\n   {:keys [show-valid-values?], :or {show-valid-values? false}}\n   opts\n   printed-val\n   (printer/pprint-str (paths/value-in form in))\n   relevant\n   (str\n    \"(\"\n    :expound.problems/relevant\n    \"|(\"\n    :expound.problems/kv-relevant\n    \"\\\\s+\"\n    :expound.problems/kv-relevant\n    \"))\")\n   regex\n   (re-pattern (str \"(.*)\" relevant \".*\"))\n   s\n   (binding\n    [*print-namespace-maps* false]\n    (printer/pprint-str\n     (walk/prewalk-replace\n      {:expound.problems/irrelevant '...}\n      (summary-form show-valid-values? form in))))\n   [line prefix & _more]\n   (re-find regex s)\n   highlighted-line\n   (->\n    line\n    (string/replace\n     (re-pattern relevant)\n     (escape-replacement\n      (re-pattern relevant)\n      (printer/indent\n       0\n       (count prefix)\n       (ansi/color printed-val :bad-value))))\n    (str\n     \"\\n\"\n     (ansi/color (highlight-line prefix printed-val) :pointer)))]\n  (printer/no-trailing-whitespace\n   (string/replace s line (escape-replacement line highlighted-line)))))\n"} {:sym type, :meta {}, :source "(def type ptype)\n"} {:sym summary-form, :meta {:doc nil, :arglists ([show-valid-values? form in])}, :source "(defn\n summary-form\n [show-valid-values? form in]\n (let\n  [[k & rst]\n   in\n   rst\n   (or rst [])\n   displayed-form\n   (if show-valid-values? form (blank-form form))]\n  (cond\n   (empty? in)\n   :expound.problems/relevant\n   (and (map? form) (paths/kps? k))\n   (->\n    displayed-form\n    (dissoc (:key k))\n    (assoc\n     (summary-form show-valid-values? (:key k) rst)\n     :expound.problems/irrelevant))\n   (and (map? form) (paths/kvps? k))\n   (recur show-valid-values? (nth (seq form) (:idx k)) rst)\n   (associative? form)\n   (assoc\n    displayed-form\n    k\n    (summary-form show-valid-values? (get form k) rst))\n   (and (int? k) (seq? form))\n   (apply\n    list\n    (->\n     displayed-form\n     vec\n     (assoc k (summary-form show-valid-values? (nth form k) rst))))\n   (and (int? k) (set? form))\n   (into\n    #{}\n    (->\n     displayed-form\n     vec\n     (assoc\n      k\n      (summary-form show-valid-values? (nth (seq form) k) rst))))\n   (and (int? k) (list? form))\n   (into\n    '()\n    (->\n     displayed-form\n     vec\n     (assoc\n      k\n      (summary-form show-valid-values? (nth (seq form) k) rst))))\n   (and (int? k) (string? form))\n   (string/join (assoc (vec form) k :expound.problems/relevant))\n   :else\n   (throw\n    (ex-info\n     \"Cannot find path segment in form. This can be caused by using conformers to transform values, which is not supported in Expound\"\n     {:form form, :in in})))))\n"} {:sym blank-form, :meta {:doc nil, :arglists ([form])}, :source "(defn\n blank-form\n [form]\n (cond\n  (map? form)\n  (zipmap (keys form) (repeat :expound.problems/irrelevant))\n  (vector? form)\n  (vec (repeat (count form) :expound.problems/irrelevant))\n  (set? form)\n  form\n  (or (list? form) (seq? form))\n  (apply list (repeat (count form) :expound.problems/irrelevant))\n  :else\n  :expound.problems/irrelevant))\n"}), cljs.spec.gen.alpha ({:sym quick-check, :meta {:doc nil, :arglists ([& args])}, :source "(defn quick-check [& args] (apply @quick-check-ref args))\n"} {:sym for-all*, :meta {:doc "Dynamically loaded clojure.test.check.properties/for-all*.", :arglists ([& args])}, :source "(defn\n for-all*\n \"Dynamically loaded clojure.test.check.properties/for-all*.\"\n [& args]\n (apply @for-all*-ref args))\n"} {:sym delay-impl, :meta {:doc nil, :arglists ([gfnd])}, :source "(defn\n delay-impl\n [gfnd]\n (generator (fn [rnd size] ((:gen @gfnd) rnd size))))\n"} {:sym cat, :meta {:doc "Returns a generator of a sequence catenated from results of\ngens, each of which should generate something sequential.", :arglists ([& gens])}, :source "(defn\n cat\n \"Returns a generator of a sequence catenated from results of\\ngens, each of which should generate something sequential.\"\n [& gens]\n (fmap (fn* [p1__45292#] (apply concat p1__45292#)) (apply tuple gens)))\n"} {:sym gen-for-pred, :meta {:doc "Given a predicate, returns a built-in generator if one exists.", :arglists ([pred])}, :source "(defn\n gen-for-pred\n \"Given a predicate, returns a built-in generator if one exists.\"\n [pred]\n (if (set? pred) (elements pred) (get @gen-builtins pred)))\n"}), play-cljc.gl.examples-2d ({:sym rand-rects-example, :meta {:doc nil, :arglists ([game entity entities])}, :source "(defn\n rand-rects-example\n [game entity entities]\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST))\n (->>\n  entities\n  (reduce-kv i/assoc (i/->instanced-entity entity))\n  (c/compile game)\n  (assoc game :entity)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (for [_ (range 50)] (-> entity (play-cljc.transforms/color [(rand) (rand) (rand) 1]) (play-cljc.transforms/translate (rand-int game-width) (rand-int game-height)) (play-cljc.transforms/scale (rand-int 300) (rand-int 300))))}, :body (let [game (play-cljc.gl.example-utils/init-example card) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) entity (-> (play-cljc.gl.entities-2d/->entity game play-cljc.primitives-2d/rect) (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project game-width game-height))] (->> focus vec (play-cljc.gl.examples-2d/rand-rects-example game entity) (play-cljc.gl.example-utils/game-loop (fn rand-rects-render [{:keys [entity], :as game}] (play-cljc.gl.example-utils/resize-example game) (play-cljc.gl.core/render game {:clear {:color [1 1 1 1], :depth 1}}) (play-cljc.gl.core/render game entity) game)))), :body-str "(for\n [_ (range 50)]\n (->\n  entity\n  (play-cljc.transforms/color [(rand) (rand) (rand) 1])\n  (play-cljc.transforms/translate\n   (rand-int game-width)\n   (rand-int game-height))\n  (play-cljc.transforms/scale (rand-int 300) (rand-int 300))))\n", :id "play-cljc.gl.examples-2d/rand-rects-example/0"}]} {:sym image-example, :meta {:doc nil, :arglists ([game {:keys [data width height], :as image}])}, :source "(defn\n image-example\n [game {:keys [data width height], :as image}]\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST))\n (assoc\n  game\n  :entity\n  (->\n   (c/compile game (e/->image-entity game data width height))\n   (assoc :clear {:color [1 1 1 1], :depth 1}))\n  :image\n  image))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/translate 0 0) (play-cljc.transforms/scale img-width img-height)))}, :body (let [game (play-cljc.gl.example-utils/init-example card)] (play-cljc.gl.example-utils/get-image "aintgottaexplainshit.jpg" (fn [image] (->> (play-cljc.gl.examples-2d/image-example game image) (play-cljc.gl.example-utils/game-loop (fn image-render [{:keys [entity image], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game) screen-ratio (/ game-width game-height) image-ratio (/ (:width image) (:height image)) [img-width img-height] (if (> screen-ratio image-ratio) [(* game-height (/ (:width image) (:height image))) game-height] [game-width (* game-width (/ (:height image) (:width image)))])] focus) game)))))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project game-width game-height)\n  (play-cljc.transforms/translate 0 0)\n  (play-cljc.transforms/scale img-width img-height)))\n", :id "play-cljc.gl.examples-2d/image-example/0"}]} {:sym translation-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n translation-example\n [game]\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST))\n (let\n  [entity\n   (->\n    (c/compile game (e/->entity game data/f-2d))\n    (assoc :clear {:color [0 0 0 0], :depth 1}))\n   *state\n   (atom {:x 0, :y 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> (assoc entity :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/translate x y) (play-cljc.transforms/color [1 0 0.5 1])))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-2d/translation-example) (play-cljc.gl.example-utils/game-loop (fn translation-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [x y]} (clojure.core/deref *state)] (let [game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus)) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  (assoc\n   entity\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project game-width game-height)\n  (play-cljc.transforms/translate x y)\n  (play-cljc.transforms/color [1 0 0.5 1])))\n", :id "play-cljc.gl.examples-2d/translation-example/0"}]} {:sym rotation-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n rotation-example\n [game]\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST))\n (let\n  [entity\n   (->\n    (c/compile game (e/->entity game data/f-2d))\n    (assoc :clear {:color [0 0 0 0], :depth 1}))\n   tx\n   100\n   ty\n   100\n   *state\n   (atom {:tx tx, :ty ty, :r 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/translate tx ty) (play-cljc.transforms/rotate r) (play-cljc.transforms/color [1 0 0.5 1]) (play-cljc.transforms/translate -50 -75)))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-2d/rotation-example) (play-cljc.gl.example-utils/game-loop (fn rotation-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [tx ty r]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  entity\n  (assoc\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project game-width game-height)\n  (play-cljc.transforms/translate tx ty)\n  (play-cljc.transforms/rotate r)\n  (play-cljc.transforms/color [1 0 0.5 1])\n  (play-cljc.transforms/translate -50 -75)))\n", :id "play-cljc.gl.examples-2d/rotation-example/0"}]} {:sym scale-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n scale-example\n [game]\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST))\n (let\n  [entity\n   (->\n    (c/compile game (e/->entity game data/f-2d))\n    (assoc :clear {:color [0 0 0 0], :depth 1}))\n   tx\n   100\n   ty\n   100\n   *state\n   (atom {:tx tx, :ty ty, :rx 1, :ry 1})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (play-cljc.gl.core/render game (-> (assoc entity :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/translate tx ty) (play-cljc.transforms/rotate 0) (play-cljc.transforms/scale rx ry) (play-cljc.transforms/color [1 0 0.5 1])))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-2d/scale-example) (play-cljc.gl.example-utils/game-loop (fn scale-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (let [{:keys [tx ty rx ry]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(play-cljc.gl.core/render\n game\n (->\n  (assoc\n   entity\n   :viewport\n   {:x 0, :y 0, :width game-width, :height game-height})\n  (play-cljc.transforms/project game-width game-height)\n  (play-cljc.transforms/translate tx ty)\n  (play-cljc.transforms/rotate 0)\n  (play-cljc.transforms/scale rx ry)\n  (play-cljc.transforms/color [1 0 0.5 1])))\n", :id "play-cljc.gl.examples-2d/scale-example/0"}]} {:sym rotation-multi-example, :meta {:doc nil, :arglists ([game])}, :source "(defn\n rotation-multi-example\n [game]\n (gl game disable (gl game CULL_FACE))\n (gl game disable (gl game DEPTH_TEST))\n (let\n  [entity\n   (c/compile game (e/->entity game data/f-2d))\n   tx\n   100\n   ty\n   100\n   *state\n   (atom {:tx tx, :ty ty, :r 0})]\n  (eu/listen-for-mouse game *state)\n  (assoc game :entity entity :*state *state)))\n", :examples [{:with-card card, :with-focus {:form [:local-symbol focus], :init-expr (loop [i 0 entity (-> entity (assoc :viewport {:x 0, :y 0, :width game-width, :height game-height}) (play-cljc.transforms/project game-width game-height) (play-cljc.transforms/color [1 0 0.5 1]))] (when (< i 5) (let [entity (-> entity (play-cljc.transforms/translate tx ty) (play-cljc.transforms/rotate r))] (play-cljc.gl.core/render game entity) (recur (inc i) entity))))}, :body (->> (play-cljc.gl.example-utils/init-example card) (play-cljc.gl.examples-2d/rotation-multi-example) (play-cljc.gl.example-utils/game-loop (fn rotation-multi-render [{:keys [entity *state], :as game}] (play-cljc.gl.example-utils/resize-example game) (play-cljc.gl.core/render game {:clear {:color [1 1 1 1], :depth 1}}) (let [{:keys [tx ty r]} (clojure.core/deref *state) game-width (play-cljc.gl.example-utils/get-width game) game-height (play-cljc.gl.example-utils/get-height game)] focus) game))), :body-str "(loop\n [i\n  0\n  entity\n  (->\n   entity\n   (assoc\n    :viewport\n    {:x 0, :y 0, :width game-width, :height game-height})\n   (play-cljc.transforms/project game-width game-height)\n   (play-cljc.transforms/color [1 0 0.5 1]))]\n (when\n  (< i 5)\n  (let\n   [entity\n    (->\n     entity\n     (play-cljc.transforms/translate tx ty)\n     (play-cljc.transforms/rotate r))]\n   (play-cljc.gl.core/render game entity)\n   (recur (inc i) entity))))\n", :id "play-cljc.gl.examples-2d/rotation-multi-example/0"}]})}, :dynadoc.common/var-sym ITranslate}