text: // Compiled by ClojureScript 0.0-2725 {:static-fns true}
  goog.provide('cljs.core');
  goog.require('goog.string.StringBuffer');
  goog.require('goog.array');
  goog.require('goog.object');
  goog.require('goog.string');
  cljs.core._STAR_clojurescript_version_STAR_ = "0.0-2725";
  cljs.core._STAR_unchecked_if_STAR_ = false;
  if(typeof cljs.core._STAR_print_fn_STAR_ !== 'undefined'){
  } else {
  /**
  * Each runtime environment provides a different way to print output.
  * Whatever function *print-fn* is bound to will be passed any
  * Strings which should be printed.
  */
  cljs.core._STAR_print_fn_STAR_ = (function _STAR_print_fn_STAR_(_){
  throw (new Error("No *print-fn* fn set for evaluation environment"));
  });
  }
  /**
  * Set *print-fn* to f.
  */
  cljs.core.set_print_fn_BANG_ = (function set_print_fn_BANG_(f){
  return cljs.core._STAR_print_fn_STAR_ = f;
  });
  cljs.core._STAR_flush_on_newline_STAR_ = true;
  cljs.core._STAR_print_newline_STAR_ = true;
  cljs.core._STAR_print_readably_STAR_ = true;
  cljs.core._STAR_print_meta_STAR_ = false;
  cljs.core._STAR_print_dup_STAR_ = false;
  cljs.core._STAR_print_length_STAR_ = null;
  cljs.core._STAR_print_level_STAR_ = null;
  if(typeof cljs.core._STAR_loaded_libs_STAR_ !== 'undefined'){
  } else {
  cljs.core._STAR_loaded_libs_STAR_ = null;
  }
  cljs.core.pr_opts = (function pr_opts(){
  return new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"flush-on-newline","flush-on-newline",-151457939),cljs.core._STAR_flush_on_newline_STAR_,new cljs.core.Keyword(null,"readably","readably",1129599760),cljs.core._STAR_print_readably_STAR_,new cljs.core.Keyword(null,"meta","meta",1499536964),cljs.core._STAR_print_meta_STAR_,new cljs.core.Keyword(null,"dup","dup",556298533),cljs.core._STAR_print_dup_STAR_,new cljs.core.Keyword(null,"print-length","print-length",1931866356),cljs.core._STAR_print_length_STAR_], null);
  });
  /**
  * Set *print-fn* to console.log
  */
  cljs.core.enable_console_print_BANG_ = (function enable_console_print_BANG_(){
  cljs.core._STAR_print_newline_STAR_ = false;
  
  return cljs.core._STAR_print_fn_STAR_ = (function() { 
  var G__8351__delegate = function (args){
  return console.log.apply(console,(function (){var G__8350 = args;
  return (cljs.core.into_array.cljs$core$IFn$_invoke$arity$1 ? cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(G__8350) : cljs.core.into_array.call(null,G__8350));
  })());
  };
  var G__8351 = function (var_args){
  var args = null;
  if (arguments.length > 0) {
  var G__8352__i = 0, G__8352__a = new Array(arguments.length -  0);
  while (G__8352__i < G__8352__a.length) {G__8352__a[G__8352__i] = arguments[G__8352__i + 0]; ++G__8352__i;}
    args = new cljs.core.IndexedSeq(G__8352__a,0);
  } 
  return G__8351__delegate.call(this,args);};
  G__8351.cljs$lang$maxFixedArity = 0;
  G__8351.cljs$lang$applyTo = (function (arglist__8353){
  var args = cljs.core.seq(arglist__8353);
  return G__8351__delegate(args);
  });
  G__8351.cljs$core$IFn$_invoke$arity$variadic = G__8351__delegate;
  return G__8351;
  })()
  ;
  });
  /**
  * Internal - do not use!
  */
  cljs.core.truth_ = (function truth_(x){
  return (x != null && x !== false);
  });
  cljs.core.not_native = null;
  
  /**
  * Tests if 2 arguments are the same object
  */
  cljs.core.identical_QMARK_ = (function identical_QMARK_(x,y){
  return (x === y);
  });
  /**
  * Returns true if x is nil, false otherwise.
  */
  cljs.core.nil_QMARK_ = (function nil_QMARK_(x){
  return (x == null);
  });
  cljs.core.array_QMARK_ = (function array_QMARK_(x){
  return x instanceof Array;
  });
  cljs.core.number_QMARK_ = (function number_QMARK_(n){
  return typeof n === 'number';
  });
  /**
  * Returns true if x is logical false, false otherwise.
  */
  cljs.core.not = (function not(x){
  if(cljs.core.truth_(x)){
  return false;
  } else {
  return true;
  }
  });
  /**
  * Returns true if x is not nil, false otherwise.
  */
  cljs.core.some_QMARK_ = (function some_QMARK_(x){
  return !((x == null));
  });
  cljs.core.object_QMARK_ = (function object_QMARK_(x){
  if(!((x == null))){
  return (x.constructor === Object);
  } else {
  return false;
  }
  });
  cljs.core.string_QMARK_ = (function string_QMARK_(x){
  var G__8355 = x;
  return goog.isString(G__8355);
  });
  /**
  * Internal - do not use!
  */
  cljs.core.native_satisfies_QMARK_ = (function native_satisfies_QMARK_(p,x){
  var x__$1 = (((x == null))?null:x);
  if((p[(function (){var G__8357 = x__$1;
  return goog.typeOf(G__8357);
  })()])){
  return true;
  } else {
  if((p["_"])){
  return true;
  } else {
  return false;
  
  }
  }
  });
  cljs.core.is_proto_ = (function is_proto_(x){
  return (x.constructor.prototype === x);
  });
  /**
  * When compiled for a command-line target, whatever
  * function *main-fn* is set to will be called with the command-line
  * argv as arguments
  */
  cljs.core._STAR_main_cli_fn_STAR_ = null;
  cljs.core.type = (function type(x){
  if((x == null)){
  return null;
  } else {
  return x.constructor;
  }
  });
  cljs.core.missing_protocol = (function missing_protocol(proto,obj){
  var ty = cljs.core.type(obj);
  var ty__$1 = (cljs.core.truth_((function (){var and__3796__auto__ = ty;
  if(cljs.core.truth_(and__3796__auto__)){
  return ty.cljs$lang$type;
  } else {
  return and__3796__auto__;
  }
  })())?ty.cljs$lang$ctorStr:(function (){var G__8359 = obj;
  return goog.typeOf(G__8359);
  })());
  return (new Error(["No protocol method ",proto," defined for type ",ty__$1,": ",obj].join("")));
  });
  cljs.core.type__GT_str = (function type__GT_str(ty){
  var temp__4124__auto__ = ty.cljs$lang$ctorStr;
  if(cljs.core.truth_(temp__4124__auto__)){
  var s = temp__4124__auto__;
  return s;
  } else {
  return [cljs.core.str(ty)].join('');
  }
  });
  cljs.core.load_file = (function load_file(file){
  if(cljs.core.truth_(COMPILED)){
  return null;
  } else {
  return goog.importScript_(file);
  }
  });
  if((typeof Symbol !== 'undefined') && (((function (){var G__8361 = Symbol;
  return goog.typeOf(G__8361);
  })() === "function"))){
  cljs.core.ITER_SYMBOL = Symbol.iterator;
  } else {
  cljs.core.ITER_SYMBOL = "@@iterator";
  }
  cljs.core.make_array = (function() {
  var make_array = null;
  var make_array__1 = (function (size){
  return (new Array(size));
  });
  var make_array__2 = (function (type,size){
  return make_array.cljs$core$IFn$_invoke$arity$1(size);
  });
  make_array = function(type,size){
  switch(arguments.length){
  case 1:
  return make_array__1.call(this,type);
  case 2:
  return make_array__2.call(this,type,size);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  make_array.cljs$core$IFn$_invoke$arity$1 = make_array__1;
  make_array.cljs$core$IFn$_invoke$arity$2 = make_array__2;
  return make_array;
  })()
  ;
  /**
  * Returns a javascript array, cloned from the passed in array
  */
  cljs.core.aclone = (function aclone(arr){
  var len = arr.length;
  var new_arr = (new Array(len));
  var n__4695__auto___8363 = len;
  var i_8364 = (0);
  while(true){
  if((i_8364 < n__4695__auto___8363)){
  (new_arr[i_8364] = (arr[i_8364]));
  
  var G__8365 = (i_8364 + (1));
  i_8364 = G__8365;
  continue;
  } else {
  }
  break;
  }
  
  return new_arr;
  });
  /**
  * Creates a new javascript array.
  * @param {...*} var_args
  */
  cljs.core.array = (function array(var_args){
  var a = (new Array(arguments.length));
  var i = (0);
  while(true){
  if((i < a.length)){
  (a[i] = (arguments[i]));
  
  var G__8366 = (i + (1));
  i = G__8366;
  continue;
  } else {
  return a;
  }
  break;
  }
  });
  /**
  * Returns the value at the index.
  * @param {...*} var_args
  */
  cljs.core.aget = (function() {
  var aget = null;
  var aget__2 = (function (array,i){
  return (array[i]);
  });
  var aget__3 = (function() { 
  var G__8375__delegate = function (array,i,idxs){
  var G__8372 = aget;
  var G__8373 = aget.cljs$core$IFn$_invoke$arity$2(array,i);
  var G__8374 = idxs;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$3 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$3(G__8372,G__8373,G__8374) : cljs.core.apply.call(null,G__8372,G__8373,G__8374));
  };
  var G__8375 = function (array,i,var_args){
  var idxs = null;
  if (arguments.length > 2) {
  var G__8376__i = 0, G__8376__a = new Array(arguments.length -  2);
  while (G__8376__i < G__8376__a.length) {G__8376__a[G__8376__i] = arguments[G__8376__i + 2]; ++G__8376__i;}
    idxs = new cljs.core.IndexedSeq(G__8376__a,0);
  } 
  return G__8375__delegate.call(this,array,i,idxs);};
  G__8375.cljs$lang$maxFixedArity = 2;
  G__8375.cljs$lang$applyTo = (function (arglist__8377){
  var array = cljs.core.first(arglist__8377);
  arglist__8377 = cljs.core.next(arglist__8377);
  var i = cljs.core.first(arglist__8377);
  var idxs = cljs.core.rest(arglist__8377);
  return G__8375__delegate(array,i,idxs);
  });
  G__8375.cljs$core$IFn$_invoke$arity$variadic = G__8375__delegate;
  return G__8375;
  })()
  ;
  aget = function(array,i,var_args){
  var idxs = var_args;
  switch(arguments.length){
  case 2:
  return aget__2.call(this,array,i);
  default:
  var G__8378 = null;
  if (arguments.length > 2) {
  var G__8379__i = 0, G__8379__a = new Array(arguments.length -  2);
  while (G__8379__i < G__8379__a.length) {G__8379__a[G__8379__i] = arguments[G__8379__i + 2]; ++G__8379__i;}
  G__8378 = new cljs.core.IndexedSeq(G__8379__a,0);
  }
  return aget__3.cljs$core$IFn$_invoke$arity$variadic(array,i, G__8378);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  aget.cljs$lang$maxFixedArity = 2;
  aget.cljs$lang$applyTo = aget__3.cljs$lang$applyTo;
  aget.cljs$core$IFn$_invoke$arity$2 = aget__2;
  aget.cljs$core$IFn$_invoke$arity$variadic = aget__3.cljs$core$IFn$_invoke$arity$variadic;
  return aget;
  })()
  ;
  /**
  * Sets the value at the index.
  * @param {...*} var_args
  */
  cljs.core.aset = (function() {
  var aset = null;
  var aset__3 = (function (array,i,val){
  return (array[i] = val);
  });
  var aset__4 = (function() { 
  var G__8388__delegate = function (array,idx,idx2,idxv){
  var G__8384 = aset;
  var G__8385 = (array[idx]);
  var G__8386 = idx2;
  var G__8387 = idxv;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$4 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$4(G__8384,G__8385,G__8386,G__8387) : cljs.core.apply.call(null,G__8384,G__8385,G__8386,G__8387));
  };
  var G__8388 = function (array,idx,idx2,var_args){
  var idxv = null;
  if (arguments.length > 3) {
  var G__8389__i = 0, G__8389__a = new Array(arguments.length -  3);
  while (G__8389__i < G__8389__a.length) {G__8389__a[G__8389__i] = arguments[G__8389__i + 3]; ++G__8389__i;}
    idxv = new cljs.core.IndexedSeq(G__8389__a,0);
  } 
  return G__8388__delegate.call(this,array,idx,idx2,idxv);};
  G__8388.cljs$lang$maxFixedArity = 3;
  G__8388.cljs$lang$applyTo = (function (arglist__8390){
  var array = cljs.core.first(arglist__8390);
  arglist__8390 = cljs.core.next(arglist__8390);
  var idx = cljs.core.first(arglist__8390);
  arglist__8390 = cljs.core.next(arglist__8390);
  var idx2 = cljs.core.first(arglist__8390);
  var idxv = cljs.core.rest(arglist__8390);
  return G__8388__delegate(array,idx,idx2,idxv);
  });
  G__8388.cljs$core$IFn$_invoke$arity$variadic = G__8388__delegate;
  return G__8388;
  })()
  ;
  aset = function(array,idx,idx2,var_args){
  var idxv = var_args;
  switch(arguments.length){
  case 3:
  return aset__3.call(this,array,idx,idx2);
  default:
  var G__8391 = null;
  if (arguments.length > 3) {
  var G__8392__i = 0, G__8392__a = new Array(arguments.length -  3);
  while (G__8392__i < G__8392__a.length) {G__8392__a[G__8392__i] = arguments[G__8392__i + 3]; ++G__8392__i;}
  G__8391 = new cljs.core.IndexedSeq(G__8392__a,0);
  }
  return aset__4.cljs$core$IFn$_invoke$arity$variadic(array,idx,idx2, G__8391);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  aset.cljs$lang$maxFixedArity = 3;
  aset.cljs$lang$applyTo = aset__4.cljs$lang$applyTo;
  aset.cljs$core$IFn$_invoke$arity$3 = aset__3;
  aset.cljs$core$IFn$_invoke$arity$variadic = aset__4.cljs$core$IFn$_invoke$arity$variadic;
  return aset;
  })()
  ;
  /**
  * Returns the length of the array. Works on arrays of all types.
  */
  cljs.core.alength = (function alength(array){
  return array.length;
  });
  cljs.core.into_array = (function() {
  var into_array = null;
  var into_array__1 = (function (aseq){
  return into_array.cljs$core$IFn$_invoke$arity$2(null,aseq);
  });
  var into_array__2 = (function (type,aseq){
  var G__8398 = (function (a,x){
  a.push(x);
  
  return a;
  });
  var G__8399 = [];
  var G__8400 = aseq;
  return (cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 ? cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(G__8398,G__8399,G__8400) : cljs.core.reduce.call(null,G__8398,G__8399,G__8400));
  });
  into_array = function(type,aseq){
  switch(arguments.length){
  case 1:
  return into_array__1.call(this,type);
  case 2:
  return into_array__2.call(this,type,aseq);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  into_array.cljs$core$IFn$_invoke$arity$1 = into_array__1;
  into_array.cljs$core$IFn$_invoke$arity$2 = into_array__2;
  return into_array;
  })()
  ;
  /**
  * Invoke JavaScript object method via string. Needed when the
  * string is not a valid unquoted property name.
  * @param {...*} var_args
  */
  cljs.core.js_invoke = (function() { 
  var js_invoke__delegate = function (obj,s,args){
  return (obj[s]).apply(obj,cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(args));
  };
  var js_invoke = function (obj,s,var_args){
  var args = null;
  if (arguments.length > 2) {
  var G__8401__i = 0, G__8401__a = new Array(arguments.length -  2);
  while (G__8401__i < G__8401__a.length) {G__8401__a[G__8401__i] = arguments[G__8401__i + 2]; ++G__8401__i;}
    args = new cljs.core.IndexedSeq(G__8401__a,0);
  } 
  return js_invoke__delegate.call(this,obj,s,args);};
  js_invoke.cljs$lang$maxFixedArity = 2;
  js_invoke.cljs$lang$applyTo = (function (arglist__8402){
  var obj = cljs.core.first(arglist__8402);
  arglist__8402 = cljs.core.next(arglist__8402);
  var s = cljs.core.first(arglist__8402);
  var args = cljs.core.rest(arglist__8402);
  return js_invoke__delegate(obj,s,args);
  });
  js_invoke.cljs$core$IFn$_invoke$arity$variadic = js_invoke__delegate;
  return js_invoke;
  })()
  ;
  
  cljs.core.Fn = (function (){var obj8404 = {};
  return obj8404;
  })();
  
  
  cljs.core.IFn = (function (){var obj8406 = {};
  return obj8406;
  })();
  
  cljs.core._invoke = (function() {
  var _invoke = null;
  var _invoke__1 = (function (this$){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$1(this$);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8452 = x__4452__auto__;
  return goog.typeOf(G__8452);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$);
  }
  });
  var _invoke__2 = (function (this$,a){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$2(this$,a);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8454 = x__4452__auto__;
  return goog.typeOf(G__8454);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a);
  }
  });
  var _invoke__3 = (function (this$,a,b){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$3(this$,a,b);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8456 = x__4452__auto__;
  return goog.typeOf(G__8456);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b);
  }
  });
  var _invoke__4 = (function (this$,a,b,c){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$4;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$4(this$,a,b,c);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8458 = x__4452__auto__;
  return goog.typeOf(G__8458);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c);
  }
  });
  var _invoke__5 = (function (this$,a,b,c,d){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$5;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$5(this$,a,b,c,d);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8460 = x__4452__auto__;
  return goog.typeOf(G__8460);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d);
  }
  });
  var _invoke__6 = (function (this$,a,b,c,d,e){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$6;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$6(this$,a,b,c,d,e);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8462 = x__4452__auto__;
  return goog.typeOf(G__8462);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e);
  }
  });
  var _invoke__7 = (function (this$,a,b,c,d,e,f){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$7;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$7(this$,a,b,c,d,e,f);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8464 = x__4452__auto__;
  return goog.typeOf(G__8464);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f);
  }
  });
  var _invoke__8 = (function (this$,a,b,c,d,e,f,g){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$8;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$8(this$,a,b,c,d,e,f,g);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8466 = x__4452__auto__;
  return goog.typeOf(G__8466);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g);
  }
  });
  var _invoke__9 = (function (this$,a,b,c,d,e,f,g,h){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$9;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$9(this$,a,b,c,d,e,f,g,h);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8468 = x__4452__auto__;
  return goog.typeOf(G__8468);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h);
  }
  });
  var _invoke__10 = (function (this$,a,b,c,d,e,f,g,h,i){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$10;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$10(this$,a,b,c,d,e,f,g,h,i);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8470 = x__4452__auto__;
  return goog.typeOf(G__8470);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i);
  }
  });
  var _invoke__11 = (function (this$,a,b,c,d,e,f,g,h,i,j){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$11;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$11(this$,a,b,c,d,e,f,g,h,i,j);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8472 = x__4452__auto__;
  return goog.typeOf(G__8472);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j);
  }
  });
  var _invoke__12 = (function (this$,a,b,c,d,e,f,g,h,i,j,k){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$12;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$12(this$,a,b,c,d,e,f,g,h,i,j,k);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8474 = x__4452__auto__;
  return goog.typeOf(G__8474);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k);
  }
  });
  var _invoke__13 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$13;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$13(this$,a,b,c,d,e,f,g,h,i,j,k,l);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8476 = x__4452__auto__;
  return goog.typeOf(G__8476);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l);
  }
  });
  var _invoke__14 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$14;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$14(this$,a,b,c,d,e,f,g,h,i,j,k,l,m);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8478 = x__4452__auto__;
  return goog.typeOf(G__8478);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m);
  }
  });
  var _invoke__15 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$15;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$15(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8480 = x__4452__auto__;
  return goog.typeOf(G__8480);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  }
  });
  var _invoke__16 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$16;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$16(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8482 = x__4452__auto__;
  return goog.typeOf(G__8482);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  }
  });
  var _invoke__17 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$17;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$17(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8484 = x__4452__auto__;
  return goog.typeOf(G__8484);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  }
  });
  var _invoke__18 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$18;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$18(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8486 = x__4452__auto__;
  return goog.typeOf(G__8486);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  }
  });
  var _invoke__19 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$19;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$19(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8488 = x__4452__auto__;
  return goog.typeOf(G__8488);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  }
  });
  var _invoke__20 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$20;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$20(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8490 = x__4452__auto__;
  return goog.typeOf(G__8490);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  }
  });
  var _invoke__21 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$21;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$21(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8492 = x__4452__auto__;
  return goog.typeOf(G__8492);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  }
  });
  var _invoke__22 = (function (this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IFn$_invoke$arity$22;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IFn$_invoke$arity$22(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._invoke[(function (){var G__8494 = x__4452__auto__;
  return goog.typeOf(G__8494);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._invoke["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IFn.-invoke",this$);
  }
  }
  })().call(null,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
  }
  });
  _invoke = function(this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  switch(arguments.length){
  case 1:
  return _invoke__1.call(this,this$);
  case 2:
  return _invoke__2.call(this,this$,a);
  case 3:
  return _invoke__3.call(this,this$,a,b);
  case 4:
  return _invoke__4.call(this,this$,a,b,c);
  case 5:
  return _invoke__5.call(this,this$,a,b,c,d);
  case 6:
  return _invoke__6.call(this,this$,a,b,c,d,e);
  case 7:
  return _invoke__7.call(this,this$,a,b,c,d,e,f);
  case 8:
  return _invoke__8.call(this,this$,a,b,c,d,e,f,g);
  case 9:
  return _invoke__9.call(this,this$,a,b,c,d,e,f,g,h);
  case 10:
  return _invoke__10.call(this,this$,a,b,c,d,e,f,g,h,i);
  case 11:
  return _invoke__11.call(this,this$,a,b,c,d,e,f,g,h,i,j);
  case 12:
  return _invoke__12.call(this,this$,a,b,c,d,e,f,g,h,i,j,k);
  case 13:
  return _invoke__13.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l);
  case 14:
  return _invoke__14.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m);
  case 15:
  return _invoke__15.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  case 16:
  return _invoke__16.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  case 17:
  return _invoke__17.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  case 18:
  return _invoke__18.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  case 19:
  return _invoke__19.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  case 20:
  return _invoke__20.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  case 21:
  return _invoke__21.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  case 22:
  return _invoke__22.call(this,this$,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _invoke.cljs$core$IFn$_invoke$arity$1 = _invoke__1;
  _invoke.cljs$core$IFn$_invoke$arity$2 = _invoke__2;
  _invoke.cljs$core$IFn$_invoke$arity$3 = _invoke__3;
  _invoke.cljs$core$IFn$_invoke$arity$4 = _invoke__4;
  _invoke.cljs$core$IFn$_invoke$arity$5 = _invoke__5;
  _invoke.cljs$core$IFn$_invoke$arity$6 = _invoke__6;
  _invoke.cljs$core$IFn$_invoke$arity$7 = _invoke__7;
  _invoke.cljs$core$IFn$_invoke$arity$8 = _invoke__8;
  _invoke.cljs$core$IFn$_invoke$arity$9 = _invoke__9;
  _invoke.cljs$core$IFn$_invoke$arity$10 = _invoke__10;
  _invoke.cljs$core$IFn$_invoke$arity$11 = _invoke__11;
  _invoke.cljs$core$IFn$_invoke$arity$12 = _invoke__12;
  _invoke.cljs$core$IFn$_invoke$arity$13 = _invoke__13;
  _invoke.cljs$core$IFn$_invoke$arity$14 = _invoke__14;
  _invoke.cljs$core$IFn$_invoke$arity$15 = _invoke__15;
  _invoke.cljs$core$IFn$_invoke$arity$16 = _invoke__16;
  _invoke.cljs$core$IFn$_invoke$arity$17 = _invoke__17;
  _invoke.cljs$core$IFn$_invoke$arity$18 = _invoke__18;
  _invoke.cljs$core$IFn$_invoke$arity$19 = _invoke__19;
  _invoke.cljs$core$IFn$_invoke$arity$20 = _invoke__20;
  _invoke.cljs$core$IFn$_invoke$arity$21 = _invoke__21;
  _invoke.cljs$core$IFn$_invoke$arity$22 = _invoke__22;
  return _invoke;
  })()
  ;
  
  
  cljs.core.ICloneable = (function (){var obj8496 = {};
  return obj8496;
  })();
  
  cljs.core._clone = (function _clone(value){
  if((function (){var and__3796__auto__ = value;
  if(and__3796__auto__){
  return value.cljs$core$ICloneable$_clone$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return value.cljs$core$ICloneable$_clone$arity$1(value);
  } else {
  var x__4452__auto__ = (((value == null))?null:value);
  return (function (){var or__3808__auto__ = (cljs.core._clone[(function (){var G__8500 = x__4452__auto__;
  return goog.typeOf(G__8500);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._clone["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ICloneable.-clone",value);
  }
  }
  })().call(null,value);
  }
  });
  
  
  cljs.core.ICounted = (function (){var obj8502 = {};
  return obj8502;
  })();
  
  cljs.core._count = (function _count(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ICounted$_count$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ICounted$_count$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._count[(function (){var G__8506 = x__4452__auto__;
  return goog.typeOf(G__8506);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._count["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ICounted.-count",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.IEmptyableCollection = (function (){var obj8508 = {};
  return obj8508;
  })();
  
  cljs.core._empty = (function _empty(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IEmptyableCollection$_empty$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IEmptyableCollection$_empty$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._empty[(function (){var G__8512 = x__4452__auto__;
  return goog.typeOf(G__8512);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._empty["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IEmptyableCollection.-empty",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.ICollection = (function (){var obj8514 = {};
  return obj8514;
  })();
  
  cljs.core._conj = (function _conj(coll,o){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ICollection$_conj$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ICollection$_conj$arity$2(coll,o);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._conj[(function (){var G__8518 = x__4452__auto__;
  return goog.typeOf(G__8518);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._conj["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ICollection.-conj",coll);
  }
  }
  })().call(null,coll,o);
  }
  });
  
  
  cljs.core.IIndexed = (function (){var obj8520 = {};
  return obj8520;
  })();
  
  cljs.core._nth = (function() {
  var _nth = null;
  var _nth__2 = (function (coll,n){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IIndexed$_nth$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IIndexed$_nth$arity$2(coll,n);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._nth[(function (){var G__8526 = x__4452__auto__;
  return goog.typeOf(G__8526);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._nth["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IIndexed.-nth",coll);
  }
  }
  })().call(null,coll,n);
  }
  });
  var _nth__3 = (function (coll,n,not_found){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IIndexed$_nth$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IIndexed$_nth$arity$3(coll,n,not_found);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._nth[(function (){var G__8528 = x__4452__auto__;
  return goog.typeOf(G__8528);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._nth["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IIndexed.-nth",coll);
  }
  }
  })().call(null,coll,n,not_found);
  }
  });
  _nth = function(coll,n,not_found){
  switch(arguments.length){
  case 2:
  return _nth__2.call(this,coll,n);
  case 3:
  return _nth__3.call(this,coll,n,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _nth.cljs$core$IFn$_invoke$arity$2 = _nth__2;
  _nth.cljs$core$IFn$_invoke$arity$3 = _nth__3;
  return _nth;
  })()
  ;
  
  
  cljs.core.ASeq = (function (){var obj8530 = {};
  return obj8530;
  })();
  
  
  cljs.core.ISeq = (function (){var obj8532 = {};
  return obj8532;
  })();
  
  cljs.core._first = (function _first(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISeq$_first$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISeq$_first$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._first[(function (){var G__8536 = x__4452__auto__;
  return goog.typeOf(G__8536);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._first["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISeq.-first",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  cljs.core._rest = (function _rest(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISeq$_rest$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISeq$_rest$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._rest[(function (){var G__8540 = x__4452__auto__;
  return goog.typeOf(G__8540);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._rest["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISeq.-rest",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.INext = (function (){var obj8542 = {};
  return obj8542;
  })();
  
  cljs.core._next = (function _next(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$INext$_next$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$INext$_next$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._next[(function (){var G__8546 = x__4452__auto__;
  return goog.typeOf(G__8546);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._next["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("INext.-next",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.ILookup = (function (){var obj8548 = {};
  return obj8548;
  })();
  
  cljs.core._lookup = (function() {
  var _lookup = null;
  var _lookup__2 = (function (o,k){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ILookup$_lookup$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ILookup$_lookup$arity$2(o,k);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._lookup[(function (){var G__8554 = x__4452__auto__;
  return goog.typeOf(G__8554);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._lookup["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ILookup.-lookup",o);
  }
  }
  })().call(null,o,k);
  }
  });
  var _lookup__3 = (function (o,k,not_found){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ILookup$_lookup$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ILookup$_lookup$arity$3(o,k,not_found);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._lookup[(function (){var G__8556 = x__4452__auto__;
  return goog.typeOf(G__8556);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._lookup["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ILookup.-lookup",o);
  }
  }
  })().call(null,o,k,not_found);
  }
  });
  _lookup = function(o,k,not_found){
  switch(arguments.length){
  case 2:
  return _lookup__2.call(this,o,k);
  case 3:
  return _lookup__3.call(this,o,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _lookup.cljs$core$IFn$_invoke$arity$2 = _lookup__2;
  _lookup.cljs$core$IFn$_invoke$arity$3 = _lookup__3;
  return _lookup;
  })()
  ;
  
  
  cljs.core.IAssociative = (function (){var obj8558 = {};
  return obj8558;
  })();
  
  cljs.core._contains_key_QMARK_ = (function _contains_key_QMARK_(coll,k){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IAssociative$_contains_key_QMARK_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IAssociative$_contains_key_QMARK_$arity$2(coll,k);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._contains_key_QMARK_[(function (){var G__8562 = x__4452__auto__;
  return goog.typeOf(G__8562);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._contains_key_QMARK_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IAssociative.-contains-key?",coll);
  }
  }
  })().call(null,coll,k);
  }
  });
  
  cljs.core._assoc = (function _assoc(coll,k,v){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IAssociative$_assoc$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IAssociative$_assoc$arity$3(coll,k,v);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._assoc[(function (){var G__8566 = x__4452__auto__;
  return goog.typeOf(G__8566);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._assoc["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IAssociative.-assoc",coll);
  }
  }
  })().call(null,coll,k,v);
  }
  });
  
  
  cljs.core.IMap = (function (){var obj8568 = {};
  return obj8568;
  })();
  
  cljs.core._dissoc = (function _dissoc(coll,k){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IMap$_dissoc$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IMap$_dissoc$arity$2(coll,k);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._dissoc[(function (){var G__8572 = x__4452__auto__;
  return goog.typeOf(G__8572);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._dissoc["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMap.-dissoc",coll);
  }
  }
  })().call(null,coll,k);
  }
  });
  
  
  cljs.core.IMapEntry = (function (){var obj8574 = {};
  return obj8574;
  })();
  
  cljs.core._key = (function _key(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IMapEntry$_key$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IMapEntry$_key$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._key[(function (){var G__8578 = x__4452__auto__;
  return goog.typeOf(G__8578);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._key["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMapEntry.-key",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  cljs.core._val = (function _val(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IMapEntry$_val$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IMapEntry$_val$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._val[(function (){var G__8582 = x__4452__auto__;
  return goog.typeOf(G__8582);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._val["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMapEntry.-val",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.ISet = (function (){var obj8584 = {};
  return obj8584;
  })();
  
  cljs.core._disjoin = (function _disjoin(coll,v){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISet$_disjoin$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISet$_disjoin$arity$2(coll,v);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._disjoin[(function (){var G__8588 = x__4452__auto__;
  return goog.typeOf(G__8588);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._disjoin["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISet.-disjoin",coll);
  }
  }
  })().call(null,coll,v);
  }
  });
  
  
  cljs.core.IStack = (function (){var obj8590 = {};
  return obj8590;
  })();
  
  cljs.core._peek = (function _peek(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IStack$_peek$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IStack$_peek$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._peek[(function (){var G__8594 = x__4452__auto__;
  return goog.typeOf(G__8594);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._peek["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IStack.-peek",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  cljs.core._pop = (function _pop(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IStack$_pop$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IStack$_pop$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._pop[(function (){var G__8598 = x__4452__auto__;
  return goog.typeOf(G__8598);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._pop["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IStack.-pop",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.IVector = (function (){var obj8600 = {};
  return obj8600;
  })();
  
  cljs.core._assoc_n = (function _assoc_n(coll,n,val){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IVector$_assoc_n$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IVector$_assoc_n$arity$3(coll,n,val);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._assoc_n[(function (){var G__8604 = x__4452__auto__;
  return goog.typeOf(G__8604);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._assoc_n["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IVector.-assoc-n",coll);
  }
  }
  })().call(null,coll,n,val);
  }
  });
  
  
  cljs.core.IDeref = (function (){var obj8606 = {};
  return obj8606;
  })();
  
  cljs.core._deref = (function _deref(o){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IDeref$_deref$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IDeref$_deref$arity$1(o);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._deref[(function (){var G__8610 = x__4452__auto__;
  return goog.typeOf(G__8610);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._deref["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IDeref.-deref",o);
  }
  }
  })().call(null,o);
  }
  });
  
  
  cljs.core.IDerefWithTimeout = (function (){var obj8612 = {};
  return obj8612;
  })();
  
  cljs.core._deref_with_timeout = (function _deref_with_timeout(o,msec,timeout_val){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IDerefWithTimeout$_deref_with_timeout$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IDerefWithTimeout$_deref_with_timeout$arity$3(o,msec,timeout_val);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._deref_with_timeout[(function (){var G__8616 = x__4452__auto__;
  return goog.typeOf(G__8616);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._deref_with_timeout["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IDerefWithTimeout.-deref-with-timeout",o);
  }
  }
  })().call(null,o,msec,timeout_val);
  }
  });
  
  
  cljs.core.IMeta = (function (){var obj8618 = {};
  return obj8618;
  })();
  
  cljs.core._meta = (function _meta(o){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IMeta$_meta$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IMeta$_meta$arity$1(o);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._meta[(function (){var G__8622 = x__4452__auto__;
  return goog.typeOf(G__8622);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._meta["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMeta.-meta",o);
  }
  }
  })().call(null,o);
  }
  });
  
  
  cljs.core.IWithMeta = (function (){var obj8624 = {};
  return obj8624;
  })();
  
  cljs.core._with_meta = (function _with_meta(o,meta){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IWithMeta$_with_meta$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IWithMeta$_with_meta$arity$2(o,meta);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._with_meta[(function (){var G__8628 = x__4452__auto__;
  return goog.typeOf(G__8628);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._with_meta["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IWithMeta.-with-meta",o);
  }
  }
  })().call(null,o,meta);
  }
  });
  
  
  cljs.core.IReduce = (function (){var obj8630 = {};
  return obj8630;
  })();
  
  cljs.core._reduce = (function() {
  var _reduce = null;
  var _reduce__2 = (function (coll,f){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IReduce$_reduce$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IReduce$_reduce$arity$2(coll,f);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._reduce[(function (){var G__8636 = x__4452__auto__;
  return goog.typeOf(G__8636);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._reduce["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IReduce.-reduce",coll);
  }
  }
  })().call(null,coll,f);
  }
  });
  var _reduce__3 = (function (coll,f,start){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IReduce$_reduce$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IReduce$_reduce$arity$3(coll,f,start);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._reduce[(function (){var G__8638 = x__4452__auto__;
  return goog.typeOf(G__8638);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._reduce["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IReduce.-reduce",coll);
  }
  }
  })().call(null,coll,f,start);
  }
  });
  _reduce = function(coll,f,start){
  switch(arguments.length){
  case 2:
  return _reduce__2.call(this,coll,f);
  case 3:
  return _reduce__3.call(this,coll,f,start);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _reduce.cljs$core$IFn$_invoke$arity$2 = _reduce__2;
  _reduce.cljs$core$IFn$_invoke$arity$3 = _reduce__3;
  return _reduce;
  })()
  ;
  
  
  cljs.core.IKVReduce = (function (){var obj8640 = {};
  return obj8640;
  })();
  
  cljs.core._kv_reduce = (function _kv_reduce(coll,f,init){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IKVReduce$_kv_reduce$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IKVReduce$_kv_reduce$arity$3(coll,f,init);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._kv_reduce[(function (){var G__8644 = x__4452__auto__;
  return goog.typeOf(G__8644);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._kv_reduce["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IKVReduce.-kv-reduce",coll);
  }
  }
  })().call(null,coll,f,init);
  }
  });
  
  
  cljs.core.IEquiv = (function (){var obj8646 = {};
  return obj8646;
  })();
  
  cljs.core._equiv = (function _equiv(o,other){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IEquiv$_equiv$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IEquiv$_equiv$arity$2(o,other);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._equiv[(function (){var G__8650 = x__4452__auto__;
  return goog.typeOf(G__8650);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._equiv["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IEquiv.-equiv",o);
  }
  }
  })().call(null,o,other);
  }
  });
  
  
  cljs.core.IHash = (function (){var obj8652 = {};
  return obj8652;
  })();
  
  cljs.core._hash = (function _hash(o){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IHash$_hash$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IHash$_hash$arity$1(o);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._hash[(function (){var G__8656 = x__4452__auto__;
  return goog.typeOf(G__8656);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._hash["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IHash.-hash",o);
  }
  }
  })().call(null,o);
  }
  });
  
  
  cljs.core.ISeqable = (function (){var obj8658 = {};
  return obj8658;
  })();
  
  cljs.core._seq = (function _seq(o){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ISeqable$_seq$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ISeqable$_seq$arity$1(o);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._seq[(function (){var G__8662 = x__4452__auto__;
  return goog.typeOf(G__8662);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._seq["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISeqable.-seq",o);
  }
  }
  })().call(null,o);
  }
  });
  
  
  cljs.core.ISequential = (function (){var obj8664 = {};
  return obj8664;
  })();
  
  
  cljs.core.IList = (function (){var obj8666 = {};
  return obj8666;
  })();
  
  
  cljs.core.IRecord = (function (){var obj8668 = {};
  return obj8668;
  })();
  
  
  cljs.core.IReversible = (function (){var obj8670 = {};
  return obj8670;
  })();
  
  cljs.core._rseq = (function _rseq(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IReversible$_rseq$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IReversible$_rseq$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._rseq[(function (){var G__8674 = x__4452__auto__;
  return goog.typeOf(G__8674);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._rseq["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IReversible.-rseq",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.ISorted = (function (){var obj8676 = {};
  return obj8676;
  })();
  
  cljs.core._sorted_seq = (function _sorted_seq(coll,ascending_QMARK_){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISorted$_sorted_seq$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISorted$_sorted_seq$arity$2(coll,ascending_QMARK_);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._sorted_seq[(function (){var G__8680 = x__4452__auto__;
  return goog.typeOf(G__8680);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._sorted_seq["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISorted.-sorted-seq",coll);
  }
  }
  })().call(null,coll,ascending_QMARK_);
  }
  });
  
  cljs.core._sorted_seq_from = (function _sorted_seq_from(coll,k,ascending_QMARK_){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISorted$_sorted_seq_from$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISorted$_sorted_seq_from$arity$3(coll,k,ascending_QMARK_);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._sorted_seq_from[(function (){var G__8684 = x__4452__auto__;
  return goog.typeOf(G__8684);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._sorted_seq_from["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISorted.-sorted-seq-from",coll);
  }
  }
  })().call(null,coll,k,ascending_QMARK_);
  }
  });
  
  cljs.core._entry_key = (function _entry_key(coll,entry){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISorted$_entry_key$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISorted$_entry_key$arity$2(coll,entry);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._entry_key[(function (){var G__8688 = x__4452__auto__;
  return goog.typeOf(G__8688);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._entry_key["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISorted.-entry-key",coll);
  }
  }
  })().call(null,coll,entry);
  }
  });
  
  cljs.core._comparator = (function _comparator(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$ISorted$_comparator$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$ISorted$_comparator$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._comparator[(function (){var G__8692 = x__4452__auto__;
  return goog.typeOf(G__8692);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._comparator["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISorted.-comparator",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.IWriter = (function (){var obj8694 = {};
  return obj8694;
  })();
  
  cljs.core._write = (function _write(writer,s){
  if((function (){var and__3796__auto__ = writer;
  if(and__3796__auto__){
  return writer.cljs$core$IWriter$_write$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return writer.cljs$core$IWriter$_write$arity$2(writer,s);
  } else {
  var x__4452__auto__ = (((writer == null))?null:writer);
  return (function (){var or__3808__auto__ = (cljs.core._write[(function (){var G__8698 = x__4452__auto__;
  return goog.typeOf(G__8698);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._write["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IWriter.-write",writer);
  }
  }
  })().call(null,writer,s);
  }
  });
  
  cljs.core._flush = (function _flush(writer){
  if((function (){var and__3796__auto__ = writer;
  if(and__3796__auto__){
  return writer.cljs$core$IWriter$_flush$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return writer.cljs$core$IWriter$_flush$arity$1(writer);
  } else {
  var x__4452__auto__ = (((writer == null))?null:writer);
  return (function (){var or__3808__auto__ = (cljs.core._flush[(function (){var G__8702 = x__4452__auto__;
  return goog.typeOf(G__8702);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._flush["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IWriter.-flush",writer);
  }
  }
  })().call(null,writer);
  }
  });
  
  
  cljs.core.IPrintWithWriter = (function (){var obj8704 = {};
  return obj8704;
  })();
  
  cljs.core._pr_writer = (function _pr_writer(o,writer,opts){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IPrintWithWriter$_pr_writer$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IPrintWithWriter$_pr_writer$arity$3(o,writer,opts);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._pr_writer[(function (){var G__8708 = x__4452__auto__;
  return goog.typeOf(G__8708);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._pr_writer["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IPrintWithWriter.-pr-writer",o);
  }
  }
  })().call(null,o,writer,opts);
  }
  });
  
  
  cljs.core.IPending = (function (){var obj8710 = {};
  return obj8710;
  })();
  
  cljs.core._realized_QMARK_ = (function _realized_QMARK_(d){
  if((function (){var and__3796__auto__ = d;
  if(and__3796__auto__){
  return d.cljs$core$IPending$_realized_QMARK_$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return d.cljs$core$IPending$_realized_QMARK_$arity$1(d);
  } else {
  var x__4452__auto__ = (((d == null))?null:d);
  return (function (){var or__3808__auto__ = (cljs.core._realized_QMARK_[(function (){var G__8714 = x__4452__auto__;
  return goog.typeOf(G__8714);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._realized_QMARK_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IPending.-realized?",d);
  }
  }
  })().call(null,d);
  }
  });
  
  
  cljs.core.IWatchable = (function (){var obj8716 = {};
  return obj8716;
  })();
  
  cljs.core._notify_watches = (function _notify_watches(this$,oldval,newval){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IWatchable$_notify_watches$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IWatchable$_notify_watches$arity$3(this$,oldval,newval);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._notify_watches[(function (){var G__8720 = x__4452__auto__;
  return goog.typeOf(G__8720);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._notify_watches["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IWatchable.-notify-watches",this$);
  }
  }
  })().call(null,this$,oldval,newval);
  }
  });
  
  cljs.core._add_watch = (function _add_watch(this$,key,f){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IWatchable$_add_watch$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IWatchable$_add_watch$arity$3(this$,key,f);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._add_watch[(function (){var G__8724 = x__4452__auto__;
  return goog.typeOf(G__8724);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._add_watch["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IWatchable.-add-watch",this$);
  }
  }
  })().call(null,this$,key,f);
  }
  });
  
  cljs.core._remove_watch = (function _remove_watch(this$,key){
  if((function (){var and__3796__auto__ = this$;
  if(and__3796__auto__){
  return this$.cljs$core$IWatchable$_remove_watch$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return this$.cljs$core$IWatchable$_remove_watch$arity$2(this$,key);
  } else {
  var x__4452__auto__ = (((this$ == null))?null:this$);
  return (function (){var or__3808__auto__ = (cljs.core._remove_watch[(function (){var G__8728 = x__4452__auto__;
  return goog.typeOf(G__8728);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._remove_watch["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IWatchable.-remove-watch",this$);
  }
  }
  })().call(null,this$,key);
  }
  });
  
  
  cljs.core.IEditableCollection = (function (){var obj8730 = {};
  return obj8730;
  })();
  
  cljs.core._as_transient = (function _as_transient(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IEditableCollection$_as_transient$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IEditableCollection$_as_transient$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._as_transient[(function (){var G__8734 = x__4452__auto__;
  return goog.typeOf(G__8734);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._as_transient["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IEditableCollection.-as-transient",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.ITransientCollection = (function (){var obj8736 = {};
  return obj8736;
  })();
  
  cljs.core._conj_BANG_ = (function _conj_BANG_(tcoll,val){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientCollection$_conj_BANG_$arity$2(tcoll,val);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._conj_BANG_[(function (){var G__8740 = x__4452__auto__;
  return goog.typeOf(G__8740);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._conj_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientCollection.-conj!",tcoll);
  }
  }
  })().call(null,tcoll,val);
  }
  });
  
  cljs.core._persistent_BANG_ = (function _persistent_BANG_(tcoll){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientCollection$_persistent_BANG_$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientCollection$_persistent_BANG_$arity$1(tcoll);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._persistent_BANG_[(function (){var G__8744 = x__4452__auto__;
  return goog.typeOf(G__8744);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._persistent_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientCollection.-persistent!",tcoll);
  }
  }
  })().call(null,tcoll);
  }
  });
  
  
  cljs.core.ITransientAssociative = (function (){var obj8746 = {};
  return obj8746;
  })();
  
  cljs.core._assoc_BANG_ = (function _assoc_BANG_(tcoll,key,val){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(tcoll,key,val);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._assoc_BANG_[(function (){var G__8750 = x__4452__auto__;
  return goog.typeOf(G__8750);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._assoc_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientAssociative.-assoc!",tcoll);
  }
  }
  })().call(null,tcoll,key,val);
  }
  });
  
  
  cljs.core.ITransientMap = (function (){var obj8752 = {};
  return obj8752;
  })();
  
  cljs.core._dissoc_BANG_ = (function _dissoc_BANG_(tcoll,key){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientMap$_dissoc_BANG_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientMap$_dissoc_BANG_$arity$2(tcoll,key);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._dissoc_BANG_[(function (){var G__8756 = x__4452__auto__;
  return goog.typeOf(G__8756);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._dissoc_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientMap.-dissoc!",tcoll);
  }
  }
  })().call(null,tcoll,key);
  }
  });
  
  
  cljs.core.ITransientVector = (function (){var obj8758 = {};
  return obj8758;
  })();
  
  cljs.core._assoc_n_BANG_ = (function _assoc_n_BANG_(tcoll,n,val){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3(tcoll,n,val);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._assoc_n_BANG_[(function (){var G__8762 = x__4452__auto__;
  return goog.typeOf(G__8762);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._assoc_n_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientVector.-assoc-n!",tcoll);
  }
  }
  })().call(null,tcoll,n,val);
  }
  });
  
  cljs.core._pop_BANG_ = (function _pop_BANG_(tcoll){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientVector$_pop_BANG_$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientVector$_pop_BANG_$arity$1(tcoll);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._pop_BANG_[(function (){var G__8766 = x__4452__auto__;
  return goog.typeOf(G__8766);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._pop_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientVector.-pop!",tcoll);
  }
  }
  })().call(null,tcoll);
  }
  });
  
  
  cljs.core.ITransientSet = (function (){var obj8768 = {};
  return obj8768;
  })();
  
  cljs.core._disjoin_BANG_ = (function _disjoin_BANG_(tcoll,v){
  if((function (){var and__3796__auto__ = tcoll;
  if(and__3796__auto__){
  return tcoll.cljs$core$ITransientSet$_disjoin_BANG_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return tcoll.cljs$core$ITransientSet$_disjoin_BANG_$arity$2(tcoll,v);
  } else {
  var x__4452__auto__ = (((tcoll == null))?null:tcoll);
  return (function (){var or__3808__auto__ = (cljs.core._disjoin_BANG_[(function (){var G__8772 = x__4452__auto__;
  return goog.typeOf(G__8772);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._disjoin_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ITransientSet.-disjoin!",tcoll);
  }
  }
  })().call(null,tcoll,v);
  }
  });
  
  
  cljs.core.IComparable = (function (){var obj8774 = {};
  return obj8774;
  })();
  
  cljs.core._compare = (function _compare(x,y){
  if((function (){var and__3796__auto__ = x;
  if(and__3796__auto__){
  return x.cljs$core$IComparable$_compare$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return x.cljs$core$IComparable$_compare$arity$2(x,y);
  } else {
  var x__4452__auto__ = (((x == null))?null:x);
  return (function (){var or__3808__auto__ = (cljs.core._compare[(function (){var G__8778 = x__4452__auto__;
  return goog.typeOf(G__8778);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._compare["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IComparable.-compare",x);
  }
  }
  })().call(null,x,y);
  }
  });
  
  
  cljs.core.IChunk = (function (){var obj8780 = {};
  return obj8780;
  })();
  
  cljs.core._drop_first = (function _drop_first(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IChunk$_drop_first$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IChunk$_drop_first$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._drop_first[(function (){var G__8784 = x__4452__auto__;
  return goog.typeOf(G__8784);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._drop_first["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IChunk.-drop-first",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.IChunkedSeq = (function (){var obj8786 = {};
  return obj8786;
  })();
  
  cljs.core._chunked_first = (function _chunked_first(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IChunkedSeq$_chunked_first$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IChunkedSeq$_chunked_first$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._chunked_first[(function (){var G__8790 = x__4452__auto__;
  return goog.typeOf(G__8790);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._chunked_first["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IChunkedSeq.-chunked-first",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  cljs.core._chunked_rest = (function _chunked_rest(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IChunkedSeq$_chunked_rest$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._chunked_rest[(function (){var G__8794 = x__4452__auto__;
  return goog.typeOf(G__8794);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._chunked_rest["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IChunkedSeq.-chunked-rest",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.IChunkedNext = (function (){var obj8796 = {};
  return obj8796;
  })();
  
  cljs.core._chunked_next = (function _chunked_next(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IChunkedNext$_chunked_next$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IChunkedNext$_chunked_next$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._chunked_next[(function (){var G__8800 = x__4452__auto__;
  return goog.typeOf(G__8800);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._chunked_next["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IChunkedNext.-chunked-next",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  cljs.core.INamed = (function (){var obj8802 = {};
  return obj8802;
  })();
  
  cljs.core._name = (function _name(x){
  if((function (){var and__3796__auto__ = x;
  if(and__3796__auto__){
  return x.cljs$core$INamed$_name$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return x.cljs$core$INamed$_name$arity$1(x);
  } else {
  var x__4452__auto__ = (((x == null))?null:x);
  return (function (){var or__3808__auto__ = (cljs.core._name[(function (){var G__8806 = x__4452__auto__;
  return goog.typeOf(G__8806);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._name["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("INamed.-name",x);
  }
  }
  })().call(null,x);
  }
  });
  
  cljs.core._namespace = (function _namespace(x){
  if((function (){var and__3796__auto__ = x;
  if(and__3796__auto__){
  return x.cljs$core$INamed$_namespace$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return x.cljs$core$INamed$_namespace$arity$1(x);
  } else {
  var x__4452__auto__ = (((x == null))?null:x);
  return (function (){var or__3808__auto__ = (cljs.core._namespace[(function (){var G__8810 = x__4452__auto__;
  return goog.typeOf(G__8810);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._namespace["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("INamed.-namespace",x);
  }
  }
  })().call(null,x);
  }
  });
  
  
  cljs.core.IAtom = (function (){var obj8812 = {};
  return obj8812;
  })();
  
  
  cljs.core.IReset = (function (){var obj8814 = {};
  return obj8814;
  })();
  
  cljs.core._reset_BANG_ = (function _reset_BANG_(o,new_value){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IReset$_reset_BANG_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IReset$_reset_BANG_$arity$2(o,new_value);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._reset_BANG_[(function (){var G__8818 = x__4452__auto__;
  return goog.typeOf(G__8818);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._reset_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IReset.-reset!",o);
  }
  }
  })().call(null,o,new_value);
  }
  });
  
  
  cljs.core.ISwap = (function (){var obj8820 = {};
  return obj8820;
  })();
  
  cljs.core._swap_BANG_ = (function() {
  var _swap_BANG_ = null;
  var _swap_BANG___2 = (function (o,f){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ISwap$_swap_BANG_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ISwap$_swap_BANG_$arity$2(o,f);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._swap_BANG_[(function (){var G__8830 = x__4452__auto__;
  return goog.typeOf(G__8830);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._swap_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISwap.-swap!",o);
  }
  }
  })().call(null,o,f);
  }
  });
  var _swap_BANG___3 = (function (o,f,a){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ISwap$_swap_BANG_$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ISwap$_swap_BANG_$arity$3(o,f,a);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._swap_BANG_[(function (){var G__8832 = x__4452__auto__;
  return goog.typeOf(G__8832);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._swap_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISwap.-swap!",o);
  }
  }
  })().call(null,o,f,a);
  }
  });
  var _swap_BANG___4 = (function (o,f,a,b){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ISwap$_swap_BANG_$arity$4;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ISwap$_swap_BANG_$arity$4(o,f,a,b);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._swap_BANG_[(function (){var G__8834 = x__4452__auto__;
  return goog.typeOf(G__8834);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._swap_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISwap.-swap!",o);
  }
  }
  })().call(null,o,f,a,b);
  }
  });
  var _swap_BANG___5 = (function (o,f,a,b,xs){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$ISwap$_swap_BANG_$arity$5;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$ISwap$_swap_BANG_$arity$5(o,f,a,b,xs);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._swap_BANG_[(function (){var G__8836 = x__4452__auto__;
  return goog.typeOf(G__8836);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._swap_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("ISwap.-swap!",o);
  }
  }
  })().call(null,o,f,a,b,xs);
  }
  });
  _swap_BANG_ = function(o,f,a,b,xs){
  switch(arguments.length){
  case 2:
  return _swap_BANG___2.call(this,o,f);
  case 3:
  return _swap_BANG___3.call(this,o,f,a);
  case 4:
  return _swap_BANG___4.call(this,o,f,a,b);
  case 5:
  return _swap_BANG___5.call(this,o,f,a,b,xs);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _swap_BANG_.cljs$core$IFn$_invoke$arity$2 = _swap_BANG___2;
  _swap_BANG_.cljs$core$IFn$_invoke$arity$3 = _swap_BANG___3;
  _swap_BANG_.cljs$core$IFn$_invoke$arity$4 = _swap_BANG___4;
  _swap_BANG_.cljs$core$IFn$_invoke$arity$5 = _swap_BANG___5;
  return _swap_BANG_;
  })()
  ;
  
  
  cljs.core.IVolatile = (function (){var obj8838 = {};
  return obj8838;
  })();
  
  cljs.core._vreset_BANG_ = (function _vreset_BANG_(o,new_value){
  if((function (){var and__3796__auto__ = o;
  if(and__3796__auto__){
  return o.cljs$core$IVolatile$_vreset_BANG_$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return o.cljs$core$IVolatile$_vreset_BANG_$arity$2(o,new_value);
  } else {
  var x__4452__auto__ = (((o == null))?null:o);
  return (function (){var or__3808__auto__ = (cljs.core._vreset_BANG_[(function (){var G__8842 = x__4452__auto__;
  return goog.typeOf(G__8842);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._vreset_BANG_["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IVolatile.-vreset!",o);
  }
  }
  })().call(null,o,new_value);
  }
  });
  
  
  cljs.core.IIterable = (function (){var obj8844 = {};
  return obj8844;
  })();
  
  cljs.core._iterator = (function _iterator(coll){
  if((function (){var and__3796__auto__ = coll;
  if(and__3796__auto__){
  return coll.cljs$core$IIterable$_iterator$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return coll.cljs$core$IIterable$_iterator$arity$1(coll);
  } else {
  var x__4452__auto__ = (((coll == null))?null:coll);
  return (function (){var or__3808__auto__ = (cljs.core._iterator[(function (){var G__8848 = x__4452__auto__;
  return goog.typeOf(G__8848);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._iterator["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IIterable.-iterator",coll);
  }
  }
  })().call(null,coll);
  }
  });
  
  
  /**
  * @constructor
  */
  cljs.core.StringBufferWriter = (function (sb){
  this.sb = sb;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 1073741824;
  })
  cljs.core.StringBufferWriter.prototype.cljs$core$IWriter$_write$arity$2 = (function (_,s){
  var self__ = this;
  var ___$1 = this;
  return self__.sb.append(s);
  });
  
  cljs.core.StringBufferWriter.prototype.cljs$core$IWriter$_flush$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return null;
  });
  
  cljs.core.StringBufferWriter.cljs$lang$type = true;
  
  cljs.core.StringBufferWriter.cljs$lang$ctorStr = "cljs.core/StringBufferWriter";
  
  cljs.core.StringBufferWriter.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/StringBufferWriter");
  });
  
  cljs.core.__GT_StringBufferWriter = (function __GT_StringBufferWriter(sb){
  return (new cljs.core.StringBufferWriter(sb));
  });
  
  /**
  * Support so that collections can implement toString without
  * loading all the printing machinery.
  */
  cljs.core.pr_str_STAR_ = (function pr_str_STAR_(obj){
  var sb = (new goog.string.StringBuffer());
  var writer = (new cljs.core.StringBufferWriter(sb));
  obj.cljs$core$IPrintWithWriter$_pr_writer$arity$3(null,writer,cljs.core.pr_opts());
  
  writer.cljs$core$IWriter$_flush$arity$1(null);
  
  return [cljs.core.str(sb)].join('');
  });
  cljs.core.int_rotate_left = (function int_rotate_left(x,n){
  return ((x << n) | (x >>> (- n)));
  });
  if((typeof Math.imul !== 'undefined') && (!(((function (){var G__8851 = (4294967295);
  var G__8852 = (5);
  return (Math.imul.cljs$core$IFn$_invoke$arity$2 ? Math.imul.cljs$core$IFn$_invoke$arity$2(G__8851,G__8852) : Math.imul.call(null,G__8851,G__8852));
  })() === (0))))){
  cljs.core.imul = (function imul(a,b){
  var G__8855 = a;
  var G__8856 = b;
  return (Math.imul.cljs$core$IFn$_invoke$arity$2 ? Math.imul.cljs$core$IFn$_invoke$arity$2(G__8855,G__8856) : Math.imul.call(null,G__8855,G__8856));
  });
  } else {
  cljs.core.imul = (function imul(a,b){
  var ah = ((a >>> (16)) & (65535));
  var al = (a & (65535));
  var bh = ((b >>> (16)) & (65535));
  var bl = (b & (65535));
  return (((al * bl) + ((((ah * bl) + (al * bh)) << (16)) >>> (0))) | (0));
  });
  }
  cljs.core.m3_seed = (0);
  cljs.core.m3_C1 = (3432918353);
  cljs.core.m3_C2 = (461845907);
  cljs.core.m3_mix_K1 = (function m3_mix_K1(k1){
  return cljs.core.imul(cljs.core.int_rotate_left(cljs.core.imul(k1,cljs.core.m3_C1),(15)),cljs.core.m3_C2);
  });
  cljs.core.m3_mix_H1 = (function m3_mix_H1(h1,k1){
  return (cljs.core.imul(cljs.core.int_rotate_left((h1 ^ k1),(13)),(5)) + (3864292196));
  });
  cljs.core.m3_fmix = (function m3_fmix(h1,len){
  var h1__$1 = h1;
  var h1__$2 = (h1__$1 ^ len);
  var h1__$3 = (h1__$2 ^ (h1__$2 >>> (16)));
  var h1__$4 = cljs.core.imul(h1__$3,(2246822507));
  var h1__$5 = (h1__$4 ^ (h1__$4 >>> (13)));
  var h1__$6 = cljs.core.imul(h1__$5,(3266489909));
  var h1__$7 = (h1__$6 ^ (h1__$6 >>> (16)));
  return h1__$7;
  });
  cljs.core.m3_hash_int = (function m3_hash_int(in$){
  if((in$ === (0))){
  return in$;
  } else {
  var k1 = cljs.core.m3_mix_K1(in$);
  var h1 = cljs.core.m3_mix_H1(cljs.core.m3_seed,k1);
  return cljs.core.m3_fmix(h1,(4));
  }
  });
  cljs.core.m3_hash_unencoded_chars = (function m3_hash_unencoded_chars(in$){
  var h1 = (function (){var i = (1);
  var h1 = cljs.core.m3_seed;
  while(true){
  if((i < in$.length)){
  var G__8857 = (i + (2));
  var G__8858 = cljs.core.m3_mix_H1(h1,cljs.core.m3_mix_K1((in$.charCodeAt((i - (1))) | (in$.charCodeAt(i) << (16)))));
  i = G__8857;
  h1 = G__8858;
  continue;
  } else {
  return h1;
  }
  break;
  }
  })();
  var h1__$1 = ((((in$.length & (1)) === (1)))?(h1 ^ cljs.core.m3_mix_K1(in$.charCodeAt((in$.length - (1))))):h1);
  return cljs.core.m3_fmix(h1__$1,cljs.core.imul((2),in$.length));
  });
  
  
  
  cljs.core.string_hash_cache = (function (){var obj8860 = {};
  return obj8860;
  })();
  cljs.core.string_hash_cache_count = (0);
  cljs.core.hash_string_STAR_ = (function hash_string_STAR_(s){
  if(!((s == null))){
  var len = s.length;
  if((len > (0))){
  var i = (0);
  var hash = (0);
  while(true){
  if((i < len)){
  var G__8861 = (i + (1));
  var G__8862 = (cljs.core.imul((31),hash) + s.charCodeAt(i));
  i = G__8861;
  hash = G__8862;
  continue;
  } else {
  return hash;
  }
  break;
  }
  } else {
  return (0);
  }
  } else {
  return (0);
  }
  });
  cljs.core.add_to_string_hash_cache = (function add_to_string_hash_cache(k){
  var h = cljs.core.hash_string_STAR_(k);
  (cljs.core.string_hash_cache[k] = h);
  
  cljs.core.string_hash_cache_count = (cljs.core.string_hash_cache_count + (1));
  
  return h;
  });
  cljs.core.hash_string = (function hash_string(k){
  if((cljs.core.string_hash_cache_count > (255))){
  cljs.core.string_hash_cache = (function (){var obj8866 = {};
  return obj8866;
  })();
  
  cljs.core.string_hash_cache_count = (0);
  } else {
  }
  
  var h = (cljs.core.string_hash_cache[k]);
  if(typeof h === 'number'){
  return h;
  } else {
  return cljs.core.add_to_string_hash_cache(k);
  }
  });
  cljs.core.hash = (function hash(o){
  if((function (){var G__8869 = o;
  if(G__8869){
  var bit__4482__auto__ = (G__8869.cljs$lang$protocol_mask$partition0$ & (4194304));
  if((bit__4482__auto__) || (G__8869.cljs$core$IHash$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return o.cljs$core$IHash$_hash$arity$1(null);
  } else {
  if(typeof o === 'number'){
  return ((function (){var G__8870 = o;
  return (Math.floor.cljs$core$IFn$_invoke$arity$1 ? Math.floor.cljs$core$IFn$_invoke$arity$1(G__8870) : Math.floor.call(null,G__8870));
  })() % (2147483647));
  } else {
  if(o === true){
  return (1);
  } else {
  if(o === false){
  return (0);
  } else {
  if(typeof o === 'string'){
  return cljs.core.m3_hash_int(cljs.core.hash_string(o));
  } else {
  if((o instanceof Date)){
  return o.valueOf();
  } else {
  if((o == null)){
  return (0);
  } else {
  return cljs.core._hash(o);
  
  }
  }
  }
  }
  }
  }
  }
  });
  cljs.core.hash_combine = (function hash_combine(seed,hash){
  return (seed ^ (((hash + (2654435769)) + (seed << (6))) + (seed >> (2))));
  });
  cljs.core.instance_QMARK_ = (function instance_QMARK_(t,o){
  return (o instanceof t);
  });
  cljs.core.symbol_QMARK_ = (function symbol_QMARK_(x){
  return (x instanceof cljs.core.Symbol);
  });
  cljs.core.hash_symbol = (function hash_symbol(sym){
  return cljs.core.hash_combine(cljs.core.m3_hash_unencoded_chars(sym.name),cljs.core.hash_string(sym.ns));
  });
  cljs.core.compare_symbols = (function compare_symbols(a,b){
  if((a.str === b.str)){
  return (0);
  } else {
  if(cljs.core.truth_((function (){var and__3796__auto__ = cljs.core.not(a.ns);
  if(and__3796__auto__){
  return b.ns;
  } else {
  return and__3796__auto__;
  }
  })())){
  return (-1);
  } else {
  if(cljs.core.truth_(a.ns)){
  if(cljs.core.not(b.ns)){
  return (1);
  } else {
  var nsc = (function (){var G__8877 = a.ns;
  var G__8878 = b.ns;
  return goog.array.defaultCompare(G__8877,G__8878);
  })();
  if(((0) === nsc)){
  var G__8879 = a.name;
  var G__8880 = b.name;
  return goog.array.defaultCompare(G__8879,G__8880);
  } else {
  return nsc;
  }
  }
  } else {
  var G__8881 = a.name;
  var G__8882 = b.name;
  return goog.array.defaultCompare(G__8881,G__8882);
  
  }
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.Symbol = (function (ns,name,str,_hash,_meta){
  this.ns = ns;
  this.name = name;
  this.str = str;
  this._hash = _hash;
  this._meta = _meta;
  this.cljs$lang$protocol_mask$partition0$ = 2154168321;
  this.cljs$lang$protocol_mask$partition1$ = 4096;
  })
  cljs.core.Symbol.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (o,writer,_){
  var self__ = this;
  var o__$1 = this;
  return cljs.core._write(writer,self__.str);
  });
  
  cljs.core.Symbol.prototype.cljs$core$INamed$_name$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.name;
  });
  
  cljs.core.Symbol.prototype.cljs$core$INamed$_namespace$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.ns;
  });
  
  cljs.core.Symbol.prototype.cljs$core$IHash$_hash$arity$1 = (function (sym){
  var self__ = this;
  var sym__$1 = this;
  var h__4229__auto__ = self__._hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_symbol(sym__$1);
  self__._hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.Symbol.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_,new_meta){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.Symbol(self__.ns,self__.name,self__.str,self__._hash,new_meta));
  });
  
  cljs.core.Symbol.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__._meta;
  });
  
  cljs.core.Symbol.prototype.call = (function() {
  var G__8884 = null;
  var G__8884__2 = (function (self__,coll){
  var self__ = this;
  var self____$1 = this;
  var sym = self____$1;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll,sym,null);
  });
  var G__8884__3 = (function (self__,coll,not_found){
  var self__ = this;
  var self____$1 = this;
  var sym = self____$1;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll,sym,not_found);
  });
  G__8884 = function(self__,coll,not_found){
  switch(arguments.length){
  case 2:
  return G__8884__2.call(this,self__,coll);
  case 3:
  return G__8884__3.call(this,self__,coll,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__8884.cljs$core$IFn$_invoke$arity$2 = G__8884__2;
  G__8884.cljs$core$IFn$_invoke$arity$3 = G__8884__3;
  return G__8884;
  })()
  ;
  
  cljs.core.Symbol.prototype.apply = (function (self__,args8883){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args8883)));
  });
  
  cljs.core.Symbol.prototype.cljs$core$IFn$_invoke$arity$1 = (function (coll){
  var self__ = this;
  var sym = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll,sym,null);
  });
  
  cljs.core.Symbol.prototype.cljs$core$IFn$_invoke$arity$2 = (function (coll,not_found){
  var self__ = this;
  var sym = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll,sym,not_found);
  });
  
  cljs.core.Symbol.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
  var self__ = this;
  var ___$1 = this;
  if((other instanceof cljs.core.Symbol)){
  return (self__.str === other.str);
  } else {
  return false;
  }
  });
  
  cljs.core.Symbol.prototype.toString = (function (){
  var self__ = this;
  var _ = this;
  return self__.str;
  });
  
  cljs.core.Symbol.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.Symbol.cljs$lang$type = true;
  
  cljs.core.Symbol.cljs$lang$ctorStr = "cljs.core/Symbol";
  
  cljs.core.Symbol.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Symbol");
  });
  
  cljs.core.__GT_Symbol = (function __GT_Symbol(ns,name,str,_hash,_meta){
  return (new cljs.core.Symbol(ns,name,str,_hash,_meta));
  });
  
  cljs.core.symbol = (function() {
  var symbol = null;
  var symbol__1 = (function (name){
  if((name instanceof cljs.core.Symbol)){
  return name;
  } else {
  return symbol.cljs$core$IFn$_invoke$arity$2(null,name);
  }
  });
  var symbol__2 = (function (ns,name){
  var sym_str = ((!((ns == null)))?[cljs.core.str(ns),cljs.core.str("/"),cljs.core.str(name)].join(''):name);
  return (new cljs.core.Symbol(ns,name,sym_str,null,null));
  });
  symbol = function(ns,name){
  switch(arguments.length){
  case 1:
  return symbol__1.call(this,ns);
  case 2:
  return symbol__2.call(this,ns,name);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  symbol.cljs$core$IFn$_invoke$arity$1 = symbol__1;
  symbol.cljs$core$IFn$_invoke$arity$2 = symbol__2;
  return symbol;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.Var = (function (val,sym,_meta){
  this.val = val;
  this.sym = sym;
  this._meta = _meta;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 163841;
  })
  cljs.core.Var.prototype.call = (function() {
  var G__8932 = null;
  var G__8932__1 = (function (self__){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null);
  });
  var G__8932__2 = (function (self__,a){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a);
  });
  var G__8932__3 = (function (self__,a,b){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b);
  });
  var G__8932__4 = (function (self__,a,b,c){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c);
  });
  var G__8932__5 = (function (self__,a,b,c,d){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d);
  });
  var G__8932__6 = (function (self__,a,b,c,d,e){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e);
  });
  var G__8932__7 = (function (self__,a,b,c,d,e,f){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f);
  });
  var G__8932__8 = (function (self__,a,b,c,d,e,f,g){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g);
  });
  var G__8932__9 = (function (self__,a,b,c,d,e,f,g,h){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h);
  });
  var G__8932__10 = (function (self__,a,b,c,d,e,f,g,h,i){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i);
  });
  var G__8932__11 = (function (self__,a,b,c,d,e,f,g,h,i,j){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j);
  });
  var G__8932__12 = (function (self__,a,b,c,d,e,f,g,h,i,j,k){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k);
  });
  var G__8932__13 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l);
  });
  var G__8932__14 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m);
  });
  var G__8932__15 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  });
  var G__8932__16 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  });
  var G__8932__17 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  });
  var G__8932__18 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  });
  var G__8932__19 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  });
  var G__8932__20 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  });
  var G__8932__21 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  });
  var G__8932__22 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__8888 = (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })();
  var G__8889 = a;
  var G__8890 = b;
  var G__8891 = c;
  var G__8892 = d;
  var G__8893 = e;
  var G__8894 = f;
  var G__8895 = g;
  var G__8896 = h;
  var G__8897 = i;
  var G__8898 = j;
  var G__8899 = k;
  var G__8900 = l;
  var G__8901 = m;
  var G__8902 = n;
  var G__8903 = o;
  var G__8904 = p;
  var G__8905 = q;
  var G__8906 = r;
  var G__8907 = s;
  var G__8908 = t;
  var G__8909 = rest;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$22 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$22(G__8888,G__8889,G__8890,G__8891,G__8892,G__8893,G__8894,G__8895,G__8896,G__8897,G__8898,G__8899,G__8900,G__8901,G__8902,G__8903,G__8904,G__8905,G__8906,G__8907,G__8908,G__8909) : cljs.core.apply.call(null,G__8888,G__8889,G__8890,G__8891,G__8892,G__8893,G__8894,G__8895,G__8896,G__8897,G__8898,G__8899,G__8900,G__8901,G__8902,G__8903,G__8904,G__8905,G__8906,G__8907,G__8908,G__8909));
  });
  G__8932 = function(self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  switch(arguments.length){
  case 1:
  return G__8932__1.call(this,self__);
  case 2:
  return G__8932__2.call(this,self__,a);
  case 3:
  return G__8932__3.call(this,self__,a,b);
  case 4:
  return G__8932__4.call(this,self__,a,b,c);
  case 5:
  return G__8932__5.call(this,self__,a,b,c,d);
  case 6:
  return G__8932__6.call(this,self__,a,b,c,d,e);
  case 7:
  return G__8932__7.call(this,self__,a,b,c,d,e,f);
  case 8:
  return G__8932__8.call(this,self__,a,b,c,d,e,f,g);
  case 9:
  return G__8932__9.call(this,self__,a,b,c,d,e,f,g,h);
  case 10:
  return G__8932__10.call(this,self__,a,b,c,d,e,f,g,h,i);
  case 11:
  return G__8932__11.call(this,self__,a,b,c,d,e,f,g,h,i,j);
  case 12:
  return G__8932__12.call(this,self__,a,b,c,d,e,f,g,h,i,j,k);
  case 13:
  return G__8932__13.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l);
  case 14:
  return G__8932__14.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m);
  case 15:
  return G__8932__15.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  case 16:
  return G__8932__16.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  case 17:
  return G__8932__17.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  case 18:
  return G__8932__18.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  case 19:
  return G__8932__19.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  case 20:
  return G__8932__20.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  case 21:
  return G__8932__21.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  case 22:
  return G__8932__22.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__8932.cljs$core$IFn$_invoke$arity$1 = G__8932__1;
  G__8932.cljs$core$IFn$_invoke$arity$2 = G__8932__2;
  G__8932.cljs$core$IFn$_invoke$arity$3 = G__8932__3;
  G__8932.cljs$core$IFn$_invoke$arity$4 = G__8932__4;
  G__8932.cljs$core$IFn$_invoke$arity$5 = G__8932__5;
  G__8932.cljs$core$IFn$_invoke$arity$6 = G__8932__6;
  G__8932.cljs$core$IFn$_invoke$arity$7 = G__8932__7;
  G__8932.cljs$core$IFn$_invoke$arity$8 = G__8932__8;
  G__8932.cljs$core$IFn$_invoke$arity$9 = G__8932__9;
  G__8932.cljs$core$IFn$_invoke$arity$10 = G__8932__10;
  G__8932.cljs$core$IFn$_invoke$arity$11 = G__8932__11;
  G__8932.cljs$core$IFn$_invoke$arity$12 = G__8932__12;
  G__8932.cljs$core$IFn$_invoke$arity$13 = G__8932__13;
  G__8932.cljs$core$IFn$_invoke$arity$14 = G__8932__14;
  G__8932.cljs$core$IFn$_invoke$arity$15 = G__8932__15;
  G__8932.cljs$core$IFn$_invoke$arity$16 = G__8932__16;
  G__8932.cljs$core$IFn$_invoke$arity$17 = G__8932__17;
  G__8932.cljs$core$IFn$_invoke$arity$18 = G__8932__18;
  G__8932.cljs$core$IFn$_invoke$arity$19 = G__8932__19;
  G__8932.cljs$core$IFn$_invoke$arity$20 = G__8932__20;
  G__8932.cljs$core$IFn$_invoke$arity$21 = G__8932__21;
  G__8932.cljs$core$IFn$_invoke$arity$22 = G__8932__22;
  return G__8932;
  })()
  ;
  
  cljs.core.Var.prototype.apply = (function (self__,args8887){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args8887)));
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$0 = (function (){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$1 = (function (a){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$3 = (function (a,b,c){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,d){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$5 = (function (a,b,c,d,e){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$6 = (function (a,b,c,d,e,f){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$7 = (function (a,b,c,d,e,f,g){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$8 = (function (a,b,c,d,e,f,g,h){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$9 = (function (a,b,c,d,e,f,g,h,i){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$10 = (function (a,b,c,d,e,f,g,h,i,j){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$11 = (function (a,b,c,d,e,f,g,h,i,j,k){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$12 = (function (a,b,c,d,e,f,g,h,i,j,k,l){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$13 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$14 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$15 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$16 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$17 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$18 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$19 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$20 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  var self__ = this;
  var _ = this;
  return (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })().call(null,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  });
  
  cljs.core.Var.prototype.cljs$core$IFn$_invoke$arity$21 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  var self__ = this;
  var _ = this;
  var G__8910 = (function (){return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  })();
  var G__8911 = a;
  var G__8912 = b;
  var G__8913 = c;
  var G__8914 = d;
  var G__8915 = e;
  var G__8916 = f;
  var G__8917 = g;
  var G__8918 = h;
  var G__8919 = i;
  var G__8920 = j;
  var G__8921 = k;
  var G__8922 = l;
  var G__8923 = m;
  var G__8924 = n;
  var G__8925 = o;
  var G__8926 = p;
  var G__8927 = q;
  var G__8928 = r;
  var G__8929 = s;
  var G__8930 = t;
  var G__8931 = rest;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$22 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$22(G__8910,G__8911,G__8912,G__8913,G__8914,G__8915,G__8916,G__8917,G__8918,G__8919,G__8920,G__8921,G__8922,G__8923,G__8924,G__8925,G__8926,G__8927,G__8928,G__8929,G__8930,G__8931) : cljs.core.apply.call(null,G__8910,G__8911,G__8912,G__8913,G__8914,G__8915,G__8916,G__8917,G__8918,G__8919,G__8920,G__8921,G__8922,G__8923,G__8924,G__8925,G__8926,G__8927,G__8928,G__8929,G__8930,G__8931));
  });
  
  cljs.core.Var.prototype.cljs$core$Fn$ = true;
  
  cljs.core.Var.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__._meta;
  });
  
  cljs.core.Var.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (self__.val.cljs$core$IFn$_invoke$arity$0 ? self__.val.cljs$core$IFn$_invoke$arity$0() : self__.val.call(null));
  });
  
  cljs.core.Var.cljs$lang$type = true;
  
  cljs.core.Var.cljs$lang$ctorStr = "cljs.core/Var";
  
  cljs.core.Var.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Var");
  });
  
  cljs.core.__GT_Var = (function __GT_Var(val,sym,_meta){
  return (new cljs.core.Var(val,sym,_meta));
  });
  
  
  
  cljs.core.iterable_QMARK_ = (function iterable_QMARK_(x){
  var G__8934 = x;
  if(G__8934){
  var bit__4489__auto__ = null;
  if(cljs.core.truth_((function (){var or__3808__auto__ = bit__4489__auto__;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return G__8934.cljs$core$IIterable$;
  }
  })())){
  return true;
  } else {
  if((!G__8934.cljs$lang$protocol_mask$partition$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IIterable,G__8934);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IIterable,G__8934);
  }
  });
  cljs.core.clone = (function clone(value){
  return cljs.core._clone(value);
  });
  cljs.core.cloneable_QMARK_ = (function cloneable_QMARK_(value){
  var G__8936 = value;
  if(G__8936){
  var bit__4489__auto__ = (G__8936.cljs$lang$protocol_mask$partition1$ & (8192));
  if((bit__4489__auto__) || (G__8936.cljs$core$ICloneable$)){
  return true;
  } else {
  if((!G__8936.cljs$lang$protocol_mask$partition1$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ICloneable,G__8936);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ICloneable,G__8936);
  }
  });
  /**
  * Returns a seq on the collection. If the collection is
  * empty, returns nil.  (seq nil) returns nil. seq also works on
  * Strings.
  */
  cljs.core.seq = (function seq(coll){
  if((coll == null)){
  return null;
  } else {
  if((function (){var G__8938 = coll;
  if(G__8938){
  var bit__4482__auto__ = (G__8938.cljs$lang$protocol_mask$partition0$ & (8388608));
  if((bit__4482__auto__) || (G__8938.cljs$core$ISeqable$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$ISeqable$_seq$arity$1(null);
  } else {
  if(coll instanceof Array){
  if((coll.length === (0))){
  return null;
  } else {
  return (new cljs.core.IndexedSeq(coll,(0)));
  }
  } else {
  if(typeof coll === 'string'){
  if((coll.length === (0))){
  return null;
  } else {
  return (new cljs.core.IndexedSeq(coll,(0)));
  }
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.ISeqable,coll)){
  return cljs.core._seq(coll);
  } else {
  throw (new Error([cljs.core.str(coll),cljs.core.str(" is not ISeqable")].join('')));
  
  }
  }
  }
  }
  }
  });
  /**
  * Returns the first item in the collection. Calls seq on its
  * argument. If coll is nil, returns nil.
  */
  cljs.core.first = (function first(coll){
  if((coll == null)){
  return null;
  } else {
  if((function (){var G__8940 = coll;
  if(G__8940){
  var bit__4482__auto__ = (G__8940.cljs$lang$protocol_mask$partition0$ & (64));
  if((bit__4482__auto__) || (G__8940.cljs$core$ISeq$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$ISeq$_first$arity$1(null);
  } else {
  var s = cljs.core.seq(coll);
  if((s == null)){
  return null;
  } else {
  return cljs.core._first(s);
  }
  }
  }
  });
  /**
  * Returns a possibly empty seq of the items after the first. Calls seq on its
  * argument.
  */
  cljs.core.rest = (function rest(coll){
  if(!((coll == null))){
  if((function (){var G__8942 = coll;
  if(G__8942){
  var bit__4482__auto__ = (G__8942.cljs$lang$protocol_mask$partition0$ & (64));
  if((bit__4482__auto__) || (G__8942.cljs$core$ISeq$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$ISeq$_rest$arity$1(null);
  } else {
  var s = cljs.core.seq(coll);
  if(s){
  return cljs.core._rest(s);
  } else {
  return cljs.core.List.EMPTY;
  }
  }
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  /**
  * Returns a seq of the items after the first. Calls seq on its
  * argument.  If there are no more items, returns nil
  */
  cljs.core.next = (function next(coll){
  if((coll == null)){
  return null;
  } else {
  if((function (){var G__8944 = coll;
  if(G__8944){
  var bit__4482__auto__ = (G__8944.cljs$lang$protocol_mask$partition0$ & (128));
  if((bit__4482__auto__) || (G__8944.cljs$core$INext$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$INext$_next$arity$1(null);
  } else {
  return cljs.core.seq(cljs.core.rest(coll));
  }
  }
  });
  /**
  * Equality. Returns true if x equals y, false if not. Compares
  * numbers and collections in a type-independent manner.  Clojure's immutable data
  * structures define -equiv (and thus =) as a value, not an identity,
  * comparison.
  * @param {...*} var_args
  */
  cljs.core._EQ_ = (function() {
  var _EQ_ = null;
  var _EQ___1 = (function (x){
  return true;
  });
  var _EQ___2 = (function (x,y){
  if((x == null)){
  return (y == null);
  } else {
  return ((x === y)) || (cljs.core._equiv(x,y));
  }
  });
  var _EQ___3 = (function() { 
  var G__8949__delegate = function (x,y,more){
  while(true){
  if(_EQ_.cljs$core$IFn$_invoke$arity$2(x,y)){
  if(cljs.core.next(more)){
  var G__8950 = y;
  var G__8951 = cljs.core.first(more);
  var G__8952 = cljs.core.next(more);
  x = G__8950;
  y = G__8951;
  more = G__8952;
  continue;
  } else {
  return _EQ_.cljs$core$IFn$_invoke$arity$2(y,cljs.core.first(more));
  }
  } else {
  return false;
  }
  break;
  }
  };
  var G__8949 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__8953__i = 0, G__8953__a = new Array(arguments.length -  2);
  while (G__8953__i < G__8953__a.length) {G__8953__a[G__8953__i] = arguments[G__8953__i + 2]; ++G__8953__i;}
    more = new cljs.core.IndexedSeq(G__8953__a,0);
  } 
  return G__8949__delegate.call(this,x,y,more);};
  G__8949.cljs$lang$maxFixedArity = 2;
  G__8949.cljs$lang$applyTo = (function (arglist__8954){
  var x = cljs.core.first(arglist__8954);
  arglist__8954 = cljs.core.next(arglist__8954);
  var y = cljs.core.first(arglist__8954);
  var more = cljs.core.rest(arglist__8954);
  return G__8949__delegate(x,y,more);
  });
  G__8949.cljs$core$IFn$_invoke$arity$variadic = G__8949__delegate;
  return G__8949;
  })()
  ;
  _EQ_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _EQ___1.call(this,x);
  case 2:
  return _EQ___2.call(this,x,y);
  default:
  var G__8955 = null;
  if (arguments.length > 2) {
  var G__8956__i = 0, G__8956__a = new Array(arguments.length -  2);
  while (G__8956__i < G__8956__a.length) {G__8956__a[G__8956__i] = arguments[G__8956__i + 2]; ++G__8956__i;}
  G__8955 = new cljs.core.IndexedSeq(G__8956__a,0);
  }
  return _EQ___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__8955);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _EQ_.cljs$lang$maxFixedArity = 2;
  _EQ_.cljs$lang$applyTo = _EQ___3.cljs$lang$applyTo;
  _EQ_.cljs$core$IFn$_invoke$arity$1 = _EQ___1;
  _EQ_.cljs$core$IFn$_invoke$arity$2 = _EQ___2;
  _EQ_.cljs$core$IFn$_invoke$arity$variadic = _EQ___3.cljs$core$IFn$_invoke$arity$variadic;
  return _EQ_;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.ES6Iterator = (function (s){
  this.s = s;
  })
  cljs.core.ES6Iterator.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  if(!((self__.s == null))){
  var x = cljs.core.first(self__.s);
  self__.s = cljs.core.next(self__.s);
  
  return {"done": false, "value": x};
  } else {
  return {"done": true, "value": null};
  }
  });
  
  cljs.core.ES6Iterator.cljs$lang$type = true;
  
  cljs.core.ES6Iterator.cljs$lang$ctorStr = "cljs.core/ES6Iterator";
  
  cljs.core.ES6Iterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ES6Iterator");
  });
  
  cljs.core.__GT_ES6Iterator = (function __GT_ES6Iterator(s){
  return (new cljs.core.ES6Iterator(s));
  });
  
  cljs.core.es6_iterator = (function es6_iterator(coll){
  return (new cljs.core.ES6Iterator(cljs.core.seq(coll)));
  });
  
  /**
  * @constructor
  */
  cljs.core.ES6IteratorSeq = (function (value,iter,_rest){
  this.value = value;
  this.iter = iter;
  this._rest = _rest;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 8388672;
  })
  cljs.core.ES6IteratorSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.value;
  });
  
  cljs.core.ES6IteratorSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  if((self__._rest == null)){
  self__._rest = (function (){var G__8957 = self__.iter;
  return (cljs.core.es6_iterator_seq.cljs$core$IFn$_invoke$arity$1 ? cljs.core.es6_iterator_seq.cljs$core$IFn$_invoke$arity$1(G__8957) : cljs.core.es6_iterator_seq.call(null,G__8957));
  })();
  } else {
  }
  
  return self__._rest;
  });
  
  cljs.core.ES6IteratorSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return this$__$1;
  });
  
  cljs.core.ES6IteratorSeq.cljs$lang$type = true;
  
  cljs.core.ES6IteratorSeq.cljs$lang$ctorStr = "cljs.core/ES6IteratorSeq";
  
  cljs.core.ES6IteratorSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ES6IteratorSeq");
  });
  
  cljs.core.__GT_ES6IteratorSeq = (function __GT_ES6IteratorSeq(value,iter,_rest){
  return (new cljs.core.ES6IteratorSeq(value,iter,_rest));
  });
  
  cljs.core.es6_iterator_seq = (function es6_iterator_seq(iter){
  var v = iter.next();
  if(cljs.core.truth_(v.done)){
  return cljs.core.List.EMPTY;
  } else {
  return (new cljs.core.ES6IteratorSeq(v.value,iter,null));
  }
  });
  /**
  * Mix final collection hash for ordered or unordered collections.
  * hash-basis is the combined collection hash, count is the number
  * of elements included in the basis. Note this is the hash code
  * consistent with =, different from .hashCode.
  * See http://clojure.org/data_structures#hash for full algorithms.
  */
  cljs.core.mix_collection_hash = (function mix_collection_hash(hash_basis,count){
  var h1 = cljs.core.m3_seed;
  var k1 = cljs.core.m3_mix_K1(hash_basis);
  var h1__$1 = cljs.core.m3_mix_H1(h1,k1);
  return cljs.core.m3_fmix(h1__$1,count);
  });
  /**
  * Returns the hash code, consistent with =, for an external ordered
  * collection implementing Iterable.
  * See http://clojure.org/data_structures#hash for full algorithms.
  */
  cljs.core.hash_ordered_coll = (function hash_ordered_coll(coll){
  var n = (0);
  var hash_code = (1);
  var coll__$1 = cljs.core.seq(coll);
  while(true){
  if(!((coll__$1 == null))){
  var G__8958 = (n + (1));
  var G__8959 = ((cljs.core.imul((31),hash_code) + cljs.core.hash(cljs.core.first(coll__$1))) | (0));
  var G__8960 = cljs.core.next(coll__$1);
  n = G__8958;
  hash_code = G__8959;
  coll__$1 = G__8960;
  continue;
  } else {
  return cljs.core.mix_collection_hash(hash_code,n);
  }
  break;
  }
  });
  cljs.core.empty_ordered_hash = cljs.core.mix_collection_hash((1),(0));
  /**
  * Returns the hash code, consistent with =, for an external unordered
  * collection implementing Iterable. For maps, the iterator should
  * return map entries whose hash is computed as
  * (hash-ordered-coll [k v]).
  * See http://clojure.org/data_structures#hash for full algorithms.
  */
  cljs.core.hash_unordered_coll = (function hash_unordered_coll(coll){
  var n = (0);
  var hash_code = (0);
  var coll__$1 = cljs.core.seq(coll);
  while(true){
  if(!((coll__$1 == null))){
  var G__8961 = (n + (1));
  var G__8962 = ((hash_code + cljs.core.hash(cljs.core.first(coll__$1))) | (0));
  var G__8963 = cljs.core.next(coll__$1);
  n = G__8961;
  hash_code = G__8962;
  coll__$1 = G__8963;
  continue;
  } else {
  return cljs.core.mix_collection_hash(hash_code,n);
  }
  break;
  }
  });
  cljs.core.empty_unordered_hash = cljs.core.mix_collection_hash((0),(0));
  
  
  (cljs.core.ICounted["null"] = true);
  
  (cljs.core._count["null"] = (function (_){
  return (0);
  }));
  Date.prototype.cljs$core$IEquiv$ = true;
  
  Date.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (o,other){
  var o__$1 = this;
  return ((other instanceof Date)) && ((o__$1.toString() === other.toString()));
  });
  (cljs.core.IEquiv["number"] = true);
  
  (cljs.core._equiv["number"] = (function (x,o){
  return (x === o);
  }));
  (cljs.core.IMeta["function"] = true);
  
  (cljs.core._meta["function"] = (function (_){
  return null;
  }));
  
  (cljs.core.Fn["function"] = true);
  (cljs.core.IHash["_"] = true);
  
  (cljs.core._hash["_"] = (function (o){
  var G__8964 = o;
  return goog.getUid(G__8964);
  }));
  /**
  * Returns a number one greater than num.
  */
  cljs.core.inc = (function inc(x){
  return (x + (1));
  });
  
  /**
  * @constructor
  */
  cljs.core.Reduced = (function (val){
  this.val = val;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32768;
  })
  cljs.core.Reduced.prototype.cljs$core$IDeref$_deref$arity$1 = (function (o){
  var self__ = this;
  var o__$1 = this;
  return self__.val;
  });
  
  cljs.core.Reduced.cljs$lang$type = true;
  
  cljs.core.Reduced.cljs$lang$ctorStr = "cljs.core/Reduced";
  
  cljs.core.Reduced.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Reduced");
  });
  
  cljs.core.__GT_Reduced = (function __GT_Reduced(val){
  return (new cljs.core.Reduced(val));
  });
  
  /**
  * Wraps x in a way such that a reduce will terminate with the value x
  */
  cljs.core.reduced = (function reduced(x){
  return (new cljs.core.Reduced(x));
  });
  /**
  * Returns true if x is the result of a call to reduced
  */
  cljs.core.reduced_QMARK_ = (function reduced_QMARK_(r){
  return (r instanceof cljs.core.Reduced);
  });
  /**
  * If x is already reduced?, returns it, else returns (reduced x)
  */
  cljs.core.ensure_reduced = (function ensure_reduced(x){
  if(cljs.core.reduced_QMARK_(x)){
  return x;
  } else {
  return cljs.core.reduced(x);
  }
  });
  /**
  * If x is reduced?, returns (deref x), else returns x
  */
  cljs.core.unreduced = (function unreduced(x){
  if(cljs.core.reduced_QMARK_(x)){
  var G__8966 = x;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__8966) : cljs.core.deref.call(null,G__8966));
  } else {
  return x;
  }
  });
  cljs.core.deref = (function deref(o){
  return cljs.core._deref(o);
  });
  /**
  * Accepts any collection which satisfies the ICount and IIndexed protocols and
  * reduces them without incurring seq initialization
  */
  cljs.core.ci_reduce = (function() {
  var ci_reduce = null;
  var ci_reduce__2 = (function (cicoll,f){
  var cnt = cljs.core._count(cicoll);
  if((cnt === (0))){
  return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  } else {
  var val = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,(0));
  var n = (1);
  while(true){
  if((n < cnt)){
  var nval = (function (){var G__8973 = val;
  var G__8974 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,n);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__8973,G__8974) : f.call(null,G__8973,G__8974));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__8979 = nval;
  var G__8980 = (n + (1));
  val = G__8979;
  n = G__8980;
  continue;
  }
  } else {
  return val;
  }
  break;
  }
  }
  });
  var ci_reduce__3 = (function (cicoll,f,val){
  var cnt = cljs.core._count(cicoll);
  var val__$1 = val;
  var n = (0);
  while(true){
  if((n < cnt)){
  var nval = (function (){var G__8975 = val__$1;
  var G__8976 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,n);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__8975,G__8976) : f.call(null,G__8975,G__8976));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__8981 = nval;
  var G__8982 = (n + (1));
  val__$1 = G__8981;
  n = G__8982;
  continue;
  }
  } else {
  return val__$1;
  }
  break;
  }
  });
  var ci_reduce__4 = (function (cicoll,f,val,idx){
  var cnt = cljs.core._count(cicoll);
  var val__$1 = val;
  var n = idx;
  while(true){
  if((n < cnt)){
  var nval = (function (){var G__8977 = val__$1;
  var G__8978 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(cicoll,n);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__8977,G__8978) : f.call(null,G__8977,G__8978));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__8983 = nval;
  var G__8984 = (n + (1));
  val__$1 = G__8983;
  n = G__8984;
  continue;
  }
  } else {
  return val__$1;
  }
  break;
  }
  });
  ci_reduce = function(cicoll,f,val,idx){
  switch(arguments.length){
  case 2:
  return ci_reduce__2.call(this,cicoll,f);
  case 3:
  return ci_reduce__3.call(this,cicoll,f,val);
  case 4:
  return ci_reduce__4.call(this,cicoll,f,val,idx);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  ci_reduce.cljs$core$IFn$_invoke$arity$2 = ci_reduce__2;
  ci_reduce.cljs$core$IFn$_invoke$arity$3 = ci_reduce__3;
  ci_reduce.cljs$core$IFn$_invoke$arity$4 = ci_reduce__4;
  return ci_reduce;
  })()
  ;
  cljs.core.array_reduce = (function() {
  var array_reduce = null;
  var array_reduce__2 = (function (arr,f){
  var cnt = arr.length;
  if((arr.length === (0))){
  return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  } else {
  var val = (arr[(0)]);
  var n = (1);
  while(true){
  if((n < cnt)){
  var nval = (function (){var G__8991 = val;
  var G__8992 = (arr[n]);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__8991,G__8992) : f.call(null,G__8991,G__8992));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__8997 = nval;
  var G__8998 = (n + (1));
  val = G__8997;
  n = G__8998;
  continue;
  }
  } else {
  return val;
  }
  break;
  }
  }
  });
  var array_reduce__3 = (function (arr,f,val){
  var cnt = arr.length;
  var val__$1 = val;
  var n = (0);
  while(true){
  if((n < cnt)){
  var nval = (function (){var G__8993 = val__$1;
  var G__8994 = (arr[n]);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__8993,G__8994) : f.call(null,G__8993,G__8994));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__8999 = nval;
  var G__9000 = (n + (1));
  val__$1 = G__8999;
  n = G__9000;
  continue;
  }
  } else {
  return val__$1;
  }
  break;
  }
  });
  var array_reduce__4 = (function (arr,f,val,idx){
  var cnt = arr.length;
  var val__$1 = val;
  var n = idx;
  while(true){
  if((n < cnt)){
  var nval = (function (){var G__8995 = val__$1;
  var G__8996 = (arr[n]);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__8995,G__8996) : f.call(null,G__8995,G__8996));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__9001 = nval;
  var G__9002 = (n + (1));
  val__$1 = G__9001;
  n = G__9002;
  continue;
  }
  } else {
  return val__$1;
  }
  break;
  }
  });
  array_reduce = function(arr,f,val,idx){
  switch(arguments.length){
  case 2:
  return array_reduce__2.call(this,arr,f);
  case 3:
  return array_reduce__3.call(this,arr,f,val);
  case 4:
  return array_reduce__4.call(this,arr,f,val,idx);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  array_reduce.cljs$core$IFn$_invoke$arity$2 = array_reduce__2;
  array_reduce.cljs$core$IFn$_invoke$arity$3 = array_reduce__3;
  array_reduce.cljs$core$IFn$_invoke$arity$4 = array_reduce__4;
  return array_reduce;
  })()
  ;
  
  
  
  /**
  * Returns true if coll implements count in constant time
  */
  cljs.core.counted_QMARK_ = (function counted_QMARK_(x){
  var G__9004 = x;
  if(G__9004){
  var bit__4489__auto__ = (G__9004.cljs$lang$protocol_mask$partition0$ & (2));
  if((bit__4489__auto__) || (G__9004.cljs$core$ICounted$)){
  return true;
  } else {
  if((!G__9004.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ICounted,G__9004);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ICounted,G__9004);
  }
  });
  /**
  * Returns true if coll implements nth in constant time
  */
  cljs.core.indexed_QMARK_ = (function indexed_QMARK_(x){
  var G__9006 = x;
  if(G__9006){
  var bit__4489__auto__ = (G__9006.cljs$lang$protocol_mask$partition0$ & (16));
  if((bit__4489__auto__) || (G__9006.cljs$core$IIndexed$)){
  return true;
  } else {
  if((!G__9006.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,G__9006);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,G__9006);
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.IndexedSeqIterator = (function (arr,i){
  this.arr = arr;
  this.i = i;
  })
  cljs.core.IndexedSeqIterator.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  return (self__.i < self__.arr.length);
  });
  
  cljs.core.IndexedSeqIterator.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  var ret = (self__.arr[self__.i]);
  self__.i = (self__.i + (1));
  
  return ret;
  });
  
  cljs.core.IndexedSeqIterator.cljs$lang$type = true;
  
  cljs.core.IndexedSeqIterator.cljs$lang$ctorStr = "cljs.core/IndexedSeqIterator";
  
  cljs.core.IndexedSeqIterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/IndexedSeqIterator");
  });
  
  cljs.core.__GT_IndexedSeqIterator = (function __GT_IndexedSeqIterator(arr,i){
  return (new cljs.core.IndexedSeqIterator(arr,i));
  });
  
  
  /**
  * @constructor
  */
  cljs.core.IndexedSeq = (function (arr,i){
  this.arr = arr;
  this.i = i;
  this.cljs$lang$protocol_mask$partition0$ = 166199550;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.IndexedSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.IndexedSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
  var self__ = this;
  var coll__$1 = this;
  var i__$1 = (n + self__.i);
  if((i__$1 < self__.arr.length)){
  return (self__.arr[i__$1]);
  } else {
  return null;
  }
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
  var self__ = this;
  var coll__$1 = this;
  var i__$1 = (n + self__.i);
  if((i__$1 < self__.arr.length)){
  return (self__.arr[i__$1]);
  } else {
  return not_found;
  }
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IIterable$ = true;
  
  cljs.core.IndexedSeq.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.IndexedSeqIterator(self__.arr,self__.i));
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.IndexedSeq(self__.arr,self__.i));
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$INext$_next$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  if(((self__.i + (1)) < self__.arr.length)){
  return (new cljs.core.IndexedSeq(self__.arr,(self__.i + (1))));
  } else {
  return null;
  }
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (self__.arr.length - self__.i);
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var c = cljs.core._count(coll__$1);
  if((c > (0))){
  return (new cljs.core.RSeq(coll__$1,(c - (1)),null));
  } else {
  return null;
  }
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.hash_ordered_coll(coll__$1);
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  var G__9007 = coll__$1;
  var G__9008 = other;
  return (cljs.core.equiv_sequential.cljs$core$IFn$_invoke$arity$2 ? cljs.core.equiv_sequential.cljs$core$IFn$_invoke$arity$2(G__9007,G__9008) : cljs.core.equiv_sequential.call(null,G__9007,G__9008));
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.List.EMPTY;
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,(self__.arr[self__.i]),(self__.i + (1)));
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,start,self__.i);
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (self__.arr[self__.i]);
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  if(((self__.i + (1)) < self__.arr.length)){
  return (new cljs.core.IndexedSeq(self__.arr,(self__.i + (1))));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return this$__$1;
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  var G__9009 = o;
  var G__9010 = coll__$1;
  return (cljs.core.cons.cljs$core$IFn$_invoke$arity$2 ? cljs.core.cons.cljs$core$IFn$_invoke$arity$2(G__9009,G__9010) : cljs.core.cons.call(null,G__9009,G__9010));
  });
  
  cljs.core.IndexedSeq.cljs$lang$type = true;
  
  cljs.core.IndexedSeq.cljs$lang$ctorStr = "cljs.core/IndexedSeq";
  
  cljs.core.IndexedSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/IndexedSeq");
  });
  
  cljs.core.__GT_IndexedSeq = (function __GT_IndexedSeq(arr,i){
  return (new cljs.core.IndexedSeq(arr,i));
  });
  
  (cljs.core.IndexedSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.prim_seq = (function() {
  var prim_seq = null;
  var prim_seq__1 = (function (prim){
  return prim_seq.cljs$core$IFn$_invoke$arity$2(prim,(0));
  });
  var prim_seq__2 = (function (prim,i){
  if((i < prim.length)){
  return (new cljs.core.IndexedSeq(prim,i));
  } else {
  return null;
  }
  });
  prim_seq = function(prim,i){
  switch(arguments.length){
  case 1:
  return prim_seq__1.call(this,prim);
  case 2:
  return prim_seq__2.call(this,prim,i);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  prim_seq.cljs$core$IFn$_invoke$arity$1 = prim_seq__1;
  prim_seq.cljs$core$IFn$_invoke$arity$2 = prim_seq__2;
  return prim_seq;
  })()
  ;
  cljs.core.array_seq = (function() {
  var array_seq = null;
  var array_seq__1 = (function (array){
  return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(array,(0));
  });
  var array_seq__2 = (function (array,i){
  return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(array,i);
  });
  array_seq = function(array,i){
  switch(arguments.length){
  case 1:
  return array_seq__1.call(this,array);
  case 2:
  return array_seq__2.call(this,array,i);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  array_seq.cljs$core$IFn$_invoke$arity$1 = array_seq__1;
  array_seq.cljs$core$IFn$_invoke$arity$2 = array_seq__2;
  return array_seq;
  })()
  ;
  
  
  /**
  * @constructor
  */
  cljs.core.RSeq = (function (ci,i,meta){
  this.ci = ci;
  this.i = i;
  this.meta = meta;
  this.cljs$lang$protocol_mask$partition0$ = 32374990;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.RSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.RSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.RSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.RSeq.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.RSeq(self__.ci,self__.i,self__.meta));
  });
  
  cljs.core.RSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.i > (0))){
  return (new cljs.core.RSeq(self__.ci,(self__.i - (1)),null));
  } else {
  return null;
  }
  });
  
  cljs.core.RSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (self__.i + (1));
  });
  
  cljs.core.RSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.hash_ordered_coll(coll__$1);
  });
  
  cljs.core.RSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  var G__9013 = coll__$1;
  var G__9014 = other;
  return (cljs.core.equiv_sequential.cljs$core$IFn$_invoke$arity$2 ? cljs.core.equiv_sequential.cljs$core$IFn$_invoke$arity$2(G__9013,G__9014) : cljs.core.equiv_sequential.call(null,G__9013,G__9014));
  });
  
  cljs.core.RSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var G__9015 = cljs.core.List.EMPTY;
  var G__9016 = self__.meta;
  return (cljs.core.with_meta.cljs$core$IFn$_invoke$arity$2 ? cljs.core.with_meta.cljs$core$IFn$_invoke$arity$2(G__9015,G__9016) : cljs.core.with_meta.call(null,G__9015,G__9016));
  });
  
  cljs.core.RSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (col,f){
  var self__ = this;
  var col__$1 = this;
  var G__9017 = f;
  var G__9018 = col__$1;
  return (cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2 ? cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(G__9017,G__9018) : cljs.core.seq_reduce.call(null,G__9017,G__9018));
  });
  
  cljs.core.RSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (col,f,start){
  var self__ = this;
  var col__$1 = this;
  var G__9019 = f;
  var G__9020 = start;
  var G__9021 = col__$1;
  return (cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3 ? cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(G__9019,G__9020,G__9021) : cljs.core.seq_reduce.call(null,G__9019,G__9020,G__9021));
  });
  
  cljs.core.RSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.ci,self__.i);
  });
  
  cljs.core.RSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.i > (0))){
  return (new cljs.core.RSeq(self__.ci,(self__.i - (1)),null));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.RSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.RSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.RSeq(self__.ci,self__.i,new_meta));
  });
  
  cljs.core.RSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  var G__9022 = o;
  var G__9023 = coll__$1;
  return (cljs.core.cons.cljs$core$IFn$_invoke$arity$2 ? cljs.core.cons.cljs$core$IFn$_invoke$arity$2(G__9022,G__9023) : cljs.core.cons.call(null,G__9022,G__9023));
  });
  
  cljs.core.RSeq.cljs$lang$type = true;
  
  cljs.core.RSeq.cljs$lang$ctorStr = "cljs.core/RSeq";
  
  cljs.core.RSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/RSeq");
  });
  
  cljs.core.__GT_RSeq = (function __GT_RSeq(ci,i,meta){
  return (new cljs.core.RSeq(ci,i,meta));
  });
  
  (cljs.core.RSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * Same as (first (next x))
  */
  cljs.core.second = (function second(coll){
  return cljs.core.first(cljs.core.next(coll));
  });
  /**
  * Same as (first (first x))
  */
  cljs.core.ffirst = (function ffirst(coll){
  return cljs.core.first(cljs.core.first(coll));
  });
  /**
  * Same as (next (first x))
  */
  cljs.core.nfirst = (function nfirst(coll){
  return cljs.core.next(cljs.core.first(coll));
  });
  /**
  * Same as (first (next x))
  */
  cljs.core.fnext = (function fnext(coll){
  return cljs.core.first(cljs.core.next(coll));
  });
  /**
  * Same as (next (next x))
  */
  cljs.core.nnext = (function nnext(coll){
  return cljs.core.next(cljs.core.next(coll));
  });
  /**
  * Return the last item in coll, in linear time
  */
  cljs.core.last = (function last(s){
  while(true){
  var sn = cljs.core.next(s);
  if(!((sn == null))){
  var G__9024 = sn;
  s = G__9024;
  continue;
  } else {
  return cljs.core.first(s);
  }
  break;
  }
  });
  (cljs.core.IEquiv["_"] = true);
  
  (cljs.core._equiv["_"] = (function (x,o){
  return (x === o);
  }));
  /**
  * conj[oin]. Returns a new collection with the xs
  * 'added'. (conj nil item) returns (item).  The 'addition' may
  * happen at different 'places' depending on the concrete type.
  * @param {...*} var_args
  */
  cljs.core.conj = (function() {
  var conj = null;
  var conj__0 = (function (){
  return cljs.core.PersistentVector.EMPTY;
  });
  var conj__1 = (function (coll){
  return coll;
  });
  var conj__2 = (function (coll,x){
  if(!((coll == null))){
  return cljs.core._conj(coll,x);
  } else {
  return cljs.core._conj(cljs.core.List.EMPTY,x);
  }
  });
  var conj__3 = (function() { 
  var G__9029__delegate = function (coll,x,xs){
  while(true){
  if(cljs.core.truth_(xs)){
  var G__9030 = conj.cljs$core$IFn$_invoke$arity$2(coll,x);
  var G__9031 = cljs.core.first(xs);
  var G__9032 = cljs.core.next(xs);
  coll = G__9030;
  x = G__9031;
  xs = G__9032;
  continue;
  } else {
  return conj.cljs$core$IFn$_invoke$arity$2(coll,x);
  }
  break;
  }
  };
  var G__9029 = function (coll,x,var_args){
  var xs = null;
  if (arguments.length > 2) {
  var G__9033__i = 0, G__9033__a = new Array(arguments.length -  2);
  while (G__9033__i < G__9033__a.length) {G__9033__a[G__9033__i] = arguments[G__9033__i + 2]; ++G__9033__i;}
    xs = new cljs.core.IndexedSeq(G__9033__a,0);
  } 
  return G__9029__delegate.call(this,coll,x,xs);};
  G__9029.cljs$lang$maxFixedArity = 2;
  G__9029.cljs$lang$applyTo = (function (arglist__9034){
  var coll = cljs.core.first(arglist__9034);
  arglist__9034 = cljs.core.next(arglist__9034);
  var x = cljs.core.first(arglist__9034);
  var xs = cljs.core.rest(arglist__9034);
  return G__9029__delegate(coll,x,xs);
  });
  G__9029.cljs$core$IFn$_invoke$arity$variadic = G__9029__delegate;
  return G__9029;
  })()
  ;
  conj = function(coll,x,var_args){
  var xs = var_args;
  switch(arguments.length){
  case 0:
  return conj__0.call(this);
  case 1:
  return conj__1.call(this,coll);
  case 2:
  return conj__2.call(this,coll,x);
  default:
  var G__9035 = null;
  if (arguments.length > 2) {
  var G__9036__i = 0, G__9036__a = new Array(arguments.length -  2);
  while (G__9036__i < G__9036__a.length) {G__9036__a[G__9036__i] = arguments[G__9036__i + 2]; ++G__9036__i;}
  G__9035 = new cljs.core.IndexedSeq(G__9036__a,0);
  }
  return conj__3.cljs$core$IFn$_invoke$arity$variadic(coll,x, G__9035);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  conj.cljs$lang$maxFixedArity = 2;
  conj.cljs$lang$applyTo = conj__3.cljs$lang$applyTo;
  conj.cljs$core$IFn$_invoke$arity$0 = conj__0;
  conj.cljs$core$IFn$_invoke$arity$1 = conj__1;
  conj.cljs$core$IFn$_invoke$arity$2 = conj__2;
  conj.cljs$core$IFn$_invoke$arity$variadic = conj__3.cljs$core$IFn$_invoke$arity$variadic;
  return conj;
  })()
  ;
  /**
  * Returns an empty collection of the same category as coll, or nil
  */
  cljs.core.empty = (function empty(coll){
  if((coll == null)){
  return null;
  } else {
  return cljs.core._empty(coll);
  }
  });
  cljs.core.accumulating_seq_count = (function accumulating_seq_count(coll){
  var s = cljs.core.seq(coll);
  var acc = (0);
  while(true){
  if(cljs.core.counted_QMARK_(s)){
  return (acc + cljs.core._count(s));
  } else {
  var G__9037 = cljs.core.next(s);
  var G__9038 = (acc + (1));
  s = G__9037;
  acc = G__9038;
  continue;
  }
  break;
  }
  });
  /**
  * Returns the number of items in the collection. (count nil) returns
  * 0.  Also works on strings, arrays, and Maps
  */
  cljs.core.count = (function count(coll){
  if(!((coll == null))){
  if((function (){var G__9040 = coll;
  if(G__9040){
  var bit__4482__auto__ = (G__9040.cljs$lang$protocol_mask$partition0$ & (2));
  if((bit__4482__auto__) || (G__9040.cljs$core$ICounted$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$ICounted$_count$arity$1(null);
  } else {
  if(coll instanceof Array){
  return coll.length;
  } else {
  if(typeof coll === 'string'){
  return coll.length;
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.ICounted,coll)){
  return cljs.core._count(coll);
  } else {
  return cljs.core.accumulating_seq_count(coll);
  
  }
  }
  }
  }
  } else {
  return (0);
  }
  });
  cljs.core.linear_traversal_nth = (function() {
  var linear_traversal_nth = null;
  var linear_traversal_nth__2 = (function (coll,n){
  while(true){
  if((coll == null)){
  throw (new Error("Index out of bounds"));
  } else {
  if((n === (0))){
  if(cljs.core.seq(coll)){
  return cljs.core.first(coll);
  } else {
  throw (new Error("Index out of bounds"));
  }
  } else {
  if(cljs.core.indexed_QMARK_(coll)){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll,n);
  } else {
  if(cljs.core.seq(coll)){
  var G__9041 = cljs.core.next(coll);
  var G__9042 = (n - (1));
  coll = G__9041;
  n = G__9042;
  continue;
  } else {
  throw (new Error("Index out of bounds"));
  
  }
  }
  }
  }
  break;
  }
  });
  var linear_traversal_nth__3 = (function (coll,n,not_found){
  while(true){
  if((coll == null)){
  return not_found;
  } else {
  if((n === (0))){
  if(cljs.core.seq(coll)){
  return cljs.core.first(coll);
  } else {
  return not_found;
  }
  } else {
  if(cljs.core.indexed_QMARK_(coll)){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(coll,n,not_found);
  } else {
  if(cljs.core.seq(coll)){
  var G__9043 = cljs.core.next(coll);
  var G__9044 = (n - (1));
  var G__9045 = not_found;
  coll = G__9043;
  n = G__9044;
  not_found = G__9045;
  continue;
  } else {
  return not_found;
  
  }
  }
  }
  }
  break;
  }
  });
  linear_traversal_nth = function(coll,n,not_found){
  switch(arguments.length){
  case 2:
  return linear_traversal_nth__2.call(this,coll,n);
  case 3:
  return linear_traversal_nth__3.call(this,coll,n,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  linear_traversal_nth.cljs$core$IFn$_invoke$arity$2 = linear_traversal_nth__2;
  linear_traversal_nth.cljs$core$IFn$_invoke$arity$3 = linear_traversal_nth__3;
  return linear_traversal_nth;
  })()
  ;
  /**
  * Returns the value at the index. get returns nil if index out of
  * bounds, nth throws an exception unless not-found is supplied.  nth
  * also works for strings, arrays, regex Matchers and Lists, and,
  * in O(n) time, for sequences.
  */
  cljs.core.nth = (function() {
  var nth = null;
  var nth__2 = (function (coll,n){
  if(!(typeof n === 'number')){
  throw (new Error("index argument to nth must be a number"));
  } else {
  if((coll == null)){
  return coll;
  } else {
  if((function (){var G__9050 = coll;
  if(G__9050){
  var bit__4482__auto__ = (G__9050.cljs$lang$protocol_mask$partition0$ & (16));
  if((bit__4482__auto__) || (G__9050.cljs$core$IIndexed$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$IIndexed$_nth$arity$2(null,n);
  } else {
  if(coll instanceof Array){
  if((n < coll.length)){
  return (coll[n]);
  } else {
  return null;
  }
  } else {
  if(typeof coll === 'string'){
  if((n < coll.length)){
  return (coll[n]);
  } else {
  return null;
  }
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,coll)){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll,n);
  } else {
  if((function (){var G__9051 = coll;
  if(G__9051){
  var bit__4489__auto__ = (G__9051.cljs$lang$protocol_mask$partition0$ & (64));
  if((bit__4489__auto__) || (G__9051.cljs$core$ISeq$)){
  return true;
  } else {
  if((!G__9051.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,G__9051);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,G__9051);
  }
  })()){
  return cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$2(coll,n);
  } else {
  throw (new Error([cljs.core.str("nth not supported on this type "),cljs.core.str(cljs.core.type__GT_str(cljs.core.type(coll)))].join('')));
  
  }
  }
  }
  }
  }
  }
  }
  });
  var nth__3 = (function (coll,n,not_found){
  if(!(typeof n === 'number')){
  throw (new Error("index argument to nth must be a number."));
  } else {
  if((coll == null)){
  return not_found;
  } else {
  if((function (){var G__9052 = coll;
  if(G__9052){
  var bit__4482__auto__ = (G__9052.cljs$lang$protocol_mask$partition0$ & (16));
  if((bit__4482__auto__) || (G__9052.cljs$core$IIndexed$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$IIndexed$_nth$arity$3(null,n,not_found);
  } else {
  if(coll instanceof Array){
  if((n < coll.length)){
  return (coll[n]);
  } else {
  return not_found;
  }
  } else {
  if(typeof coll === 'string'){
  if((n < coll.length)){
  return (coll[n]);
  } else {
  return not_found;
  }
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.IIndexed,coll)){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll,n);
  } else {
  if((function (){var G__9053 = coll;
  if(G__9053){
  var bit__4489__auto__ = (G__9053.cljs$lang$protocol_mask$partition0$ & (64));
  if((bit__4489__auto__) || (G__9053.cljs$core$ISeq$)){
  return true;
  } else {
  if((!G__9053.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,G__9053);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,G__9053);
  }
  })()){
  return cljs.core.linear_traversal_nth.cljs$core$IFn$_invoke$arity$3(coll,n,not_found);
  } else {
  throw (new Error([cljs.core.str("nth not supported on this type "),cljs.core.str(cljs.core.type__GT_str(cljs.core.type(coll)))].join('')));
  
  }
  }
  }
  }
  }
  }
  }
  });
  nth = function(coll,n,not_found){
  switch(arguments.length){
  case 2:
  return nth__2.call(this,coll,n);
  case 3:
  return nth__3.call(this,coll,n,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  nth.cljs$core$IFn$_invoke$arity$2 = nth__2;
  nth.cljs$core$IFn$_invoke$arity$3 = nth__3;
  return nth;
  })()
  ;
  /**
  * Returns the nth rest of coll, coll when n is 0.
  */
  cljs.core.nthrest = (function nthrest(coll,n){
  var n__$1 = n;
  var xs = coll;
  while(true){
  if(((n__$1 > (0))) && (cljs.core.seq(xs))){
  var G__9054 = (n__$1 - (1));
  var G__9055 = cljs.core.rest(xs);
  n__$1 = G__9054;
  xs = G__9055;
  continue;
  } else {
  return xs;
  }
  break;
  }
  });
  /**
  * Returns the value mapped to key, not-found or nil if key not present.
  */
  cljs.core.get = (function() {
  var get = null;
  var get__2 = (function (o,k){
  if((o == null)){
  return null;
  } else {
  if((function (){var G__9058 = o;
  if(G__9058){
  var bit__4482__auto__ = (G__9058.cljs$lang$protocol_mask$partition0$ & (256));
  if((bit__4482__auto__) || (G__9058.cljs$core$ILookup$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return o.cljs$core$ILookup$_lookup$arity$2(null,k);
  } else {
  if(o instanceof Array){
  if((k < o.length)){
  return (o[k]);
  } else {
  return null;
  }
  } else {
  if(typeof o === 'string'){
  if((k < o.length)){
  return (o[k]);
  } else {
  return null;
  }
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.ILookup,o)){
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$2(o,k);
  } else {
  return null;
  
  }
  }
  }
  }
  }
  });
  var get__3 = (function (o,k,not_found){
  if(!((o == null))){
  if((function (){var G__9059 = o;
  if(G__9059){
  var bit__4482__auto__ = (G__9059.cljs$lang$protocol_mask$partition0$ & (256));
  if((bit__4482__auto__) || (G__9059.cljs$core$ILookup$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return o.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  } else {
  if(o instanceof Array){
  if((k < o.length)){
  return (o[k]);
  } else {
  return not_found;
  }
  } else {
  if(typeof o === 'string'){
  if((k < o.length)){
  return (o[k]);
  } else {
  return not_found;
  }
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.ILookup,o)){
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(o,k,not_found);
  } else {
  return not_found;
  
  }
  }
  }
  }
  } else {
  return not_found;
  }
  });
  get = function(o,k,not_found){
  switch(arguments.length){
  case 2:
  return get__2.call(this,o,k);
  case 3:
  return get__3.call(this,o,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  get.cljs$core$IFn$_invoke$arity$2 = get__2;
  get.cljs$core$IFn$_invoke$arity$3 = get__3;
  return get;
  })()
  ;
  /**
  * assoc[iate]. When applied to a map, returns a new map of the
  * same (hashed/sorted) type, that contains the mapping of key(s) to
  * val(s). When applied to a vector, returns a new vector that
  * contains val at index.
  * @param {...*} var_args
  */
  cljs.core.assoc = (function() {
  var assoc = null;
  var assoc__3 = (function (coll,k,v){
  if(!((coll == null))){
  return cljs.core._assoc(coll,k,v);
  } else {
  return cljs.core.PersistentHashMap.fromArrays([k],[v]);
  }
  });
  var assoc__4 = (function() { 
  var G__9063__delegate = function (coll,k,v,kvs){
  while(true){
  var ret = assoc.cljs$core$IFn$_invoke$arity$3(coll,k,v);
  if(cljs.core.truth_(kvs)){
  var G__9064 = ret;
  var G__9065 = cljs.core.first(kvs);
  var G__9066 = cljs.core.second(kvs);
  var G__9067 = cljs.core.nnext(kvs);
  coll = G__9064;
  k = G__9065;
  v = G__9066;
  kvs = G__9067;
  continue;
  } else {
  return ret;
  }
  break;
  }
  };
  var G__9063 = function (coll,k,v,var_args){
  var kvs = null;
  if (arguments.length > 3) {
  var G__9068__i = 0, G__9068__a = new Array(arguments.length -  3);
  while (G__9068__i < G__9068__a.length) {G__9068__a[G__9068__i] = arguments[G__9068__i + 3]; ++G__9068__i;}
    kvs = new cljs.core.IndexedSeq(G__9068__a,0);
  } 
  return G__9063__delegate.call(this,coll,k,v,kvs);};
  G__9063.cljs$lang$maxFixedArity = 3;
  G__9063.cljs$lang$applyTo = (function (arglist__9069){
  var coll = cljs.core.first(arglist__9069);
  arglist__9069 = cljs.core.next(arglist__9069);
  var k = cljs.core.first(arglist__9069);
  arglist__9069 = cljs.core.next(arglist__9069);
  var v = cljs.core.first(arglist__9069);
  var kvs = cljs.core.rest(arglist__9069);
  return G__9063__delegate(coll,k,v,kvs);
  });
  G__9063.cljs$core$IFn$_invoke$arity$variadic = G__9063__delegate;
  return G__9063;
  })()
  ;
  assoc = function(coll,k,v,var_args){
  var kvs = var_args;
  switch(arguments.length){
  case 3:
  return assoc__3.call(this,coll,k,v);
  default:
  var G__9070 = null;
  if (arguments.length > 3) {
  var G__9071__i = 0, G__9071__a = new Array(arguments.length -  3);
  while (G__9071__i < G__9071__a.length) {G__9071__a[G__9071__i] = arguments[G__9071__i + 3]; ++G__9071__i;}
  G__9070 = new cljs.core.IndexedSeq(G__9071__a,0);
  }
  return assoc__4.cljs$core$IFn$_invoke$arity$variadic(coll,k,v, G__9070);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  assoc.cljs$lang$maxFixedArity = 3;
  assoc.cljs$lang$applyTo = assoc__4.cljs$lang$applyTo;
  assoc.cljs$core$IFn$_invoke$arity$3 = assoc__3;
  assoc.cljs$core$IFn$_invoke$arity$variadic = assoc__4.cljs$core$IFn$_invoke$arity$variadic;
  return assoc;
  })()
  ;
  /**
  * dissoc[iate]. Returns a new map of the same (hashed/sorted) type,
  * that does not contain a mapping for key(s).
  * @param {...*} var_args
  */
  cljs.core.dissoc = (function() {
  var dissoc = null;
  var dissoc__1 = (function (coll){
  return coll;
  });
  var dissoc__2 = (function (coll,k){
  if((coll == null)){
  return null;
  } else {
  return cljs.core._dissoc(coll,k);
  }
  });
  var dissoc__3 = (function() { 
  var G__9074__delegate = function (coll,k,ks){
  while(true){
  if((coll == null)){
  return null;
  } else {
  var ret = dissoc.cljs$core$IFn$_invoke$arity$2(coll,k);
  if(cljs.core.truth_(ks)){
  var G__9075 = ret;
  var G__9076 = cljs.core.first(ks);
  var G__9077 = cljs.core.next(ks);
  coll = G__9075;
  k = G__9076;
  ks = G__9077;
  continue;
  } else {
  return ret;
  }
  }
  break;
  }
  };
  var G__9074 = function (coll,k,var_args){
  var ks = null;
  if (arguments.length > 2) {
  var G__9078__i = 0, G__9078__a = new Array(arguments.length -  2);
  while (G__9078__i < G__9078__a.length) {G__9078__a[G__9078__i] = arguments[G__9078__i + 2]; ++G__9078__i;}
    ks = new cljs.core.IndexedSeq(G__9078__a,0);
  } 
  return G__9074__delegate.call(this,coll,k,ks);};
  G__9074.cljs$lang$maxFixedArity = 2;
  G__9074.cljs$lang$applyTo = (function (arglist__9079){
  var coll = cljs.core.first(arglist__9079);
  arglist__9079 = cljs.core.next(arglist__9079);
  var k = cljs.core.first(arglist__9079);
  var ks = cljs.core.rest(arglist__9079);
  return G__9074__delegate(coll,k,ks);
  });
  G__9074.cljs$core$IFn$_invoke$arity$variadic = G__9074__delegate;
  return G__9074;
  })()
  ;
  dissoc = function(coll,k,var_args){
  var ks = var_args;
  switch(arguments.length){
  case 1:
  return dissoc__1.call(this,coll);
  case 2:
  return dissoc__2.call(this,coll,k);
  default:
  var G__9080 = null;
  if (arguments.length > 2) {
  var G__9081__i = 0, G__9081__a = new Array(arguments.length -  2);
  while (G__9081__i < G__9081__a.length) {G__9081__a[G__9081__i] = arguments[G__9081__i + 2]; ++G__9081__i;}
  G__9080 = new cljs.core.IndexedSeq(G__9081__a,0);
  }
  return dissoc__3.cljs$core$IFn$_invoke$arity$variadic(coll,k, G__9080);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  dissoc.cljs$lang$maxFixedArity = 2;
  dissoc.cljs$lang$applyTo = dissoc__3.cljs$lang$applyTo;
  dissoc.cljs$core$IFn$_invoke$arity$1 = dissoc__1;
  dissoc.cljs$core$IFn$_invoke$arity$2 = dissoc__2;
  dissoc.cljs$core$IFn$_invoke$arity$variadic = dissoc__3.cljs$core$IFn$_invoke$arity$variadic;
  return dissoc;
  })()
  ;
  cljs.core.fn_QMARK_ = (function fn_QMARK_(f){
  var or__3808__auto__ = (function (){var G__9086 = f;
  return goog.isFunction(G__9086);
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var G__9087 = f;
  if(G__9087){
  var bit__4489__auto__ = null;
  if(cljs.core.truth_((function (){var or__3808__auto____$1 = bit__4489__auto__;
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  return G__9087.cljs$core$Fn$;
  }
  })())){
  return true;
  } else {
  if((!G__9087.cljs$lang$protocol_mask$partition$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.Fn,G__9087);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.Fn,G__9087);
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.MetaFn = (function (afn,meta){
  this.afn = afn;
  this.meta = meta;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 393217;
  })
  cljs.core.MetaFn.prototype.call = (function() {
  var G__9553 = null;
  var G__9553__1 = (function (self__){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  return (self__.afn.cljs$core$IFn$_invoke$arity$0 ? self__.afn.cljs$core$IFn$_invoke$arity$0() : self__.afn.call(null));
  });
  var G__9553__2 = (function (self__,a){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9089 = a;
  return (self__.afn.cljs$core$IFn$_invoke$arity$1 ? self__.afn.cljs$core$IFn$_invoke$arity$1(G__9089) : self__.afn.call(null,G__9089));
  });
  var G__9553__3 = (function (self__,a,b){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9090 = a;
  var G__9091 = b;
  return (self__.afn.cljs$core$IFn$_invoke$arity$2 ? self__.afn.cljs$core$IFn$_invoke$arity$2(G__9090,G__9091) : self__.afn.call(null,G__9090,G__9091));
  });
  var G__9553__4 = (function (self__,a,b,c){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9092 = a;
  var G__9093 = b;
  var G__9094 = c;
  return (self__.afn.cljs$core$IFn$_invoke$arity$3 ? self__.afn.cljs$core$IFn$_invoke$arity$3(G__9092,G__9093,G__9094) : self__.afn.call(null,G__9092,G__9093,G__9094));
  });
  var G__9553__5 = (function (self__,a,b,c,d){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9095 = a;
  var G__9096 = b;
  var G__9097 = c;
  var G__9098 = d;
  return (self__.afn.cljs$core$IFn$_invoke$arity$4 ? self__.afn.cljs$core$IFn$_invoke$arity$4(G__9095,G__9096,G__9097,G__9098) : self__.afn.call(null,G__9095,G__9096,G__9097,G__9098));
  });
  var G__9553__6 = (function (self__,a,b,c,d,e){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9099 = a;
  var G__9100 = b;
  var G__9101 = c;
  var G__9102 = d;
  var G__9103 = e;
  return (self__.afn.cljs$core$IFn$_invoke$arity$5 ? self__.afn.cljs$core$IFn$_invoke$arity$5(G__9099,G__9100,G__9101,G__9102,G__9103) : self__.afn.call(null,G__9099,G__9100,G__9101,G__9102,G__9103));
  });
  var G__9553__7 = (function (self__,a,b,c,d,e,f){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9104 = a;
  var G__9105 = b;
  var G__9106 = c;
  var G__9107 = d;
  var G__9108 = e;
  var G__9109 = f;
  return (self__.afn.cljs$core$IFn$_invoke$arity$6 ? self__.afn.cljs$core$IFn$_invoke$arity$6(G__9104,G__9105,G__9106,G__9107,G__9108,G__9109) : self__.afn.call(null,G__9104,G__9105,G__9106,G__9107,G__9108,G__9109));
  });
  var G__9553__8 = (function (self__,a,b,c,d,e,f,g){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9110 = a;
  var G__9111 = b;
  var G__9112 = c;
  var G__9113 = d;
  var G__9114 = e;
  var G__9115 = f;
  var G__9116 = g;
  return (self__.afn.cljs$core$IFn$_invoke$arity$7 ? self__.afn.cljs$core$IFn$_invoke$arity$7(G__9110,G__9111,G__9112,G__9113,G__9114,G__9115,G__9116) : self__.afn.call(null,G__9110,G__9111,G__9112,G__9113,G__9114,G__9115,G__9116));
  });
  var G__9553__9 = (function (self__,a,b,c,d,e,f,g,h){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9117 = a;
  var G__9118 = b;
  var G__9119 = c;
  var G__9120 = d;
  var G__9121 = e;
  var G__9122 = f;
  var G__9123 = g;
  var G__9124 = h;
  return (self__.afn.cljs$core$IFn$_invoke$arity$8 ? self__.afn.cljs$core$IFn$_invoke$arity$8(G__9117,G__9118,G__9119,G__9120,G__9121,G__9122,G__9123,G__9124) : self__.afn.call(null,G__9117,G__9118,G__9119,G__9120,G__9121,G__9122,G__9123,G__9124));
  });
  var G__9553__10 = (function (self__,a,b,c,d,e,f,g,h,i){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9125 = a;
  var G__9126 = b;
  var G__9127 = c;
  var G__9128 = d;
  var G__9129 = e;
  var G__9130 = f;
  var G__9131 = g;
  var G__9132 = h;
  var G__9133 = i;
  return (self__.afn.cljs$core$IFn$_invoke$arity$9 ? self__.afn.cljs$core$IFn$_invoke$arity$9(G__9125,G__9126,G__9127,G__9128,G__9129,G__9130,G__9131,G__9132,G__9133) : self__.afn.call(null,G__9125,G__9126,G__9127,G__9128,G__9129,G__9130,G__9131,G__9132,G__9133));
  });
  var G__9553__11 = (function (self__,a,b,c,d,e,f,g,h,i,j){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9134 = a;
  var G__9135 = b;
  var G__9136 = c;
  var G__9137 = d;
  var G__9138 = e;
  var G__9139 = f;
  var G__9140 = g;
  var G__9141 = h;
  var G__9142 = i;
  var G__9143 = j;
  return (self__.afn.cljs$core$IFn$_invoke$arity$10 ? self__.afn.cljs$core$IFn$_invoke$arity$10(G__9134,G__9135,G__9136,G__9137,G__9138,G__9139,G__9140,G__9141,G__9142,G__9143) : self__.afn.call(null,G__9134,G__9135,G__9136,G__9137,G__9138,G__9139,G__9140,G__9141,G__9142,G__9143));
  });
  var G__9553__12 = (function (self__,a,b,c,d,e,f,g,h,i,j,k){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9144 = a;
  var G__9145 = b;
  var G__9146 = c;
  var G__9147 = d;
  var G__9148 = e;
  var G__9149 = f;
  var G__9150 = g;
  var G__9151 = h;
  var G__9152 = i;
  var G__9153 = j;
  var G__9154 = k;
  return (self__.afn.cljs$core$IFn$_invoke$arity$11 ? self__.afn.cljs$core$IFn$_invoke$arity$11(G__9144,G__9145,G__9146,G__9147,G__9148,G__9149,G__9150,G__9151,G__9152,G__9153,G__9154) : self__.afn.call(null,G__9144,G__9145,G__9146,G__9147,G__9148,G__9149,G__9150,G__9151,G__9152,G__9153,G__9154));
  });
  var G__9553__13 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9155 = a;
  var G__9156 = b;
  var G__9157 = c;
  var G__9158 = d;
  var G__9159 = e;
  var G__9160 = f;
  var G__9161 = g;
  var G__9162 = h;
  var G__9163 = i;
  var G__9164 = j;
  var G__9165 = k;
  var G__9166 = l;
  return (self__.afn.cljs$core$IFn$_invoke$arity$12 ? self__.afn.cljs$core$IFn$_invoke$arity$12(G__9155,G__9156,G__9157,G__9158,G__9159,G__9160,G__9161,G__9162,G__9163,G__9164,G__9165,G__9166) : self__.afn.call(null,G__9155,G__9156,G__9157,G__9158,G__9159,G__9160,G__9161,G__9162,G__9163,G__9164,G__9165,G__9166));
  });
  var G__9553__14 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9167 = a;
  var G__9168 = b;
  var G__9169 = c;
  var G__9170 = d;
  var G__9171 = e;
  var G__9172 = f;
  var G__9173 = g;
  var G__9174 = h;
  var G__9175 = i;
  var G__9176 = j;
  var G__9177 = k;
  var G__9178 = l;
  var G__9179 = m;
  return (self__.afn.cljs$core$IFn$_invoke$arity$13 ? self__.afn.cljs$core$IFn$_invoke$arity$13(G__9167,G__9168,G__9169,G__9170,G__9171,G__9172,G__9173,G__9174,G__9175,G__9176,G__9177,G__9178,G__9179) : self__.afn.call(null,G__9167,G__9168,G__9169,G__9170,G__9171,G__9172,G__9173,G__9174,G__9175,G__9176,G__9177,G__9178,G__9179));
  });
  var G__9553__15 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9180 = a;
  var G__9181 = b;
  var G__9182 = c;
  var G__9183 = d;
  var G__9184 = e;
  var G__9185 = f;
  var G__9186 = g;
  var G__9187 = h;
  var G__9188 = i;
  var G__9189 = j;
  var G__9190 = k;
  var G__9191 = l;
  var G__9192 = m;
  var G__9193 = n;
  return (self__.afn.cljs$core$IFn$_invoke$arity$14 ? self__.afn.cljs$core$IFn$_invoke$arity$14(G__9180,G__9181,G__9182,G__9183,G__9184,G__9185,G__9186,G__9187,G__9188,G__9189,G__9190,G__9191,G__9192,G__9193) : self__.afn.call(null,G__9180,G__9181,G__9182,G__9183,G__9184,G__9185,G__9186,G__9187,G__9188,G__9189,G__9190,G__9191,G__9192,G__9193));
  });
  var G__9553__16 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9194 = a;
  var G__9195 = b;
  var G__9196 = c;
  var G__9197 = d;
  var G__9198 = e;
  var G__9199 = f;
  var G__9200 = g;
  var G__9201 = h;
  var G__9202 = i;
  var G__9203 = j;
  var G__9204 = k;
  var G__9205 = l;
  var G__9206 = m;
  var G__9207 = n;
  var G__9208 = o;
  return (self__.afn.cljs$core$IFn$_invoke$arity$15 ? self__.afn.cljs$core$IFn$_invoke$arity$15(G__9194,G__9195,G__9196,G__9197,G__9198,G__9199,G__9200,G__9201,G__9202,G__9203,G__9204,G__9205,G__9206,G__9207,G__9208) : self__.afn.call(null,G__9194,G__9195,G__9196,G__9197,G__9198,G__9199,G__9200,G__9201,G__9202,G__9203,G__9204,G__9205,G__9206,G__9207,G__9208));
  });
  var G__9553__17 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9209 = a;
  var G__9210 = b;
  var G__9211 = c;
  var G__9212 = d;
  var G__9213 = e;
  var G__9214 = f;
  var G__9215 = g;
  var G__9216 = h;
  var G__9217 = i;
  var G__9218 = j;
  var G__9219 = k;
  var G__9220 = l;
  var G__9221 = m;
  var G__9222 = n;
  var G__9223 = o;
  var G__9224 = p;
  return (self__.afn.cljs$core$IFn$_invoke$arity$16 ? self__.afn.cljs$core$IFn$_invoke$arity$16(G__9209,G__9210,G__9211,G__9212,G__9213,G__9214,G__9215,G__9216,G__9217,G__9218,G__9219,G__9220,G__9221,G__9222,G__9223,G__9224) : self__.afn.call(null,G__9209,G__9210,G__9211,G__9212,G__9213,G__9214,G__9215,G__9216,G__9217,G__9218,G__9219,G__9220,G__9221,G__9222,G__9223,G__9224));
  });
  var G__9553__18 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9225 = a;
  var G__9226 = b;
  var G__9227 = c;
  var G__9228 = d;
  var G__9229 = e;
  var G__9230 = f;
  var G__9231 = g;
  var G__9232 = h;
  var G__9233 = i;
  var G__9234 = j;
  var G__9235 = k;
  var G__9236 = l;
  var G__9237 = m;
  var G__9238 = n;
  var G__9239 = o;
  var G__9240 = p;
  var G__9241 = q;
  return (self__.afn.cljs$core$IFn$_invoke$arity$17 ? self__.afn.cljs$core$IFn$_invoke$arity$17(G__9225,G__9226,G__9227,G__9228,G__9229,G__9230,G__9231,G__9232,G__9233,G__9234,G__9235,G__9236,G__9237,G__9238,G__9239,G__9240,G__9241) : self__.afn.call(null,G__9225,G__9226,G__9227,G__9228,G__9229,G__9230,G__9231,G__9232,G__9233,G__9234,G__9235,G__9236,G__9237,G__9238,G__9239,G__9240,G__9241));
  });
  var G__9553__19 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9242 = a;
  var G__9243 = b;
  var G__9244 = c;
  var G__9245 = d;
  var G__9246 = e;
  var G__9247 = f;
  var G__9248 = g;
  var G__9249 = h;
  var G__9250 = i;
  var G__9251 = j;
  var G__9252 = k;
  var G__9253 = l;
  var G__9254 = m;
  var G__9255 = n;
  var G__9256 = o;
  var G__9257 = p;
  var G__9258 = q;
  var G__9259 = r;
  return (self__.afn.cljs$core$IFn$_invoke$arity$18 ? self__.afn.cljs$core$IFn$_invoke$arity$18(G__9242,G__9243,G__9244,G__9245,G__9246,G__9247,G__9248,G__9249,G__9250,G__9251,G__9252,G__9253,G__9254,G__9255,G__9256,G__9257,G__9258,G__9259) : self__.afn.call(null,G__9242,G__9243,G__9244,G__9245,G__9246,G__9247,G__9248,G__9249,G__9250,G__9251,G__9252,G__9253,G__9254,G__9255,G__9256,G__9257,G__9258,G__9259));
  });
  var G__9553__20 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9260 = a;
  var G__9261 = b;
  var G__9262 = c;
  var G__9263 = d;
  var G__9264 = e;
  var G__9265 = f;
  var G__9266 = g;
  var G__9267 = h;
  var G__9268 = i;
  var G__9269 = j;
  var G__9270 = k;
  var G__9271 = l;
  var G__9272 = m;
  var G__9273 = n;
  var G__9274 = o;
  var G__9275 = p;
  var G__9276 = q;
  var G__9277 = r;
  var G__9278 = s;
  return (self__.afn.cljs$core$IFn$_invoke$arity$19 ? self__.afn.cljs$core$IFn$_invoke$arity$19(G__9260,G__9261,G__9262,G__9263,G__9264,G__9265,G__9266,G__9267,G__9268,G__9269,G__9270,G__9271,G__9272,G__9273,G__9274,G__9275,G__9276,G__9277,G__9278) : self__.afn.call(null,G__9260,G__9261,G__9262,G__9263,G__9264,G__9265,G__9266,G__9267,G__9268,G__9269,G__9270,G__9271,G__9272,G__9273,G__9274,G__9275,G__9276,G__9277,G__9278));
  });
  var G__9553__21 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9279 = a;
  var G__9280 = b;
  var G__9281 = c;
  var G__9282 = d;
  var G__9283 = e;
  var G__9284 = f;
  var G__9285 = g;
  var G__9286 = h;
  var G__9287 = i;
  var G__9288 = j;
  var G__9289 = k;
  var G__9290 = l;
  var G__9291 = m;
  var G__9292 = n;
  var G__9293 = o;
  var G__9294 = p;
  var G__9295 = q;
  var G__9296 = r;
  var G__9297 = s;
  var G__9298 = t;
  return (self__.afn.cljs$core$IFn$_invoke$arity$20 ? self__.afn.cljs$core$IFn$_invoke$arity$20(G__9279,G__9280,G__9281,G__9282,G__9283,G__9284,G__9285,G__9286,G__9287,G__9288,G__9289,G__9290,G__9291,G__9292,G__9293,G__9294,G__9295,G__9296,G__9297,G__9298) : self__.afn.call(null,G__9279,G__9280,G__9281,G__9282,G__9283,G__9284,G__9285,G__9286,G__9287,G__9288,G__9289,G__9290,G__9291,G__9292,G__9293,G__9294,G__9295,G__9296,G__9297,G__9298));
  });
  var G__9553__22 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  var self__ = this;
  var self____$1 = this;
  var _ = self____$1;
  var G__9299 = self__.afn;
  var G__9300 = a;
  var G__9301 = b;
  var G__9302 = c;
  var G__9303 = d;
  var G__9304 = e;
  var G__9305 = f;
  var G__9306 = g;
  var G__9307 = h;
  var G__9308 = i;
  var G__9309 = j;
  var G__9310 = k;
  var G__9311 = l;
  var G__9312 = m;
  var G__9313 = n;
  var G__9314 = o;
  var G__9315 = p;
  var G__9316 = q;
  var G__9317 = r;
  var G__9318 = s;
  var G__9319 = t;
  var G__9320 = rest;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$22 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$22(G__9299,G__9300,G__9301,G__9302,G__9303,G__9304,G__9305,G__9306,G__9307,G__9308,G__9309,G__9310,G__9311,G__9312,G__9313,G__9314,G__9315,G__9316,G__9317,G__9318,G__9319,G__9320) : cljs.core.apply.call(null,G__9299,G__9300,G__9301,G__9302,G__9303,G__9304,G__9305,G__9306,G__9307,G__9308,G__9309,G__9310,G__9311,G__9312,G__9313,G__9314,G__9315,G__9316,G__9317,G__9318,G__9319,G__9320));
  });
  G__9553 = function(self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  switch(arguments.length){
  case 1:
  return G__9553__1.call(this,self__);
  case 2:
  return G__9553__2.call(this,self__,a);
  case 3:
  return G__9553__3.call(this,self__,a,b);
  case 4:
  return G__9553__4.call(this,self__,a,b,c);
  case 5:
  return G__9553__5.call(this,self__,a,b,c,d);
  case 6:
  return G__9553__6.call(this,self__,a,b,c,d,e);
  case 7:
  return G__9553__7.call(this,self__,a,b,c,d,e,f);
  case 8:
  return G__9553__8.call(this,self__,a,b,c,d,e,f,g);
  case 9:
  return G__9553__9.call(this,self__,a,b,c,d,e,f,g,h);
  case 10:
  return G__9553__10.call(this,self__,a,b,c,d,e,f,g,h,i);
  case 11:
  return G__9553__11.call(this,self__,a,b,c,d,e,f,g,h,i,j);
  case 12:
  return G__9553__12.call(this,self__,a,b,c,d,e,f,g,h,i,j,k);
  case 13:
  return G__9553__13.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l);
  case 14:
  return G__9553__14.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m);
  case 15:
  return G__9553__15.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  case 16:
  return G__9553__16.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  case 17:
  return G__9553__17.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  case 18:
  return G__9553__18.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  case 19:
  return G__9553__19.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  case 20:
  return G__9553__20.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  case 21:
  return G__9553__21.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  case 22:
  return G__9553__22.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__9553.cljs$core$IFn$_invoke$arity$1 = G__9553__1;
  G__9553.cljs$core$IFn$_invoke$arity$2 = G__9553__2;
  G__9553.cljs$core$IFn$_invoke$arity$3 = G__9553__3;
  G__9553.cljs$core$IFn$_invoke$arity$4 = G__9553__4;
  G__9553.cljs$core$IFn$_invoke$arity$5 = G__9553__5;
  G__9553.cljs$core$IFn$_invoke$arity$6 = G__9553__6;
  G__9553.cljs$core$IFn$_invoke$arity$7 = G__9553__7;
  G__9553.cljs$core$IFn$_invoke$arity$8 = G__9553__8;
  G__9553.cljs$core$IFn$_invoke$arity$9 = G__9553__9;
  G__9553.cljs$core$IFn$_invoke$arity$10 = G__9553__10;
  G__9553.cljs$core$IFn$_invoke$arity$11 = G__9553__11;
  G__9553.cljs$core$IFn$_invoke$arity$12 = G__9553__12;
  G__9553.cljs$core$IFn$_invoke$arity$13 = G__9553__13;
  G__9553.cljs$core$IFn$_invoke$arity$14 = G__9553__14;
  G__9553.cljs$core$IFn$_invoke$arity$15 = G__9553__15;
  G__9553.cljs$core$IFn$_invoke$arity$16 = G__9553__16;
  G__9553.cljs$core$IFn$_invoke$arity$17 = G__9553__17;
  G__9553.cljs$core$IFn$_invoke$arity$18 = G__9553__18;
  G__9553.cljs$core$IFn$_invoke$arity$19 = G__9553__19;
  G__9553.cljs$core$IFn$_invoke$arity$20 = G__9553__20;
  G__9553.cljs$core$IFn$_invoke$arity$21 = G__9553__21;
  G__9553.cljs$core$IFn$_invoke$arity$22 = G__9553__22;
  return G__9553;
  })()
  ;
  
  cljs.core.MetaFn.prototype.apply = (function (self__,args9088){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args9088)));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$0 = (function (){
  var self__ = this;
  var _ = this;
  return (self__.afn.cljs$core$IFn$_invoke$arity$0 ? self__.afn.cljs$core$IFn$_invoke$arity$0() : self__.afn.call(null));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$1 = (function (a){
  var self__ = this;
  var _ = this;
  var G__9321 = a;
  return (self__.afn.cljs$core$IFn$_invoke$arity$1 ? self__.afn.cljs$core$IFn$_invoke$arity$1(G__9321) : self__.afn.call(null,G__9321));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
  var self__ = this;
  var _ = this;
  var G__9322 = a;
  var G__9323 = b;
  return (self__.afn.cljs$core$IFn$_invoke$arity$2 ? self__.afn.cljs$core$IFn$_invoke$arity$2(G__9322,G__9323) : self__.afn.call(null,G__9322,G__9323));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$3 = (function (a,b,c){
  var self__ = this;
  var _ = this;
  var G__9324 = a;
  var G__9325 = b;
  var G__9326 = c;
  return (self__.afn.cljs$core$IFn$_invoke$arity$3 ? self__.afn.cljs$core$IFn$_invoke$arity$3(G__9324,G__9325,G__9326) : self__.afn.call(null,G__9324,G__9325,G__9326));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,d){
  var self__ = this;
  var _ = this;
  var G__9327 = a;
  var G__9328 = b;
  var G__9329 = c;
  var G__9330 = d;
  return (self__.afn.cljs$core$IFn$_invoke$arity$4 ? self__.afn.cljs$core$IFn$_invoke$arity$4(G__9327,G__9328,G__9329,G__9330) : self__.afn.call(null,G__9327,G__9328,G__9329,G__9330));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$5 = (function (a,b,c,d,e){
  var self__ = this;
  var _ = this;
  var G__9331 = a;
  var G__9332 = b;
  var G__9333 = c;
  var G__9334 = d;
  var G__9335 = e;
  return (self__.afn.cljs$core$IFn$_invoke$arity$5 ? self__.afn.cljs$core$IFn$_invoke$arity$5(G__9331,G__9332,G__9333,G__9334,G__9335) : self__.afn.call(null,G__9331,G__9332,G__9333,G__9334,G__9335));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$6 = (function (a,b,c,d,e,f){
  var self__ = this;
  var _ = this;
  var G__9336 = a;
  var G__9337 = b;
  var G__9338 = c;
  var G__9339 = d;
  var G__9340 = e;
  var G__9341 = f;
  return (self__.afn.cljs$core$IFn$_invoke$arity$6 ? self__.afn.cljs$core$IFn$_invoke$arity$6(G__9336,G__9337,G__9338,G__9339,G__9340,G__9341) : self__.afn.call(null,G__9336,G__9337,G__9338,G__9339,G__9340,G__9341));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$7 = (function (a,b,c,d,e,f,g){
  var self__ = this;
  var _ = this;
  var G__9342 = a;
  var G__9343 = b;
  var G__9344 = c;
  var G__9345 = d;
  var G__9346 = e;
  var G__9347 = f;
  var G__9348 = g;
  return (self__.afn.cljs$core$IFn$_invoke$arity$7 ? self__.afn.cljs$core$IFn$_invoke$arity$7(G__9342,G__9343,G__9344,G__9345,G__9346,G__9347,G__9348) : self__.afn.call(null,G__9342,G__9343,G__9344,G__9345,G__9346,G__9347,G__9348));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$8 = (function (a,b,c,d,e,f,g,h){
  var self__ = this;
  var _ = this;
  var G__9349 = a;
  var G__9350 = b;
  var G__9351 = c;
  var G__9352 = d;
  var G__9353 = e;
  var G__9354 = f;
  var G__9355 = g;
  var G__9356 = h;
  return (self__.afn.cljs$core$IFn$_invoke$arity$8 ? self__.afn.cljs$core$IFn$_invoke$arity$8(G__9349,G__9350,G__9351,G__9352,G__9353,G__9354,G__9355,G__9356) : self__.afn.call(null,G__9349,G__9350,G__9351,G__9352,G__9353,G__9354,G__9355,G__9356));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$9 = (function (a,b,c,d,e,f,g,h,i){
  var self__ = this;
  var _ = this;
  var G__9357 = a;
  var G__9358 = b;
  var G__9359 = c;
  var G__9360 = d;
  var G__9361 = e;
  var G__9362 = f;
  var G__9363 = g;
  var G__9364 = h;
  var G__9365 = i;
  return (self__.afn.cljs$core$IFn$_invoke$arity$9 ? self__.afn.cljs$core$IFn$_invoke$arity$9(G__9357,G__9358,G__9359,G__9360,G__9361,G__9362,G__9363,G__9364,G__9365) : self__.afn.call(null,G__9357,G__9358,G__9359,G__9360,G__9361,G__9362,G__9363,G__9364,G__9365));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$10 = (function (a,b,c,d,e,f,g,h,i,j){
  var self__ = this;
  var _ = this;
  var G__9366 = a;
  var G__9367 = b;
  var G__9368 = c;
  var G__9369 = d;
  var G__9370 = e;
  var G__9371 = f;
  var G__9372 = g;
  var G__9373 = h;
  var G__9374 = i;
  var G__9375 = j;
  return (self__.afn.cljs$core$IFn$_invoke$arity$10 ? self__.afn.cljs$core$IFn$_invoke$arity$10(G__9366,G__9367,G__9368,G__9369,G__9370,G__9371,G__9372,G__9373,G__9374,G__9375) : self__.afn.call(null,G__9366,G__9367,G__9368,G__9369,G__9370,G__9371,G__9372,G__9373,G__9374,G__9375));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$11 = (function (a,b,c,d,e,f,g,h,i,j,k){
  var self__ = this;
  var _ = this;
  var G__9376 = a;
  var G__9377 = b;
  var G__9378 = c;
  var G__9379 = d;
  var G__9380 = e;
  var G__9381 = f;
  var G__9382 = g;
  var G__9383 = h;
  var G__9384 = i;
  var G__9385 = j;
  var G__9386 = k;
  return (self__.afn.cljs$core$IFn$_invoke$arity$11 ? self__.afn.cljs$core$IFn$_invoke$arity$11(G__9376,G__9377,G__9378,G__9379,G__9380,G__9381,G__9382,G__9383,G__9384,G__9385,G__9386) : self__.afn.call(null,G__9376,G__9377,G__9378,G__9379,G__9380,G__9381,G__9382,G__9383,G__9384,G__9385,G__9386));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$12 = (function (a,b,c,d,e,f,g,h,i,j,k,l){
  var self__ = this;
  var _ = this;
  var G__9387 = a;
  var G__9388 = b;
  var G__9389 = c;
  var G__9390 = d;
  var G__9391 = e;
  var G__9392 = f;
  var G__9393 = g;
  var G__9394 = h;
  var G__9395 = i;
  var G__9396 = j;
  var G__9397 = k;
  var G__9398 = l;
  return (self__.afn.cljs$core$IFn$_invoke$arity$12 ? self__.afn.cljs$core$IFn$_invoke$arity$12(G__9387,G__9388,G__9389,G__9390,G__9391,G__9392,G__9393,G__9394,G__9395,G__9396,G__9397,G__9398) : self__.afn.call(null,G__9387,G__9388,G__9389,G__9390,G__9391,G__9392,G__9393,G__9394,G__9395,G__9396,G__9397,G__9398));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$13 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m){
  var self__ = this;
  var _ = this;
  var G__9399 = a;
  var G__9400 = b;
  var G__9401 = c;
  var G__9402 = d;
  var G__9403 = e;
  var G__9404 = f;
  var G__9405 = g;
  var G__9406 = h;
  var G__9407 = i;
  var G__9408 = j;
  var G__9409 = k;
  var G__9410 = l;
  var G__9411 = m;
  return (self__.afn.cljs$core$IFn$_invoke$arity$13 ? self__.afn.cljs$core$IFn$_invoke$arity$13(G__9399,G__9400,G__9401,G__9402,G__9403,G__9404,G__9405,G__9406,G__9407,G__9408,G__9409,G__9410,G__9411) : self__.afn.call(null,G__9399,G__9400,G__9401,G__9402,G__9403,G__9404,G__9405,G__9406,G__9407,G__9408,G__9409,G__9410,G__9411));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$14 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  var self__ = this;
  var _ = this;
  var G__9412 = a;
  var G__9413 = b;
  var G__9414 = c;
  var G__9415 = d;
  var G__9416 = e;
  var G__9417 = f;
  var G__9418 = g;
  var G__9419 = h;
  var G__9420 = i;
  var G__9421 = j;
  var G__9422 = k;
  var G__9423 = l;
  var G__9424 = m;
  var G__9425 = n;
  return (self__.afn.cljs$core$IFn$_invoke$arity$14 ? self__.afn.cljs$core$IFn$_invoke$arity$14(G__9412,G__9413,G__9414,G__9415,G__9416,G__9417,G__9418,G__9419,G__9420,G__9421,G__9422,G__9423,G__9424,G__9425) : self__.afn.call(null,G__9412,G__9413,G__9414,G__9415,G__9416,G__9417,G__9418,G__9419,G__9420,G__9421,G__9422,G__9423,G__9424,G__9425));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$15 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  var self__ = this;
  var _ = this;
  var G__9426 = a;
  var G__9427 = b;
  var G__9428 = c;
  var G__9429 = d;
  var G__9430 = e;
  var G__9431 = f;
  var G__9432 = g;
  var G__9433 = h;
  var G__9434 = i;
  var G__9435 = j;
  var G__9436 = k;
  var G__9437 = l;
  var G__9438 = m;
  var G__9439 = n;
  var G__9440 = o;
  return (self__.afn.cljs$core$IFn$_invoke$arity$15 ? self__.afn.cljs$core$IFn$_invoke$arity$15(G__9426,G__9427,G__9428,G__9429,G__9430,G__9431,G__9432,G__9433,G__9434,G__9435,G__9436,G__9437,G__9438,G__9439,G__9440) : self__.afn.call(null,G__9426,G__9427,G__9428,G__9429,G__9430,G__9431,G__9432,G__9433,G__9434,G__9435,G__9436,G__9437,G__9438,G__9439,G__9440));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$16 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  var self__ = this;
  var _ = this;
  var G__9441 = a;
  var G__9442 = b;
  var G__9443 = c;
  var G__9444 = d;
  var G__9445 = e;
  var G__9446 = f;
  var G__9447 = g;
  var G__9448 = h;
  var G__9449 = i;
  var G__9450 = j;
  var G__9451 = k;
  var G__9452 = l;
  var G__9453 = m;
  var G__9454 = n;
  var G__9455 = o;
  var G__9456 = p;
  return (self__.afn.cljs$core$IFn$_invoke$arity$16 ? self__.afn.cljs$core$IFn$_invoke$arity$16(G__9441,G__9442,G__9443,G__9444,G__9445,G__9446,G__9447,G__9448,G__9449,G__9450,G__9451,G__9452,G__9453,G__9454,G__9455,G__9456) : self__.afn.call(null,G__9441,G__9442,G__9443,G__9444,G__9445,G__9446,G__9447,G__9448,G__9449,G__9450,G__9451,G__9452,G__9453,G__9454,G__9455,G__9456));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$17 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  var self__ = this;
  var _ = this;
  var G__9457 = a;
  var G__9458 = b;
  var G__9459 = c;
  var G__9460 = d;
  var G__9461 = e;
  var G__9462 = f;
  var G__9463 = g;
  var G__9464 = h;
  var G__9465 = i;
  var G__9466 = j;
  var G__9467 = k;
  var G__9468 = l;
  var G__9469 = m;
  var G__9470 = n;
  var G__9471 = o;
  var G__9472 = p;
  var G__9473 = q;
  return (self__.afn.cljs$core$IFn$_invoke$arity$17 ? self__.afn.cljs$core$IFn$_invoke$arity$17(G__9457,G__9458,G__9459,G__9460,G__9461,G__9462,G__9463,G__9464,G__9465,G__9466,G__9467,G__9468,G__9469,G__9470,G__9471,G__9472,G__9473) : self__.afn.call(null,G__9457,G__9458,G__9459,G__9460,G__9461,G__9462,G__9463,G__9464,G__9465,G__9466,G__9467,G__9468,G__9469,G__9470,G__9471,G__9472,G__9473));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$18 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  var self__ = this;
  var _ = this;
  var G__9474 = a;
  var G__9475 = b;
  var G__9476 = c;
  var G__9477 = d;
  var G__9478 = e;
  var G__9479 = f;
  var G__9480 = g;
  var G__9481 = h;
  var G__9482 = i;
  var G__9483 = j;
  var G__9484 = k;
  var G__9485 = l;
  var G__9486 = m;
  var G__9487 = n;
  var G__9488 = o;
  var G__9489 = p;
  var G__9490 = q;
  var G__9491 = r;
  return (self__.afn.cljs$core$IFn$_invoke$arity$18 ? self__.afn.cljs$core$IFn$_invoke$arity$18(G__9474,G__9475,G__9476,G__9477,G__9478,G__9479,G__9480,G__9481,G__9482,G__9483,G__9484,G__9485,G__9486,G__9487,G__9488,G__9489,G__9490,G__9491) : self__.afn.call(null,G__9474,G__9475,G__9476,G__9477,G__9478,G__9479,G__9480,G__9481,G__9482,G__9483,G__9484,G__9485,G__9486,G__9487,G__9488,G__9489,G__9490,G__9491));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$19 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  var self__ = this;
  var _ = this;
  var G__9492 = a;
  var G__9493 = b;
  var G__9494 = c;
  var G__9495 = d;
  var G__9496 = e;
  var G__9497 = f;
  var G__9498 = g;
  var G__9499 = h;
  var G__9500 = i;
  var G__9501 = j;
  var G__9502 = k;
  var G__9503 = l;
  var G__9504 = m;
  var G__9505 = n;
  var G__9506 = o;
  var G__9507 = p;
  var G__9508 = q;
  var G__9509 = r;
  var G__9510 = s;
  return (self__.afn.cljs$core$IFn$_invoke$arity$19 ? self__.afn.cljs$core$IFn$_invoke$arity$19(G__9492,G__9493,G__9494,G__9495,G__9496,G__9497,G__9498,G__9499,G__9500,G__9501,G__9502,G__9503,G__9504,G__9505,G__9506,G__9507,G__9508,G__9509,G__9510) : self__.afn.call(null,G__9492,G__9493,G__9494,G__9495,G__9496,G__9497,G__9498,G__9499,G__9500,G__9501,G__9502,G__9503,G__9504,G__9505,G__9506,G__9507,G__9508,G__9509,G__9510));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$20 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  var self__ = this;
  var _ = this;
  var G__9511 = a;
  var G__9512 = b;
  var G__9513 = c;
  var G__9514 = d;
  var G__9515 = e;
  var G__9516 = f;
  var G__9517 = g;
  var G__9518 = h;
  var G__9519 = i;
  var G__9520 = j;
  var G__9521 = k;
  var G__9522 = l;
  var G__9523 = m;
  var G__9524 = n;
  var G__9525 = o;
  var G__9526 = p;
  var G__9527 = q;
  var G__9528 = r;
  var G__9529 = s;
  var G__9530 = t;
  return (self__.afn.cljs$core$IFn$_invoke$arity$20 ? self__.afn.cljs$core$IFn$_invoke$arity$20(G__9511,G__9512,G__9513,G__9514,G__9515,G__9516,G__9517,G__9518,G__9519,G__9520,G__9521,G__9522,G__9523,G__9524,G__9525,G__9526,G__9527,G__9528,G__9529,G__9530) : self__.afn.call(null,G__9511,G__9512,G__9513,G__9514,G__9515,G__9516,G__9517,G__9518,G__9519,G__9520,G__9521,G__9522,G__9523,G__9524,G__9525,G__9526,G__9527,G__9528,G__9529,G__9530));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IFn$_invoke$arity$21 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  var self__ = this;
  var _ = this;
  var G__9531 = self__.afn;
  var G__9532 = a;
  var G__9533 = b;
  var G__9534 = c;
  var G__9535 = d;
  var G__9536 = e;
  var G__9537 = f;
  var G__9538 = g;
  var G__9539 = h;
  var G__9540 = i;
  var G__9541 = j;
  var G__9542 = k;
  var G__9543 = l;
  var G__9544 = m;
  var G__9545 = n;
  var G__9546 = o;
  var G__9547 = p;
  var G__9548 = q;
  var G__9549 = r;
  var G__9550 = s;
  var G__9551 = t;
  var G__9552 = rest;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$22 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$22(G__9531,G__9532,G__9533,G__9534,G__9535,G__9536,G__9537,G__9538,G__9539,G__9540,G__9541,G__9542,G__9543,G__9544,G__9545,G__9546,G__9547,G__9548,G__9549,G__9550,G__9551,G__9552) : cljs.core.apply.call(null,G__9531,G__9532,G__9533,G__9534,G__9535,G__9536,G__9537,G__9538,G__9539,G__9540,G__9541,G__9542,G__9543,G__9544,G__9545,G__9546,G__9547,G__9548,G__9549,G__9550,G__9551,G__9552));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$Fn$ = true;
  
  cljs.core.MetaFn.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_,new_meta){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.MetaFn(self__.afn,new_meta));
  });
  
  cljs.core.MetaFn.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.meta;
  });
  
  cljs.core.MetaFn.cljs$lang$type = true;
  
  cljs.core.MetaFn.cljs$lang$ctorStr = "cljs.core/MetaFn";
  
  cljs.core.MetaFn.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/MetaFn");
  });
  
  cljs.core.__GT_MetaFn = (function __GT_MetaFn(afn,meta){
  return (new cljs.core.MetaFn(afn,meta));
  });
  
  /**
  * Returns an object of the same type and value as obj, with
  * map m as its metadata.
  */
  cljs.core.with_meta = (function with_meta(o,meta){
  if((cljs.core.fn_QMARK_(o)) && (!((function (){var G__9557 = o;
  if(G__9557){
  var bit__4489__auto__ = (G__9557.cljs$lang$protocol_mask$partition0$ & (262144));
  if((bit__4489__auto__) || (G__9557.cljs$core$IWithMeta$)){
  return true;
  } else {
  if((!G__9557.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IWithMeta,G__9557);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IWithMeta,G__9557);
  }
  })()))){
  return (new cljs.core.MetaFn(o,meta));
  } else {
  if((o == null)){
  return null;
  } else {
  return cljs.core._with_meta(o,meta);
  }
  }
  });
  /**
  * Returns the metadata of obj, returns nil if there is no metadata.
  */
  cljs.core.meta = (function meta(o){
  if((function (){var and__3796__auto__ = !((o == null));
  if(and__3796__auto__){
  var G__9561 = o;
  if(G__9561){
  var bit__4489__auto__ = (G__9561.cljs$lang$protocol_mask$partition0$ & (131072));
  if((bit__4489__auto__) || (G__9561.cljs$core$IMeta$)){
  return true;
  } else {
  if((!G__9561.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMeta,G__9561);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMeta,G__9561);
  }
  } else {
  return and__3796__auto__;
  }
  })()){
  return cljs.core._meta(o);
  } else {
  return null;
  }
  });
  /**
  * For a list or queue, same as first, for a vector, same as, but much
  * more efficient than, last. If the collection is empty, returns nil.
  */
  cljs.core.peek = (function peek(coll){
  if((coll == null)){
  return null;
  } else {
  return cljs.core._peek(coll);
  }
  });
  /**
  * For a list or queue, returns a new list/queue without the first
  * item, for a vector, returns a new vector without the last item.
  * Note - not the same as next/butlast.
  */
  cljs.core.pop = (function pop(coll){
  if((coll == null)){
  return null;
  } else {
  return cljs.core._pop(coll);
  }
  });
  /**
  * disj[oin]. Returns a new set of the same (hashed/sorted) type, that
  * does not contain key(s).
  * @param {...*} var_args
  */
  cljs.core.disj = (function() {
  var disj = null;
  var disj__1 = (function (coll){
  return coll;
  });
  var disj__2 = (function (coll,k){
  if((coll == null)){
  return null;
  } else {
  return cljs.core._disjoin(coll,k);
  }
  });
  var disj__3 = (function() { 
  var G__9564__delegate = function (coll,k,ks){
  while(true){
  if((coll == null)){
  return null;
  } else {
  var ret = disj.cljs$core$IFn$_invoke$arity$2(coll,k);
  if(cljs.core.truth_(ks)){
  var G__9565 = ret;
  var G__9566 = cljs.core.first(ks);
  var G__9567 = cljs.core.next(ks);
  coll = G__9565;
  k = G__9566;
  ks = G__9567;
  continue;
  } else {
  return ret;
  }
  }
  break;
  }
  };
  var G__9564 = function (coll,k,var_args){
  var ks = null;
  if (arguments.length > 2) {
  var G__9568__i = 0, G__9568__a = new Array(arguments.length -  2);
  while (G__9568__i < G__9568__a.length) {G__9568__a[G__9568__i] = arguments[G__9568__i + 2]; ++G__9568__i;}
    ks = new cljs.core.IndexedSeq(G__9568__a,0);
  } 
  return G__9564__delegate.call(this,coll,k,ks);};
  G__9564.cljs$lang$maxFixedArity = 2;
  G__9564.cljs$lang$applyTo = (function (arglist__9569){
  var coll = cljs.core.first(arglist__9569);
  arglist__9569 = cljs.core.next(arglist__9569);
  var k = cljs.core.first(arglist__9569);
  var ks = cljs.core.rest(arglist__9569);
  return G__9564__delegate(coll,k,ks);
  });
  G__9564.cljs$core$IFn$_invoke$arity$variadic = G__9564__delegate;
  return G__9564;
  })()
  ;
  disj = function(coll,k,var_args){
  var ks = var_args;
  switch(arguments.length){
  case 1:
  return disj__1.call(this,coll);
  case 2:
  return disj__2.call(this,coll,k);
  default:
  var G__9570 = null;
  if (arguments.length > 2) {
  var G__9571__i = 0, G__9571__a = new Array(arguments.length -  2);
  while (G__9571__i < G__9571__a.length) {G__9571__a[G__9571__i] = arguments[G__9571__i + 2]; ++G__9571__i;}
  G__9570 = new cljs.core.IndexedSeq(G__9571__a,0);
  }
  return disj__3.cljs$core$IFn$_invoke$arity$variadic(coll,k, G__9570);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  disj.cljs$lang$maxFixedArity = 2;
  disj.cljs$lang$applyTo = disj__3.cljs$lang$applyTo;
  disj.cljs$core$IFn$_invoke$arity$1 = disj__1;
  disj.cljs$core$IFn$_invoke$arity$2 = disj__2;
  disj.cljs$core$IFn$_invoke$arity$variadic = disj__3.cljs$core$IFn$_invoke$arity$variadic;
  return disj;
  })()
  ;
  /**
  * Returns true if coll has no items - same as (not (seq coll)).
  * Please use the idiom (seq x) rather than (not (empty? x))
  */
  cljs.core.empty_QMARK_ = (function empty_QMARK_(coll){
  return ((coll == null)) || (cljs.core.not(cljs.core.seq(coll)));
  });
  /**
  * Returns true if x satisfies ICollection
  */
  cljs.core.coll_QMARK_ = (function coll_QMARK_(x){
  if((x == null)){
  return false;
  } else {
  var G__9573 = x;
  if(G__9573){
  var bit__4489__auto__ = (G__9573.cljs$lang$protocol_mask$partition0$ & (8));
  if((bit__4489__auto__) || (G__9573.cljs$core$ICollection$)){
  return true;
  } else {
  if((!G__9573.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ICollection,G__9573);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ICollection,G__9573);
  }
  }
  });
  /**
  * Returns true if x satisfies ISet
  */
  cljs.core.set_QMARK_ = (function set_QMARK_(x){
  if((x == null)){
  return false;
  } else {
  var G__9575 = x;
  if(G__9575){
  var bit__4489__auto__ = (G__9575.cljs$lang$protocol_mask$partition0$ & (4096));
  if((bit__4489__auto__) || (G__9575.cljs$core$ISet$)){
  return true;
  } else {
  if((!G__9575.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISet,G__9575);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISet,G__9575);
  }
  }
  });
  /**
  * Returns true if coll implements Associative
  */
  cljs.core.associative_QMARK_ = (function associative_QMARK_(x){
  var G__9577 = x;
  if(G__9577){
  var bit__4489__auto__ = (G__9577.cljs$lang$protocol_mask$partition0$ & (512));
  if((bit__4489__auto__) || (G__9577.cljs$core$IAssociative$)){
  return true;
  } else {
  if((!G__9577.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IAssociative,G__9577);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IAssociative,G__9577);
  }
  });
  /**
  * Returns true if coll satisfies ISequential
  */
  cljs.core.sequential_QMARK_ = (function sequential_QMARK_(x){
  var G__9579 = x;
  if(G__9579){
  var bit__4489__auto__ = (G__9579.cljs$lang$protocol_mask$partition0$ & (16777216));
  if((bit__4489__auto__) || (G__9579.cljs$core$ISequential$)){
  return true;
  } else {
  if((!G__9579.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISequential,G__9579);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISequential,G__9579);
  }
  });
  /**
  * Returns true if coll satisfies ISorted
  */
  cljs.core.sorted_QMARK_ = (function sorted_QMARK_(x){
  var G__9581 = x;
  if(G__9581){
  var bit__4489__auto__ = (G__9581.cljs$lang$protocol_mask$partition0$ & (268435456));
  if((bit__4489__auto__) || (G__9581.cljs$core$ISorted$)){
  return true;
  } else {
  if((!G__9581.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISorted,G__9581);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISorted,G__9581);
  }
  });
  /**
  * Returns true if coll satisfies IReduce
  */
  cljs.core.reduceable_QMARK_ = (function reduceable_QMARK_(x){
  var G__9583 = x;
  if(G__9583){
  var bit__4489__auto__ = (G__9583.cljs$lang$protocol_mask$partition0$ & (524288));
  if((bit__4489__auto__) || (G__9583.cljs$core$IReduce$)){
  return true;
  } else {
  if((!G__9583.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,G__9583);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,G__9583);
  }
  });
  /**
  * Return true if x satisfies IMap
  */
  cljs.core.map_QMARK_ = (function map_QMARK_(x){
  if((x == null)){
  return false;
  } else {
  var G__9585 = x;
  if(G__9585){
  var bit__4489__auto__ = (G__9585.cljs$lang$protocol_mask$partition0$ & (1024));
  if((bit__4489__auto__) || (G__9585.cljs$core$IMap$)){
  return true;
  } else {
  if((!G__9585.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMap,G__9585);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMap,G__9585);
  }
  }
  });
  /**
  * Return true if x satisfies IVector
  */
  cljs.core.vector_QMARK_ = (function vector_QMARK_(x){
  var G__9587 = x;
  if(G__9587){
  var bit__4489__auto__ = (G__9587.cljs$lang$protocol_mask$partition0$ & (16384));
  if((bit__4489__auto__) || (G__9587.cljs$core$IVector$)){
  return true;
  } else {
  if((!G__9587.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IVector,G__9587);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IVector,G__9587);
  }
  });
  
  cljs.core.chunked_seq_QMARK_ = (function chunked_seq_QMARK_(x){
  var G__9589 = x;
  if(G__9589){
  var bit__4482__auto__ = (G__9589.cljs$lang$protocol_mask$partition1$ & (512));
  if((bit__4482__auto__) || (G__9589.cljs$core$IChunkedSeq$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  });
  /**
  * @param {...*} var_args
  */
  cljs.core.js_obj = (function() {
  var js_obj = null;
  var js_obj__0 = (function (){
  var obj9595 = {};
  return obj9595;
  });
  var js_obj__1 = (function() { 
  var G__9598__delegate = function (keyvals){
  var G__9596 = goog.object.create;
  var G__9597 = keyvals;
  return (cljs.core.apply.cljs$core$IFn$_invoke$arity$2 ? cljs.core.apply.cljs$core$IFn$_invoke$arity$2(G__9596,G__9597) : cljs.core.apply.call(null,G__9596,G__9597));
  };
  var G__9598 = function (var_args){
  var keyvals = null;
  if (arguments.length > 0) {
  var G__9599__i = 0, G__9599__a = new Array(arguments.length -  0);
  while (G__9599__i < G__9599__a.length) {G__9599__a[G__9599__i] = arguments[G__9599__i + 0]; ++G__9599__i;}
    keyvals = new cljs.core.IndexedSeq(G__9599__a,0);
  } 
  return G__9598__delegate.call(this,keyvals);};
  G__9598.cljs$lang$maxFixedArity = 0;
  G__9598.cljs$lang$applyTo = (function (arglist__9600){
  var keyvals = cljs.core.seq(arglist__9600);
  return G__9598__delegate(keyvals);
  });
  G__9598.cljs$core$IFn$_invoke$arity$variadic = G__9598__delegate;
  return G__9598;
  })()
  ;
  js_obj = function(var_args){
  var keyvals = var_args;
  switch(arguments.length){
  case 0:
  return js_obj__0.call(this);
  default:
  var G__9601 = null;
  if (arguments.length > 0) {
  var G__9602__i = 0, G__9602__a = new Array(arguments.length -  0);
  while (G__9602__i < G__9602__a.length) {G__9602__a[G__9602__i] = arguments[G__9602__i + 0]; ++G__9602__i;}
  G__9601 = new cljs.core.IndexedSeq(G__9602__a,0);
  }
  return js_obj__1.cljs$core$IFn$_invoke$arity$variadic(G__9601);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  js_obj.cljs$lang$maxFixedArity = 0;
  js_obj.cljs$lang$applyTo = js_obj__1.cljs$lang$applyTo;
  js_obj.cljs$core$IFn$_invoke$arity$0 = js_obj__0;
  js_obj.cljs$core$IFn$_invoke$arity$variadic = js_obj__1.cljs$core$IFn$_invoke$arity$variadic;
  return js_obj;
  })()
  ;
  cljs.core.js_keys = (function js_keys(obj){
  var keys = [];
  var G__9605_9607 = obj;
  var G__9606_9608 = ((function (G__9605_9607,keys){
  return (function (val,key,obj__$1){
  return keys.push(key);
  });})(G__9605_9607,keys))
  ;
  goog.object.forEach(G__9605_9607,G__9606_9608);
  
  return keys;
  });
  cljs.core.js_delete = (function js_delete(obj,key){
  return delete obj[key];
  });
  cljs.core.array_copy = (function array_copy(from,i,to,j,len){
  var i__$1 = i;
  var j__$1 = j;
  var len__$1 = len;
  while(true){
  if((len__$1 === (0))){
  return to;
  } else {
  (to[j__$1] = (from[i__$1]));
  
  var G__9609 = (i__$1 + (1));
  var G__9610 = (j__$1 + (1));
  var G__9611 = (len__$1 - (1));
  i__$1 = G__9609;
  j__$1 = G__9610;
  len__$1 = G__9611;
  continue;
  }
  break;
  }
  });
  cljs.core.array_copy_downward = (function array_copy_downward(from,i,to,j,len){
  var i__$1 = (i + (len - (1)));
  var j__$1 = (j + (len - (1)));
  var len__$1 = len;
  while(true){
  if((len__$1 === (0))){
  return to;
  } else {
  (to[j__$1] = (from[i__$1]));
  
  var G__9612 = (i__$1 - (1));
  var G__9613 = (j__$1 - (1));
  var G__9614 = (len__$1 - (1));
  i__$1 = G__9612;
  j__$1 = G__9613;
  len__$1 = G__9614;
  continue;
  }
  break;
  }
  });
  cljs.core.lookup_sentinel = (function (){var obj9616 = {};
  return obj9616;
  })();
  /**
  * Returns true if x is the value false, false otherwise.
  */
  cljs.core.false_QMARK_ = (function false_QMARK_(x){
  return x === false;
  });
  /**
  * Returns true if x is the value true, false otherwise.
  */
  cljs.core.true_QMARK_ = (function true_QMARK_(x){
  return x === true;
  });
  cljs.core.undefined_QMARK_ = (function undefined_QMARK_(x){
  return (void 0 === x);
  });
  /**
  * Return true if s satisfies ISeq
  */
  cljs.core.seq_QMARK_ = (function seq_QMARK_(s){
  if((s == null)){
  return false;
  } else {
  var G__9618 = s;
  if(G__9618){
  var bit__4489__auto__ = (G__9618.cljs$lang$protocol_mask$partition0$ & (64));
  if((bit__4489__auto__) || (G__9618.cljs$core$ISeq$)){
  return true;
  } else {
  if((!G__9618.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,G__9618);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeq,G__9618);
  }
  }
  });
  /**
  * Return true if s satisfies ISeqable
  */
  cljs.core.seqable_QMARK_ = (function seqable_QMARK_(s){
  var G__9620 = s;
  if(G__9620){
  var bit__4489__auto__ = (G__9620.cljs$lang$protocol_mask$partition0$ & (8388608));
  if((bit__4489__auto__) || (G__9620.cljs$core$ISeqable$)){
  return true;
  } else {
  if((!G__9620.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeqable,G__9620);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ISeqable,G__9620);
  }
  });
  cljs.core.boolean$ = (function boolean$(x){
  if(cljs.core.truth_(x)){
  return true;
  } else {
  return false;
  }
  });
  cljs.core.ifn_QMARK_ = (function ifn_QMARK_(f){
  var or__3808__auto__ = cljs.core.fn_QMARK_(f);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var G__9624 = f;
  if(G__9624){
  var bit__4489__auto__ = (G__9624.cljs$lang$protocol_mask$partition0$ & (1));
  if((bit__4489__auto__) || (G__9624.cljs$core$IFn$)){
  return true;
  } else {
  if((!G__9624.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IFn,G__9624);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IFn,G__9624);
  }
  }
  });
  /**
  * Returns true if n is an integer.
  */
  cljs.core.integer_QMARK_ = (function integer_QMARK_(n){
  return (typeof n === 'number') && (cljs.core.not((function (){var G__9637 = n;
  return isNaN(G__9637);
  })())) && (!((n === Infinity))) && (((function (){var G__9638 = n;
  return parseFloat(G__9638);
  })() === (function (){var G__9639 = n;
  var G__9640 = (10);
  return parseInt(G__9639,G__9640);
  })()));
  });
  /**
  * Returns true if key is present in the given collection, otherwise
  * returns false.  Note that for numerically indexed collections like
  * vectors and arrays, this tests if the numeric key is within the
  * range of indexes. 'contains?' operates constant or logarithmic time;
  * it will not perform a linear search for a value.  See also 'some'.
  */
  cljs.core.contains_QMARK_ = (function contains_QMARK_(coll,v){
  if((cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,v,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
  return false;
  } else {
  return true;
  }
  });
  /**
  * Returns the map entry for key, or nil if key not present.
  */
  cljs.core.find = (function find(coll,k){
  if((!((coll == null))) && (cljs.core.associative_QMARK_(coll)) && (cljs.core.contains_QMARK_(coll,k))){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [k,cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,k)], null);
  } else {
  return null;
  }
  });
  /**
  * Returns true if no two of the arguments are =
  * @param {...*} var_args
  */
  cljs.core.distinct_QMARK_ = (function() {
  var distinct_QMARK_ = null;
  var distinct_QMARK___1 = (function (x){
  return true;
  });
  var distinct_QMARK___2 = (function (x,y){
  return !(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y));
  });
  var distinct_QMARK___3 = (function() { 
  var G__9641__delegate = function (x,y,more){
  if(!(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y))){
  var s = cljs.core.PersistentHashSet.fromArray([x,y], true);
  var xs = more;
  while(true){
  var x__$1 = cljs.core.first(xs);
  var etc = cljs.core.next(xs);
  if(cljs.core.truth_(xs)){
  if(cljs.core.contains_QMARK_(s,x__$1)){
  return false;
  } else {
  var G__9642 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(s,x__$1);
  var G__9643 = etc;
  s = G__9642;
  xs = G__9643;
  continue;
  }
  } else {
  return true;
  }
  break;
  }
  } else {
  return false;
  }
  };
  var G__9641 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9644__i = 0, G__9644__a = new Array(arguments.length -  2);
  while (G__9644__i < G__9644__a.length) {G__9644__a[G__9644__i] = arguments[G__9644__i + 2]; ++G__9644__i;}
    more = new cljs.core.IndexedSeq(G__9644__a,0);
  } 
  return G__9641__delegate.call(this,x,y,more);};
  G__9641.cljs$lang$maxFixedArity = 2;
  G__9641.cljs$lang$applyTo = (function (arglist__9645){
  var x = cljs.core.first(arglist__9645);
  arglist__9645 = cljs.core.next(arglist__9645);
  var y = cljs.core.first(arglist__9645);
  var more = cljs.core.rest(arglist__9645);
  return G__9641__delegate(x,y,more);
  });
  G__9641.cljs$core$IFn$_invoke$arity$variadic = G__9641__delegate;
  return G__9641;
  })()
  ;
  distinct_QMARK_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return distinct_QMARK___1.call(this,x);
  case 2:
  return distinct_QMARK___2.call(this,x,y);
  default:
  var G__9646 = null;
  if (arguments.length > 2) {
  var G__9647__i = 0, G__9647__a = new Array(arguments.length -  2);
  while (G__9647__i < G__9647__a.length) {G__9647__a[G__9647__i] = arguments[G__9647__i + 2]; ++G__9647__i;}
  G__9646 = new cljs.core.IndexedSeq(G__9647__a,0);
  }
  return distinct_QMARK___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9646);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  distinct_QMARK_.cljs$lang$maxFixedArity = 2;
  distinct_QMARK_.cljs$lang$applyTo = distinct_QMARK___3.cljs$lang$applyTo;
  distinct_QMARK_.cljs$core$IFn$_invoke$arity$1 = distinct_QMARK___1;
  distinct_QMARK_.cljs$core$IFn$_invoke$arity$2 = distinct_QMARK___2;
  distinct_QMARK_.cljs$core$IFn$_invoke$arity$variadic = distinct_QMARK___3.cljs$core$IFn$_invoke$arity$variadic;
  return distinct_QMARK_;
  })()
  ;
  /**
  * Comparator. Returns a negative number, zero, or a positive number
  * when x is logically 'less than', 'equal to', or 'greater than'
  * y. Uses IComparable if available and google.array.defaultCompare for objects
  * of the same type and special-cases nil to be less than any other object.
  */
  cljs.core.compare = (function compare(x,y){
  if((x === y)){
  return (0);
  } else {
  if((x == null)){
  return (-1);
  } else {
  if((y == null)){
  return (1);
  } else {
  if((cljs.core.type(x) === cljs.core.type(y))){
  if((function (){var G__9651 = x;
  if(G__9651){
  var bit__4482__auto__ = (G__9651.cljs$lang$protocol_mask$partition1$ & (2048));
  if((bit__4482__auto__) || (G__9651.cljs$core$IComparable$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return x.cljs$core$IComparable$_compare$arity$2(null,y);
  } else {
  var G__9652 = x;
  var G__9653 = y;
  return goog.array.defaultCompare(G__9652,G__9653);
  }
  } else {
  throw (new Error("compare on non-nil objects of different types"));
  
  }
  }
  }
  }
  });
  /**
  * Compare indexed collection.
  */
  cljs.core.compare_indexed = (function() {
  var compare_indexed = null;
  var compare_indexed__2 = (function (xs,ys){
  var xl = cljs.core.count(xs);
  var yl = cljs.core.count(ys);
  if((xl < yl)){
  return (-1);
  } else {
  if((xl > yl)){
  return (1);
  } else {
  return compare_indexed.cljs$core$IFn$_invoke$arity$4(xs,ys,xl,(0));
  
  }
  }
  });
  var compare_indexed__4 = (function (xs,ys,len,n){
  while(true){
  var d = cljs.core.compare(cljs.core.nth.cljs$core$IFn$_invoke$arity$2(xs,n),cljs.core.nth.cljs$core$IFn$_invoke$arity$2(ys,n));
  if(((d === (0))) && (((n + (1)) < len))){
  var G__9658 = xs;
  var G__9659 = ys;
  var G__9660 = len;
  var G__9661 = (n + (1));
  xs = G__9658;
  ys = G__9659;
  len = G__9660;
  n = G__9661;
  continue;
  } else {
  return d;
  }
  break;
  }
  });
  compare_indexed = function(xs,ys,len,n){
  switch(arguments.length){
  case 2:
  return compare_indexed__2.call(this,xs,ys);
  case 4:
  return compare_indexed__4.call(this,xs,ys,len,n);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  compare_indexed.cljs$core$IFn$_invoke$arity$2 = compare_indexed__2;
  compare_indexed.cljs$core$IFn$_invoke$arity$4 = compare_indexed__4;
  return compare_indexed;
  })()
  ;
  /**
  * Given a fn that might be boolean valued or a comparator,
  * return a fn that is a comparator.
  */
  cljs.core.fn__GT_comparator = (function fn__GT_comparator(f){
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(f,cljs.core.compare)){
  return cljs.core.compare;
  } else {
  return (function (x,y){
  var r = (function (){var G__9666 = x;
  var G__9667 = y;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__9666,G__9667) : f.call(null,G__9666,G__9667));
  })();
  if(typeof r === 'number'){
  return r;
  } else {
  if(cljs.core.truth_(r)){
  return (-1);
  } else {
  if(cljs.core.truth_((function (){var G__9668 = y;
  var G__9669 = x;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__9668,G__9669) : f.call(null,G__9668,G__9669));
  })())){
  return (1);
  } else {
  return (0);
  }
  }
  }
  });
  }
  });
  /**
  * Returns a sorted sequence of the items in coll. Comp can be
  * boolean-valued comparison function, or a -/0/+ valued comparator.
  * Comp defaults to compare.
  */
  cljs.core.sort = (function() {
  var sort = null;
  var sort__1 = (function (coll){
  return sort.cljs$core$IFn$_invoke$arity$2(cljs.core.compare,coll);
  });
  var sort__2 = (function (comp,coll){
  if(cljs.core.seq(coll)){
  var a = (function (){var G__9675 = coll;
  return (cljs.core.to_array.cljs$core$IFn$_invoke$arity$1 ? cljs.core.to_array.cljs$core$IFn$_invoke$arity$1(G__9675) : cljs.core.to_array.call(null,G__9675));
  })();
  var G__9676_9678 = a;
  var G__9677_9679 = cljs.core.fn__GT_comparator(comp);
  goog.array.stableSort(G__9676_9678,G__9677_9679);
  
  return cljs.core.seq(a);
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  sort = function(comp,coll){
  switch(arguments.length){
  case 1:
  return sort__1.call(this,comp);
  case 2:
  return sort__2.call(this,comp,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  sort.cljs$core$IFn$_invoke$arity$1 = sort__1;
  sort.cljs$core$IFn$_invoke$arity$2 = sort__2;
  return sort;
  })()
  ;
  /**
  * Returns a sorted sequence of the items in coll, where the sort
  * order is determined by comparing (keyfn item).  Comp can be
  * boolean-valued comparison funcion, or a -/0/+ valued comparator.
  * Comp defaults to compare.
  */
  cljs.core.sort_by = (function() {
  var sort_by = null;
  var sort_by__2 = (function (keyfn,coll){
  return sort_by.cljs$core$IFn$_invoke$arity$3(keyfn,cljs.core.compare,coll);
  });
  var sort_by__3 = (function (keyfn,comp,coll){
  return cljs.core.sort.cljs$core$IFn$_invoke$arity$2((function (x,y){
  return cljs.core.fn__GT_comparator(comp).call(null,(function (){var G__9685 = x;
  return (keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(G__9685) : keyfn.call(null,G__9685));
  })(),(function (){var G__9686 = y;
  return (keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(G__9686) : keyfn.call(null,G__9686));
  })());
  }),coll);
  });
  sort_by = function(keyfn,comp,coll){
  switch(arguments.length){
  case 2:
  return sort_by__2.call(this,keyfn,comp);
  case 3:
  return sort_by__3.call(this,keyfn,comp,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  sort_by.cljs$core$IFn$_invoke$arity$2 = sort_by__2;
  sort_by.cljs$core$IFn$_invoke$arity$3 = sort_by__3;
  return sort_by;
  })()
  ;
  cljs.core.seq_reduce = (function() {
  var seq_reduce = null;
  var seq_reduce__2 = (function (f,coll){
  var temp__4124__auto__ = cljs.core.seq(coll);
  if(temp__4124__auto__){
  var s = temp__4124__auto__;
  var G__9692 = f;
  var G__9693 = cljs.core.first(s);
  var G__9694 = cljs.core.next(s);
  return (cljs.core.reduce.cljs$core$IFn$_invoke$arity$3 ? cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(G__9692,G__9693,G__9694) : cljs.core.reduce.call(null,G__9692,G__9693,G__9694));
  } else {
  return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  }
  });
  var seq_reduce__3 = (function (f,val,coll){
  var val__$1 = val;
  var coll__$1 = cljs.core.seq(coll);
  while(true){
  if(coll__$1){
  var nval = (function (){var G__9695 = val__$1;
  var G__9696 = cljs.core.first(coll__$1);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__9695,G__9696) : f.call(null,G__9695,G__9696));
  })();
  if(cljs.core.reduced_QMARK_(nval)){
  return cljs.core.deref(nval);
  } else {
  var G__9697 = nval;
  var G__9698 = cljs.core.next(coll__$1);
  val__$1 = G__9697;
  coll__$1 = G__9698;
  continue;
  }
  } else {
  return val__$1;
  }
  break;
  }
  });
  seq_reduce = function(f,val,coll){
  switch(arguments.length){
  case 2:
  return seq_reduce__2.call(this,f,val);
  case 3:
  return seq_reduce__3.call(this,f,val,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  seq_reduce.cljs$core$IFn$_invoke$arity$2 = seq_reduce__2;
  seq_reduce.cljs$core$IFn$_invoke$arity$3 = seq_reduce__3;
  return seq_reduce;
  })()
  ;
  /**
  * Return a random permutation of coll
  */
  cljs.core.shuffle = (function shuffle(coll){
  var a = (function (){var G__9702 = coll;
  return (cljs.core.to_array.cljs$core$IFn$_invoke$arity$1 ? cljs.core.to_array.cljs$core$IFn$_invoke$arity$1(G__9702) : cljs.core.to_array.call(null,G__9702));
  })();
  var G__9703_9705 = a;
  goog.array.shuffle(G__9703_9705);
  
  var G__9704 = a;
  return (cljs.core.vec.cljs$core$IFn$_invoke$arity$1 ? cljs.core.vec.cljs$core$IFn$_invoke$arity$1(G__9704) : cljs.core.vec.call(null,G__9704));
  });
  /**
  * f should be a function of 2 arguments. If val is not supplied,
  * returns the result of applying f to the first 2 items in coll, then
  * applying f to that result and the 3rd item, etc. If coll contains no
  * items, f must accept no arguments as well, and reduce returns the
  * result of calling f with no arguments.  If coll has only 1 item, it
  * is returned and f is not called.  If val is supplied, returns the
  * result of applying f to val and the first item in coll, then
  * applying f to that result and the 2nd item, etc. If coll contains no
  * items, returns val and f is not called.
  */
  cljs.core.reduce = (function() {
  var reduce = null;
  var reduce__2 = (function (f,coll){
  if((function (){var G__9708 = coll;
  if(G__9708){
  var bit__4482__auto__ = (G__9708.cljs$lang$protocol_mask$partition0$ & (524288));
  if((bit__4482__auto__) || (G__9708.cljs$core$IReduce$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$IReduce$_reduce$arity$2(null,f);
  } else {
  if(coll instanceof Array){
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
  } else {
  if(typeof coll === 'string'){
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,coll)){
  return cljs.core._reduce.cljs$core$IFn$_invoke$arity$2(coll,f);
  } else {
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll);
  
  }
  }
  }
  }
  });
  var reduce__3 = (function (f,val,coll){
  if((function (){var G__9709 = coll;
  if(G__9709){
  var bit__4482__auto__ = (G__9709.cljs$lang$protocol_mask$partition0$ & (524288));
  if((bit__4482__auto__) || (G__9709.cljs$core$IReduce$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return coll.cljs$core$IReduce$_reduce$arity$3(null,f,val);
  } else {
  if(coll instanceof Array){
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
  } else {
  if(typeof coll === 'string'){
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
  } else {
  if(cljs.core.native_satisfies_QMARK_(cljs.core.IReduce,coll)){
  return cljs.core._reduce.cljs$core$IFn$_invoke$arity$3(coll,f,val);
  } else {
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,val,coll);
  
  }
  }
  }
  }
  });
  reduce = function(f,val,coll){
  switch(arguments.length){
  case 2:
  return reduce__2.call(this,f,val);
  case 3:
  return reduce__3.call(this,f,val,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  reduce.cljs$core$IFn$_invoke$arity$2 = reduce__2;
  reduce.cljs$core$IFn$_invoke$arity$3 = reduce__3;
  return reduce;
  })()
  ;
  /**
  * Reduces an associative collection. f should be a function of 3
  * arguments. Returns the result of applying f to init, the first key
  * and the first value in coll, then applying f to that result and the
  * 2nd key and value, etc. If coll contains no entries, returns init
  * and f is not called. Note that reduce-kv is supported on vectors,
  * where the keys will be the ordinals.
  */
  cljs.core.reduce_kv = (function reduce_kv(f,init,coll){
  if(!((coll == null))){
  return cljs.core._kv_reduce(coll,f,init);
  } else {
  return init;
  }
  });
  cljs.core.identity = (function identity(x){
  return x;
  });
  cljs.core.completing = (function() {
  var completing = null;
  var completing__1 = (function (f){
  return completing.cljs$core$IFn$_invoke$arity$2(f,cljs.core.identity);
  });
  var completing__2 = (function (f,cf){
  return (function() {
  var G__9718 = null;
  var G__9718__0 = (function (){
  return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  });
  var G__9718__1 = (function (x){
  var G__9715 = x;
  return (cf.cljs$core$IFn$_invoke$arity$1 ? cf.cljs$core$IFn$_invoke$arity$1(G__9715) : cf.call(null,G__9715));
  });
  var G__9718__2 = (function (x,y){
  var G__9716 = x;
  var G__9717 = y;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__9716,G__9717) : f.call(null,G__9716,G__9717));
  });
  G__9718 = function(x,y){
  switch(arguments.length){
  case 0:
  return G__9718__0.call(this);
  case 1:
  return G__9718__1.call(this,x);
  case 2:
  return G__9718__2.call(this,x,y);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__9718.cljs$core$IFn$_invoke$arity$0 = G__9718__0;
  G__9718.cljs$core$IFn$_invoke$arity$1 = G__9718__1;
  G__9718.cljs$core$IFn$_invoke$arity$2 = G__9718__2;
  return G__9718;
  })()
  });
  completing = function(f,cf){
  switch(arguments.length){
  case 1:
  return completing__1.call(this,f);
  case 2:
  return completing__2.call(this,f,cf);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  completing.cljs$core$IFn$_invoke$arity$1 = completing__1;
  completing.cljs$core$IFn$_invoke$arity$2 = completing__2;
  return completing;
  })()
  ;
  /**
  * reduce with a transformation of f (xf). If init is not
  * supplied, (f) will be called to produce it. f should be a reducing
  * step function that accepts both 1 and 2 arguments, if it accepts
  * only 2 you can add the arity-1 with 'completing'. Returns the result
  * of applying (the transformed) xf to init and the first item in coll,
  * then applying xf to that result and the 2nd item, etc. If coll
  * contains no items, returns init and f is not called. Note that
  * certain transforms may inject or skip items.
  */
  cljs.core.transduce = (function() {
  var transduce = null;
  var transduce__3 = (function (xform,f,coll){
  return transduce.cljs$core$IFn$_invoke$arity$4(xform,f,(function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })(),coll);
  });
  var transduce__4 = (function (xform,f,init,coll){
  var f__$1 = (function (){var G__9725 = f;
  return (xform.cljs$core$IFn$_invoke$arity$1 ? xform.cljs$core$IFn$_invoke$arity$1(G__9725) : xform.call(null,G__9725));
  })();
  var ret = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(f__$1,init,coll);
  var G__9726 = ret;
  return (f__$1.cljs$core$IFn$_invoke$arity$1 ? f__$1.cljs$core$IFn$_invoke$arity$1(G__9726) : f__$1.call(null,G__9726));
  });
  transduce = function(xform,f,init,coll){
  switch(arguments.length){
  case 3:
  return transduce__3.call(this,xform,f,init);
  case 4:
  return transduce__4.call(this,xform,f,init,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  transduce.cljs$core$IFn$_invoke$arity$3 = transduce__3;
  transduce.cljs$core$IFn$_invoke$arity$4 = transduce__4;
  return transduce;
  })()
  ;
  /**
  * Returns the sum of nums. (+) returns 0.
  * @param {...*} var_args
  */
  cljs.core._PLUS_ = (function() {
  var _PLUS_ = null;
  var _PLUS___0 = (function (){
  return (0);
  });
  var _PLUS___1 = (function (x){
  return x;
  });
  var _PLUS___2 = (function (x,y){
  return (x + y);
  });
  var _PLUS___3 = (function() { 
  var G__9727__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(_PLUS_,(x + y),more);
  };
  var G__9727 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9728__i = 0, G__9728__a = new Array(arguments.length -  2);
  while (G__9728__i < G__9728__a.length) {G__9728__a[G__9728__i] = arguments[G__9728__i + 2]; ++G__9728__i;}
    more = new cljs.core.IndexedSeq(G__9728__a,0);
  } 
  return G__9727__delegate.call(this,x,y,more);};
  G__9727.cljs$lang$maxFixedArity = 2;
  G__9727.cljs$lang$applyTo = (function (arglist__9729){
  var x = cljs.core.first(arglist__9729);
  arglist__9729 = cljs.core.next(arglist__9729);
  var y = cljs.core.first(arglist__9729);
  var more = cljs.core.rest(arglist__9729);
  return G__9727__delegate(x,y,more);
  });
  G__9727.cljs$core$IFn$_invoke$arity$variadic = G__9727__delegate;
  return G__9727;
  })()
  ;
  _PLUS_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 0:
  return _PLUS___0.call(this);
  case 1:
  return _PLUS___1.call(this,x);
  case 2:
  return _PLUS___2.call(this,x,y);
  default:
  var G__9730 = null;
  if (arguments.length > 2) {
  var G__9731__i = 0, G__9731__a = new Array(arguments.length -  2);
  while (G__9731__i < G__9731__a.length) {G__9731__a[G__9731__i] = arguments[G__9731__i + 2]; ++G__9731__i;}
  G__9730 = new cljs.core.IndexedSeq(G__9731__a,0);
  }
  return _PLUS___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9730);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _PLUS_.cljs$lang$maxFixedArity = 2;
  _PLUS_.cljs$lang$applyTo = _PLUS___3.cljs$lang$applyTo;
  _PLUS_.cljs$core$IFn$_invoke$arity$0 = _PLUS___0;
  _PLUS_.cljs$core$IFn$_invoke$arity$1 = _PLUS___1;
  _PLUS_.cljs$core$IFn$_invoke$arity$2 = _PLUS___2;
  _PLUS_.cljs$core$IFn$_invoke$arity$variadic = _PLUS___3.cljs$core$IFn$_invoke$arity$variadic;
  return _PLUS_;
  })()
  ;
  /**
  * If no ys are supplied, returns the negation of x, else subtracts
  * the ys from x and returns the result.
  * @param {...*} var_args
  */
  cljs.core._ = (function() {
  var _ = null;
  var ___1 = (function (x){
  return (- x);
  });
  var ___2 = (function (x,y){
  return (x - y);
  });
  var ___3 = (function() { 
  var G__9732__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(_,(x - y),more);
  };
  var G__9732 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9733__i = 0, G__9733__a = new Array(arguments.length -  2);
  while (G__9733__i < G__9733__a.length) {G__9733__a[G__9733__i] = arguments[G__9733__i + 2]; ++G__9733__i;}
    more = new cljs.core.IndexedSeq(G__9733__a,0);
  } 
  return G__9732__delegate.call(this,x,y,more);};
  G__9732.cljs$lang$maxFixedArity = 2;
  G__9732.cljs$lang$applyTo = (function (arglist__9734){
  var x = cljs.core.first(arglist__9734);
  arglist__9734 = cljs.core.next(arglist__9734);
  var y = cljs.core.first(arglist__9734);
  var more = cljs.core.rest(arglist__9734);
  return G__9732__delegate(x,y,more);
  });
  G__9732.cljs$core$IFn$_invoke$arity$variadic = G__9732__delegate;
  return G__9732;
  })()
  ;
  _ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return ___1.call(this,x);
  case 2:
  return ___2.call(this,x,y);
  default:
  var G__9735 = null;
  if (arguments.length > 2) {
  var G__9736__i = 0, G__9736__a = new Array(arguments.length -  2);
  while (G__9736__i < G__9736__a.length) {G__9736__a[G__9736__i] = arguments[G__9736__i + 2]; ++G__9736__i;}
  G__9735 = new cljs.core.IndexedSeq(G__9736__a,0);
  }
  return ___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9735);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _.cljs$lang$maxFixedArity = 2;
  _.cljs$lang$applyTo = ___3.cljs$lang$applyTo;
  _.cljs$core$IFn$_invoke$arity$1 = ___1;
  _.cljs$core$IFn$_invoke$arity$2 = ___2;
  _.cljs$core$IFn$_invoke$arity$variadic = ___3.cljs$core$IFn$_invoke$arity$variadic;
  return _;
  })()
  ;
  /**
  * Returns the product of nums. (*) returns 1.
  * @param {...*} var_args
  */
  cljs.core._STAR_ = (function() {
  var _STAR_ = null;
  var _STAR___0 = (function (){
  return (1);
  });
  var _STAR___1 = (function (x){
  return x;
  });
  var _STAR___2 = (function (x,y){
  return (x * y);
  });
  var _STAR___3 = (function() { 
  var G__9737__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(_STAR_,(x * y),more);
  };
  var G__9737 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9738__i = 0, G__9738__a = new Array(arguments.length -  2);
  while (G__9738__i < G__9738__a.length) {G__9738__a[G__9738__i] = arguments[G__9738__i + 2]; ++G__9738__i;}
    more = new cljs.core.IndexedSeq(G__9738__a,0);
  } 
  return G__9737__delegate.call(this,x,y,more);};
  G__9737.cljs$lang$maxFixedArity = 2;
  G__9737.cljs$lang$applyTo = (function (arglist__9739){
  var x = cljs.core.first(arglist__9739);
  arglist__9739 = cljs.core.next(arglist__9739);
  var y = cljs.core.first(arglist__9739);
  var more = cljs.core.rest(arglist__9739);
  return G__9737__delegate(x,y,more);
  });
  G__9737.cljs$core$IFn$_invoke$arity$variadic = G__9737__delegate;
  return G__9737;
  })()
  ;
  _STAR_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 0:
  return _STAR___0.call(this);
  case 1:
  return _STAR___1.call(this,x);
  case 2:
  return _STAR___2.call(this,x,y);
  default:
  var G__9740 = null;
  if (arguments.length > 2) {
  var G__9741__i = 0, G__9741__a = new Array(arguments.length -  2);
  while (G__9741__i < G__9741__a.length) {G__9741__a[G__9741__i] = arguments[G__9741__i + 2]; ++G__9741__i;}
  G__9740 = new cljs.core.IndexedSeq(G__9741__a,0);
  }
  return _STAR___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9740);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _STAR_.cljs$lang$maxFixedArity = 2;
  _STAR_.cljs$lang$applyTo = _STAR___3.cljs$lang$applyTo;
  _STAR_.cljs$core$IFn$_invoke$arity$0 = _STAR___0;
  _STAR_.cljs$core$IFn$_invoke$arity$1 = _STAR___1;
  _STAR_.cljs$core$IFn$_invoke$arity$2 = _STAR___2;
  _STAR_.cljs$core$IFn$_invoke$arity$variadic = _STAR___3.cljs$core$IFn$_invoke$arity$variadic;
  return _STAR_;
  })()
  ;
  /**
  * If no denominators are supplied, returns 1/numerator,
  * else returns numerator divided by all of the denominators.
  * @param {...*} var_args
  */
  cljs.core._SLASH_ = (function() {
  var _SLASH_ = null;
  var _SLASH___1 = (function (x){
  return _SLASH_.cljs$core$IFn$_invoke$arity$2((1),x);
  });
  var _SLASH___2 = (function (x,y){
  return (x / y);
  });
  var _SLASH___3 = (function() { 
  var G__9746__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(_SLASH_,_SLASH_.cljs$core$IFn$_invoke$arity$2(x,y),more);
  };
  var G__9746 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9747__i = 0, G__9747__a = new Array(arguments.length -  2);
  while (G__9747__i < G__9747__a.length) {G__9747__a[G__9747__i] = arguments[G__9747__i + 2]; ++G__9747__i;}
    more = new cljs.core.IndexedSeq(G__9747__a,0);
  } 
  return G__9746__delegate.call(this,x,y,more);};
  G__9746.cljs$lang$maxFixedArity = 2;
  G__9746.cljs$lang$applyTo = (function (arglist__9748){
  var x = cljs.core.first(arglist__9748);
  arglist__9748 = cljs.core.next(arglist__9748);
  var y = cljs.core.first(arglist__9748);
  var more = cljs.core.rest(arglist__9748);
  return G__9746__delegate(x,y,more);
  });
  G__9746.cljs$core$IFn$_invoke$arity$variadic = G__9746__delegate;
  return G__9746;
  })()
  ;
  _SLASH_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _SLASH___1.call(this,x);
  case 2:
  return _SLASH___2.call(this,x,y);
  default:
  var G__9749 = null;
  if (arguments.length > 2) {
  var G__9750__i = 0, G__9750__a = new Array(arguments.length -  2);
  while (G__9750__i < G__9750__a.length) {G__9750__a[G__9750__i] = arguments[G__9750__i + 2]; ++G__9750__i;}
  G__9749 = new cljs.core.IndexedSeq(G__9750__a,0);
  }
  return _SLASH___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9749);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _SLASH_.cljs$lang$maxFixedArity = 2;
  _SLASH_.cljs$lang$applyTo = _SLASH___3.cljs$lang$applyTo;
  _SLASH_.cljs$core$IFn$_invoke$arity$1 = _SLASH___1;
  _SLASH_.cljs$core$IFn$_invoke$arity$2 = _SLASH___2;
  _SLASH_.cljs$core$IFn$_invoke$arity$variadic = _SLASH___3.cljs$core$IFn$_invoke$arity$variadic;
  return _SLASH_;
  })()
  ;
  /**
  * Returns non-nil if nums are in monotonically increasing order,
  * otherwise false.
  * @param {...*} var_args
  */
  cljs.core._LT_ = (function() {
  var _LT_ = null;
  var _LT___1 = (function (x){
  return true;
  });
  var _LT___2 = (function (x,y){
  return (x < y);
  });
  var _LT___3 = (function() { 
  var G__9751__delegate = function (x,y,more){
  while(true){
  if((x < y)){
  if(cljs.core.next(more)){
  var G__9752 = y;
  var G__9753 = cljs.core.first(more);
  var G__9754 = cljs.core.next(more);
  x = G__9752;
  y = G__9753;
  more = G__9754;
  continue;
  } else {
  return (y < cljs.core.first(more));
  }
  } else {
  return false;
  }
  break;
  }
  };
  var G__9751 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9755__i = 0, G__9755__a = new Array(arguments.length -  2);
  while (G__9755__i < G__9755__a.length) {G__9755__a[G__9755__i] = arguments[G__9755__i + 2]; ++G__9755__i;}
    more = new cljs.core.IndexedSeq(G__9755__a,0);
  } 
  return G__9751__delegate.call(this,x,y,more);};
  G__9751.cljs$lang$maxFixedArity = 2;
  G__9751.cljs$lang$applyTo = (function (arglist__9756){
  var x = cljs.core.first(arglist__9756);
  arglist__9756 = cljs.core.next(arglist__9756);
  var y = cljs.core.first(arglist__9756);
  var more = cljs.core.rest(arglist__9756);
  return G__9751__delegate(x,y,more);
  });
  G__9751.cljs$core$IFn$_invoke$arity$variadic = G__9751__delegate;
  return G__9751;
  })()
  ;
  _LT_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _LT___1.call(this,x);
  case 2:
  return _LT___2.call(this,x,y);
  default:
  var G__9757 = null;
  if (arguments.length > 2) {
  var G__9758__i = 0, G__9758__a = new Array(arguments.length -  2);
  while (G__9758__i < G__9758__a.length) {G__9758__a[G__9758__i] = arguments[G__9758__i + 2]; ++G__9758__i;}
  G__9757 = new cljs.core.IndexedSeq(G__9758__a,0);
  }
  return _LT___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9757);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _LT_.cljs$lang$maxFixedArity = 2;
  _LT_.cljs$lang$applyTo = _LT___3.cljs$lang$applyTo;
  _LT_.cljs$core$IFn$_invoke$arity$1 = _LT___1;
  _LT_.cljs$core$IFn$_invoke$arity$2 = _LT___2;
  _LT_.cljs$core$IFn$_invoke$arity$variadic = _LT___3.cljs$core$IFn$_invoke$arity$variadic;
  return _LT_;
  })()
  ;
  /**
  * Returns non-nil if nums are in monotonically non-decreasing order,
  * otherwise false.
  * @param {...*} var_args
  */
  cljs.core._LT__EQ_ = (function() {
  var _LT__EQ_ = null;
  var _LT__EQ___1 = (function (x){
  return true;
  });
  var _LT__EQ___2 = (function (x,y){
  return (x <= y);
  });
  var _LT__EQ___3 = (function() { 
  var G__9759__delegate = function (x,y,more){
  while(true){
  if((x <= y)){
  if(cljs.core.next(more)){
  var G__9760 = y;
  var G__9761 = cljs.core.first(more);
  var G__9762 = cljs.core.next(more);
  x = G__9760;
  y = G__9761;
  more = G__9762;
  continue;
  } else {
  return (y <= cljs.core.first(more));
  }
  } else {
  return false;
  }
  break;
  }
  };
  var G__9759 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9763__i = 0, G__9763__a = new Array(arguments.length -  2);
  while (G__9763__i < G__9763__a.length) {G__9763__a[G__9763__i] = arguments[G__9763__i + 2]; ++G__9763__i;}
    more = new cljs.core.IndexedSeq(G__9763__a,0);
  } 
  return G__9759__delegate.call(this,x,y,more);};
  G__9759.cljs$lang$maxFixedArity = 2;
  G__9759.cljs$lang$applyTo = (function (arglist__9764){
  var x = cljs.core.first(arglist__9764);
  arglist__9764 = cljs.core.next(arglist__9764);
  var y = cljs.core.first(arglist__9764);
  var more = cljs.core.rest(arglist__9764);
  return G__9759__delegate(x,y,more);
  });
  G__9759.cljs$core$IFn$_invoke$arity$variadic = G__9759__delegate;
  return G__9759;
  })()
  ;
  _LT__EQ_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _LT__EQ___1.call(this,x);
  case 2:
  return _LT__EQ___2.call(this,x,y);
  default:
  var G__9765 = null;
  if (arguments.length > 2) {
  var G__9766__i = 0, G__9766__a = new Array(arguments.length -  2);
  while (G__9766__i < G__9766__a.length) {G__9766__a[G__9766__i] = arguments[G__9766__i + 2]; ++G__9766__i;}
  G__9765 = new cljs.core.IndexedSeq(G__9766__a,0);
  }
  return _LT__EQ___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9765);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _LT__EQ_.cljs$lang$maxFixedArity = 2;
  _LT__EQ_.cljs$lang$applyTo = _LT__EQ___3.cljs$lang$applyTo;
  _LT__EQ_.cljs$core$IFn$_invoke$arity$1 = _LT__EQ___1;
  _LT__EQ_.cljs$core$IFn$_invoke$arity$2 = _LT__EQ___2;
  _LT__EQ_.cljs$core$IFn$_invoke$arity$variadic = _LT__EQ___3.cljs$core$IFn$_invoke$arity$variadic;
  return _LT__EQ_;
  })()
  ;
  /**
  * Returns non-nil if nums are in monotonically decreasing order,
  * otherwise false.
  * @param {...*} var_args
  */
  cljs.core._GT_ = (function() {
  var _GT_ = null;
  var _GT___1 = (function (x){
  return true;
  });
  var _GT___2 = (function (x,y){
  return (x > y);
  });
  var _GT___3 = (function() { 
  var G__9767__delegate = function (x,y,more){
  while(true){
  if((x > y)){
  if(cljs.core.next(more)){
  var G__9768 = y;
  var G__9769 = cljs.core.first(more);
  var G__9770 = cljs.core.next(more);
  x = G__9768;
  y = G__9769;
  more = G__9770;
  continue;
  } else {
  return (y > cljs.core.first(more));
  }
  } else {
  return false;
  }
  break;
  }
  };
  var G__9767 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9771__i = 0, G__9771__a = new Array(arguments.length -  2);
  while (G__9771__i < G__9771__a.length) {G__9771__a[G__9771__i] = arguments[G__9771__i + 2]; ++G__9771__i;}
    more = new cljs.core.IndexedSeq(G__9771__a,0);
  } 
  return G__9767__delegate.call(this,x,y,more);};
  G__9767.cljs$lang$maxFixedArity = 2;
  G__9767.cljs$lang$applyTo = (function (arglist__9772){
  var x = cljs.core.first(arglist__9772);
  arglist__9772 = cljs.core.next(arglist__9772);
  var y = cljs.core.first(arglist__9772);
  var more = cljs.core.rest(arglist__9772);
  return G__9767__delegate(x,y,more);
  });
  G__9767.cljs$core$IFn$_invoke$arity$variadic = G__9767__delegate;
  return G__9767;
  })()
  ;
  _GT_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _GT___1.call(this,x);
  case 2:
  return _GT___2.call(this,x,y);
  default:
  var G__9773 = null;
  if (arguments.length > 2) {
  var G__9774__i = 0, G__9774__a = new Array(arguments.length -  2);
  while (G__9774__i < G__9774__a.length) {G__9774__a[G__9774__i] = arguments[G__9774__i + 2]; ++G__9774__i;}
  G__9773 = new cljs.core.IndexedSeq(G__9774__a,0);
  }
  return _GT___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9773);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _GT_.cljs$lang$maxFixedArity = 2;
  _GT_.cljs$lang$applyTo = _GT___3.cljs$lang$applyTo;
  _GT_.cljs$core$IFn$_invoke$arity$1 = _GT___1;
  _GT_.cljs$core$IFn$_invoke$arity$2 = _GT___2;
  _GT_.cljs$core$IFn$_invoke$arity$variadic = _GT___3.cljs$core$IFn$_invoke$arity$variadic;
  return _GT_;
  })()
  ;
  /**
  * Returns non-nil if nums are in monotonically non-increasing order,
  * otherwise false.
  * @param {...*} var_args
  */
  cljs.core._GT__EQ_ = (function() {
  var _GT__EQ_ = null;
  var _GT__EQ___1 = (function (x){
  return true;
  });
  var _GT__EQ___2 = (function (x,y){
  return (x >= y);
  });
  var _GT__EQ___3 = (function() { 
  var G__9775__delegate = function (x,y,more){
  while(true){
  if((x >= y)){
  if(cljs.core.next(more)){
  var G__9776 = y;
  var G__9777 = cljs.core.first(more);
  var G__9778 = cljs.core.next(more);
  x = G__9776;
  y = G__9777;
  more = G__9778;
  continue;
  } else {
  return (y >= cljs.core.first(more));
  }
  } else {
  return false;
  }
  break;
  }
  };
  var G__9775 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9779__i = 0, G__9779__a = new Array(arguments.length -  2);
  while (G__9779__i < G__9779__a.length) {G__9779__a[G__9779__i] = arguments[G__9779__i + 2]; ++G__9779__i;}
    more = new cljs.core.IndexedSeq(G__9779__a,0);
  } 
  return G__9775__delegate.call(this,x,y,more);};
  G__9775.cljs$lang$maxFixedArity = 2;
  G__9775.cljs$lang$applyTo = (function (arglist__9780){
  var x = cljs.core.first(arglist__9780);
  arglist__9780 = cljs.core.next(arglist__9780);
  var y = cljs.core.first(arglist__9780);
  var more = cljs.core.rest(arglist__9780);
  return G__9775__delegate(x,y,more);
  });
  G__9775.cljs$core$IFn$_invoke$arity$variadic = G__9775__delegate;
  return G__9775;
  })()
  ;
  _GT__EQ_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _GT__EQ___1.call(this,x);
  case 2:
  return _GT__EQ___2.call(this,x,y);
  default:
  var G__9781 = null;
  if (arguments.length > 2) {
  var G__9782__i = 0, G__9782__a = new Array(arguments.length -  2);
  while (G__9782__i < G__9782__a.length) {G__9782__a[G__9782__i] = arguments[G__9782__i + 2]; ++G__9782__i;}
  G__9781 = new cljs.core.IndexedSeq(G__9782__a,0);
  }
  return _GT__EQ___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9781);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _GT__EQ_.cljs$lang$maxFixedArity = 2;
  _GT__EQ_.cljs$lang$applyTo = _GT__EQ___3.cljs$lang$applyTo;
  _GT__EQ_.cljs$core$IFn$_invoke$arity$1 = _GT__EQ___1;
  _GT__EQ_.cljs$core$IFn$_invoke$arity$2 = _GT__EQ___2;
  _GT__EQ_.cljs$core$IFn$_invoke$arity$variadic = _GT__EQ___3.cljs$core$IFn$_invoke$arity$variadic;
  return _GT__EQ_;
  })()
  ;
  /**
  * Returns a number one less than num.
  */
  cljs.core.dec = (function dec(x){
  return (x - (1));
  });
  /**
  * Returns the greatest of the nums.
  * @param {...*} var_args
  */
  cljs.core.max = (function() {
  var max = null;
  var max__1 = (function (x){
  return x;
  });
  var max__2 = (function (x,y){
  var x__4125__auto__ = x;
  var y__4126__auto__ = y;
  return ((x__4125__auto__ > y__4126__auto__) ? x__4125__auto__ : y__4126__auto__);
  });
  var max__3 = (function() { 
  var G__9783__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(max,(function (){var x__4125__auto__ = x;
  var y__4126__auto__ = y;
  return ((x__4125__auto__ > y__4126__auto__) ? x__4125__auto__ : y__4126__auto__);
  })(),more);
  };
  var G__9783 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9784__i = 0, G__9784__a = new Array(arguments.length -  2);
  while (G__9784__i < G__9784__a.length) {G__9784__a[G__9784__i] = arguments[G__9784__i + 2]; ++G__9784__i;}
    more = new cljs.core.IndexedSeq(G__9784__a,0);
  } 
  return G__9783__delegate.call(this,x,y,more);};
  G__9783.cljs$lang$maxFixedArity = 2;
  G__9783.cljs$lang$applyTo = (function (arglist__9785){
  var x = cljs.core.first(arglist__9785);
  arglist__9785 = cljs.core.next(arglist__9785);
  var y = cljs.core.first(arglist__9785);
  var more = cljs.core.rest(arglist__9785);
  return G__9783__delegate(x,y,more);
  });
  G__9783.cljs$core$IFn$_invoke$arity$variadic = G__9783__delegate;
  return G__9783;
  })()
  ;
  max = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return max__1.call(this,x);
  case 2:
  return max__2.call(this,x,y);
  default:
  var G__9786 = null;
  if (arguments.length > 2) {
  var G__9787__i = 0, G__9787__a = new Array(arguments.length -  2);
  while (G__9787__i < G__9787__a.length) {G__9787__a[G__9787__i] = arguments[G__9787__i + 2]; ++G__9787__i;}
  G__9786 = new cljs.core.IndexedSeq(G__9787__a,0);
  }
  return max__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9786);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  max.cljs$lang$maxFixedArity = 2;
  max.cljs$lang$applyTo = max__3.cljs$lang$applyTo;
  max.cljs$core$IFn$_invoke$arity$1 = max__1;
  max.cljs$core$IFn$_invoke$arity$2 = max__2;
  max.cljs$core$IFn$_invoke$arity$variadic = max__3.cljs$core$IFn$_invoke$arity$variadic;
  return max;
  })()
  ;
  /**
  * Returns the least of the nums.
  * @param {...*} var_args
  */
  cljs.core.min = (function() {
  var min = null;
  var min__1 = (function (x){
  return x;
  });
  var min__2 = (function (x,y){
  var x__4132__auto__ = x;
  var y__4133__auto__ = y;
  return ((x__4132__auto__ < y__4133__auto__) ? x__4132__auto__ : y__4133__auto__);
  });
  var min__3 = (function() { 
  var G__9788__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(min,(function (){var x__4132__auto__ = x;
  var y__4133__auto__ = y;
  return ((x__4132__auto__ < y__4133__auto__) ? x__4132__auto__ : y__4133__auto__);
  })(),more);
  };
  var G__9788 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9789__i = 0, G__9789__a = new Array(arguments.length -  2);
  while (G__9789__i < G__9789__a.length) {G__9789__a[G__9789__i] = arguments[G__9789__i + 2]; ++G__9789__i;}
    more = new cljs.core.IndexedSeq(G__9789__a,0);
  } 
  return G__9788__delegate.call(this,x,y,more);};
  G__9788.cljs$lang$maxFixedArity = 2;
  G__9788.cljs$lang$applyTo = (function (arglist__9790){
  var x = cljs.core.first(arglist__9790);
  arglist__9790 = cljs.core.next(arglist__9790);
  var y = cljs.core.first(arglist__9790);
  var more = cljs.core.rest(arglist__9790);
  return G__9788__delegate(x,y,more);
  });
  G__9788.cljs$core$IFn$_invoke$arity$variadic = G__9788__delegate;
  return G__9788;
  })()
  ;
  min = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return min__1.call(this,x);
  case 2:
  return min__2.call(this,x,y);
  default:
  var G__9791 = null;
  if (arguments.length > 2) {
  var G__9792__i = 0, G__9792__a = new Array(arguments.length -  2);
  while (G__9792__i < G__9792__a.length) {G__9792__a[G__9792__i] = arguments[G__9792__i + 2]; ++G__9792__i;}
  G__9791 = new cljs.core.IndexedSeq(G__9792__a,0);
  }
  return min__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9791);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  min.cljs$lang$maxFixedArity = 2;
  min.cljs$lang$applyTo = min__3.cljs$lang$applyTo;
  min.cljs$core$IFn$_invoke$arity$1 = min__1;
  min.cljs$core$IFn$_invoke$arity$2 = min__2;
  min.cljs$core$IFn$_invoke$arity$variadic = min__3.cljs$core$IFn$_invoke$arity$variadic;
  return min;
  })()
  ;
  cljs.core.byte$ = (function byte$(x){
  return x;
  });
  /**
  * Coerce to char
  */
  cljs.core.char$ = (function char$(x){
  if(typeof x === 'number'){
  return String.fromCharCode(x);
  } else {
  if((typeof x === 'string') && ((x.length === (1)))){
  return x;
  } else {
  throw (new Error("Argument to char must be a character or number"));
  
  }
  }
  });
  cljs.core.short$ = (function short$(x){
  return x;
  });
  cljs.core.float$ = (function float$(x){
  return x;
  });
  cljs.core.double$ = (function double$(x){
  return x;
  });
  cljs.core.unchecked_byte = (function unchecked_byte(x){
  return x;
  });
  cljs.core.unchecked_char = (function unchecked_char(x){
  return x;
  });
  cljs.core.unchecked_short = (function unchecked_short(x){
  return x;
  });
  cljs.core.unchecked_float = (function unchecked_float(x){
  return x;
  });
  cljs.core.unchecked_double = (function unchecked_double(x){
  return x;
  });
  /**
  * Returns the sum of nums. (+) returns 0.
  * @param {...*} var_args
  */
  cljs.core.unchecked_add = (function() {
  var unchecked_add = null;
  var unchecked_add__0 = (function (){
  return (0);
  });
  var unchecked_add__1 = (function (x){
  return x;
  });
  var unchecked_add__2 = (function (x,y){
  return (x + y);
  });
  var unchecked_add__3 = (function() { 
  var G__9793__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_add,(x + y),more);
  };
  var G__9793 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9794__i = 0, G__9794__a = new Array(arguments.length -  2);
  while (G__9794__i < G__9794__a.length) {G__9794__a[G__9794__i] = arguments[G__9794__i + 2]; ++G__9794__i;}
    more = new cljs.core.IndexedSeq(G__9794__a,0);
  } 
  return G__9793__delegate.call(this,x,y,more);};
  G__9793.cljs$lang$maxFixedArity = 2;
  G__9793.cljs$lang$applyTo = (function (arglist__9795){
  var x = cljs.core.first(arglist__9795);
  arglist__9795 = cljs.core.next(arglist__9795);
  var y = cljs.core.first(arglist__9795);
  var more = cljs.core.rest(arglist__9795);
  return G__9793__delegate(x,y,more);
  });
  G__9793.cljs$core$IFn$_invoke$arity$variadic = G__9793__delegate;
  return G__9793;
  })()
  ;
  unchecked_add = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 0:
  return unchecked_add__0.call(this);
  case 1:
  return unchecked_add__1.call(this,x);
  case 2:
  return unchecked_add__2.call(this,x,y);
  default:
  var G__9796 = null;
  if (arguments.length > 2) {
  var G__9797__i = 0, G__9797__a = new Array(arguments.length -  2);
  while (G__9797__i < G__9797__a.length) {G__9797__a[G__9797__i] = arguments[G__9797__i + 2]; ++G__9797__i;}
  G__9796 = new cljs.core.IndexedSeq(G__9797__a,0);
  }
  return unchecked_add__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9796);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_add.cljs$lang$maxFixedArity = 2;
  unchecked_add.cljs$lang$applyTo = unchecked_add__3.cljs$lang$applyTo;
  unchecked_add.cljs$core$IFn$_invoke$arity$0 = unchecked_add__0;
  unchecked_add.cljs$core$IFn$_invoke$arity$1 = unchecked_add__1;
  unchecked_add.cljs$core$IFn$_invoke$arity$2 = unchecked_add__2;
  unchecked_add.cljs$core$IFn$_invoke$arity$variadic = unchecked_add__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_add;
  })()
  ;
  /**
  * Returns the sum of nums. (+) returns 0.
  * @param {...*} var_args
  */
  cljs.core.unchecked_add_int = (function() {
  var unchecked_add_int = null;
  var unchecked_add_int__0 = (function (){
  return (0);
  });
  var unchecked_add_int__1 = (function (x){
  return x;
  });
  var unchecked_add_int__2 = (function (x,y){
  return (x + y);
  });
  var unchecked_add_int__3 = (function() { 
  var G__9798__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_add_int,(x + y),more);
  };
  var G__9798 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9799__i = 0, G__9799__a = new Array(arguments.length -  2);
  while (G__9799__i < G__9799__a.length) {G__9799__a[G__9799__i] = arguments[G__9799__i + 2]; ++G__9799__i;}
    more = new cljs.core.IndexedSeq(G__9799__a,0);
  } 
  return G__9798__delegate.call(this,x,y,more);};
  G__9798.cljs$lang$maxFixedArity = 2;
  G__9798.cljs$lang$applyTo = (function (arglist__9800){
  var x = cljs.core.first(arglist__9800);
  arglist__9800 = cljs.core.next(arglist__9800);
  var y = cljs.core.first(arglist__9800);
  var more = cljs.core.rest(arglist__9800);
  return G__9798__delegate(x,y,more);
  });
  G__9798.cljs$core$IFn$_invoke$arity$variadic = G__9798__delegate;
  return G__9798;
  })()
  ;
  unchecked_add_int = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 0:
  return unchecked_add_int__0.call(this);
  case 1:
  return unchecked_add_int__1.call(this,x);
  case 2:
  return unchecked_add_int__2.call(this,x,y);
  default:
  var G__9801 = null;
  if (arguments.length > 2) {
  var G__9802__i = 0, G__9802__a = new Array(arguments.length -  2);
  while (G__9802__i < G__9802__a.length) {G__9802__a[G__9802__i] = arguments[G__9802__i + 2]; ++G__9802__i;}
  G__9801 = new cljs.core.IndexedSeq(G__9802__a,0);
  }
  return unchecked_add_int__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9801);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_add_int.cljs$lang$maxFixedArity = 2;
  unchecked_add_int.cljs$lang$applyTo = unchecked_add_int__3.cljs$lang$applyTo;
  unchecked_add_int.cljs$core$IFn$_invoke$arity$0 = unchecked_add_int__0;
  unchecked_add_int.cljs$core$IFn$_invoke$arity$1 = unchecked_add_int__1;
  unchecked_add_int.cljs$core$IFn$_invoke$arity$2 = unchecked_add_int__2;
  unchecked_add_int.cljs$core$IFn$_invoke$arity$variadic = unchecked_add_int__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_add_int;
  })()
  ;
  cljs.core.unchecked_dec = (function unchecked_dec(x){
  return (x - (1));
  });
  cljs.core.unchecked_dec_int = (function unchecked_dec_int(x){
  return (x - (1));
  });
  /**
  * If no denominators are supplied, returns 1/numerator,
  * else returns numerator divided by all of the denominators.
  * @param {...*} var_args
  */
  cljs.core.unchecked_divide_int = (function() {
  var unchecked_divide_int = null;
  var unchecked_divide_int__1 = (function (x){
  return unchecked_divide_int.cljs$core$IFn$_invoke$arity$2((1),x);
  });
  var unchecked_divide_int__2 = (function (x,y){
  return (x / y);
  });
  var unchecked_divide_int__3 = (function() { 
  var G__9807__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_divide_int,unchecked_divide_int.cljs$core$IFn$_invoke$arity$2(x,y),more);
  };
  var G__9807 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9808__i = 0, G__9808__a = new Array(arguments.length -  2);
  while (G__9808__i < G__9808__a.length) {G__9808__a[G__9808__i] = arguments[G__9808__i + 2]; ++G__9808__i;}
    more = new cljs.core.IndexedSeq(G__9808__a,0);
  } 
  return G__9807__delegate.call(this,x,y,more);};
  G__9807.cljs$lang$maxFixedArity = 2;
  G__9807.cljs$lang$applyTo = (function (arglist__9809){
  var x = cljs.core.first(arglist__9809);
  arglist__9809 = cljs.core.next(arglist__9809);
  var y = cljs.core.first(arglist__9809);
  var more = cljs.core.rest(arglist__9809);
  return G__9807__delegate(x,y,more);
  });
  G__9807.cljs$core$IFn$_invoke$arity$variadic = G__9807__delegate;
  return G__9807;
  })()
  ;
  unchecked_divide_int = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return unchecked_divide_int__1.call(this,x);
  case 2:
  return unchecked_divide_int__2.call(this,x,y);
  default:
  var G__9810 = null;
  if (arguments.length > 2) {
  var G__9811__i = 0, G__9811__a = new Array(arguments.length -  2);
  while (G__9811__i < G__9811__a.length) {G__9811__a[G__9811__i] = arguments[G__9811__i + 2]; ++G__9811__i;}
  G__9810 = new cljs.core.IndexedSeq(G__9811__a,0);
  }
  return unchecked_divide_int__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9810);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_divide_int.cljs$lang$maxFixedArity = 2;
  unchecked_divide_int.cljs$lang$applyTo = unchecked_divide_int__3.cljs$lang$applyTo;
  unchecked_divide_int.cljs$core$IFn$_invoke$arity$1 = unchecked_divide_int__1;
  unchecked_divide_int.cljs$core$IFn$_invoke$arity$2 = unchecked_divide_int__2;
  unchecked_divide_int.cljs$core$IFn$_invoke$arity$variadic = unchecked_divide_int__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_divide_int;
  })()
  ;
  cljs.core.unchecked_inc = (function unchecked_inc(x){
  return (x + (1));
  });
  cljs.core.unchecked_inc_int = (function unchecked_inc_int(x){
  return (x + (1));
  });
  /**
  * Returns the product of nums. (*) returns 1.
  * @param {...*} var_args
  */
  cljs.core.unchecked_multiply = (function() {
  var unchecked_multiply = null;
  var unchecked_multiply__0 = (function (){
  return (1);
  });
  var unchecked_multiply__1 = (function (x){
  return x;
  });
  var unchecked_multiply__2 = (function (x,y){
  return (x * y);
  });
  var unchecked_multiply__3 = (function() { 
  var G__9812__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_multiply,(x * y),more);
  };
  var G__9812 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9813__i = 0, G__9813__a = new Array(arguments.length -  2);
  while (G__9813__i < G__9813__a.length) {G__9813__a[G__9813__i] = arguments[G__9813__i + 2]; ++G__9813__i;}
    more = new cljs.core.IndexedSeq(G__9813__a,0);
  } 
  return G__9812__delegate.call(this,x,y,more);};
  G__9812.cljs$lang$maxFixedArity = 2;
  G__9812.cljs$lang$applyTo = (function (arglist__9814){
  var x = cljs.core.first(arglist__9814);
  arglist__9814 = cljs.core.next(arglist__9814);
  var y = cljs.core.first(arglist__9814);
  var more = cljs.core.rest(arglist__9814);
  return G__9812__delegate(x,y,more);
  });
  G__9812.cljs$core$IFn$_invoke$arity$variadic = G__9812__delegate;
  return G__9812;
  })()
  ;
  unchecked_multiply = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 0:
  return unchecked_multiply__0.call(this);
  case 1:
  return unchecked_multiply__1.call(this,x);
  case 2:
  return unchecked_multiply__2.call(this,x,y);
  default:
  var G__9815 = null;
  if (arguments.length > 2) {
  var G__9816__i = 0, G__9816__a = new Array(arguments.length -  2);
  while (G__9816__i < G__9816__a.length) {G__9816__a[G__9816__i] = arguments[G__9816__i + 2]; ++G__9816__i;}
  G__9815 = new cljs.core.IndexedSeq(G__9816__a,0);
  }
  return unchecked_multiply__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9815);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_multiply.cljs$lang$maxFixedArity = 2;
  unchecked_multiply.cljs$lang$applyTo = unchecked_multiply__3.cljs$lang$applyTo;
  unchecked_multiply.cljs$core$IFn$_invoke$arity$0 = unchecked_multiply__0;
  unchecked_multiply.cljs$core$IFn$_invoke$arity$1 = unchecked_multiply__1;
  unchecked_multiply.cljs$core$IFn$_invoke$arity$2 = unchecked_multiply__2;
  unchecked_multiply.cljs$core$IFn$_invoke$arity$variadic = unchecked_multiply__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_multiply;
  })()
  ;
  /**
  * Returns the product of nums. (*) returns 1.
  * @param {...*} var_args
  */
  cljs.core.unchecked_multiply_int = (function() {
  var unchecked_multiply_int = null;
  var unchecked_multiply_int__0 = (function (){
  return (1);
  });
  var unchecked_multiply_int__1 = (function (x){
  return x;
  });
  var unchecked_multiply_int__2 = (function (x,y){
  return (x * y);
  });
  var unchecked_multiply_int__3 = (function() { 
  var G__9817__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_multiply_int,(x * y),more);
  };
  var G__9817 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9818__i = 0, G__9818__a = new Array(arguments.length -  2);
  while (G__9818__i < G__9818__a.length) {G__9818__a[G__9818__i] = arguments[G__9818__i + 2]; ++G__9818__i;}
    more = new cljs.core.IndexedSeq(G__9818__a,0);
  } 
  return G__9817__delegate.call(this,x,y,more);};
  G__9817.cljs$lang$maxFixedArity = 2;
  G__9817.cljs$lang$applyTo = (function (arglist__9819){
  var x = cljs.core.first(arglist__9819);
  arglist__9819 = cljs.core.next(arglist__9819);
  var y = cljs.core.first(arglist__9819);
  var more = cljs.core.rest(arglist__9819);
  return G__9817__delegate(x,y,more);
  });
  G__9817.cljs$core$IFn$_invoke$arity$variadic = G__9817__delegate;
  return G__9817;
  })()
  ;
  unchecked_multiply_int = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 0:
  return unchecked_multiply_int__0.call(this);
  case 1:
  return unchecked_multiply_int__1.call(this,x);
  case 2:
  return unchecked_multiply_int__2.call(this,x,y);
  default:
  var G__9820 = null;
  if (arguments.length > 2) {
  var G__9821__i = 0, G__9821__a = new Array(arguments.length -  2);
  while (G__9821__i < G__9821__a.length) {G__9821__a[G__9821__i] = arguments[G__9821__i + 2]; ++G__9821__i;}
  G__9820 = new cljs.core.IndexedSeq(G__9821__a,0);
  }
  return unchecked_multiply_int__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9820);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_multiply_int.cljs$lang$maxFixedArity = 2;
  unchecked_multiply_int.cljs$lang$applyTo = unchecked_multiply_int__3.cljs$lang$applyTo;
  unchecked_multiply_int.cljs$core$IFn$_invoke$arity$0 = unchecked_multiply_int__0;
  unchecked_multiply_int.cljs$core$IFn$_invoke$arity$1 = unchecked_multiply_int__1;
  unchecked_multiply_int.cljs$core$IFn$_invoke$arity$2 = unchecked_multiply_int__2;
  unchecked_multiply_int.cljs$core$IFn$_invoke$arity$variadic = unchecked_multiply_int__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_multiply_int;
  })()
  ;
  cljs.core.unchecked_negate = (function unchecked_negate(x){
  return (- x);
  });
  cljs.core.unchecked_negate_int = (function unchecked_negate_int(x){
  return (- x);
  });
  cljs.core.unchecked_remainder_int = (function unchecked_remainder_int(x,n){
  var G__9824 = x;
  var G__9825 = n;
  return (cljs.core.mod.cljs$core$IFn$_invoke$arity$2 ? cljs.core.mod.cljs$core$IFn$_invoke$arity$2(G__9824,G__9825) : cljs.core.mod.call(null,G__9824,G__9825));
  });
  /**
  * If no ys are supplied, returns the negation of x, else subtracts
  * the ys from x and returns the result.
  * @param {...*} var_args
  */
  cljs.core.unchecked_subtract = (function() {
  var unchecked_subtract = null;
  var unchecked_subtract__1 = (function (x){
  return (- x);
  });
  var unchecked_subtract__2 = (function (x,y){
  return (x - y);
  });
  var unchecked_subtract__3 = (function() { 
  var G__9826__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_subtract,(x - y),more);
  };
  var G__9826 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9827__i = 0, G__9827__a = new Array(arguments.length -  2);
  while (G__9827__i < G__9827__a.length) {G__9827__a[G__9827__i] = arguments[G__9827__i + 2]; ++G__9827__i;}
    more = new cljs.core.IndexedSeq(G__9827__a,0);
  } 
  return G__9826__delegate.call(this,x,y,more);};
  G__9826.cljs$lang$maxFixedArity = 2;
  G__9826.cljs$lang$applyTo = (function (arglist__9828){
  var x = cljs.core.first(arglist__9828);
  arglist__9828 = cljs.core.next(arglist__9828);
  var y = cljs.core.first(arglist__9828);
  var more = cljs.core.rest(arglist__9828);
  return G__9826__delegate(x,y,more);
  });
  G__9826.cljs$core$IFn$_invoke$arity$variadic = G__9826__delegate;
  return G__9826;
  })()
  ;
  unchecked_subtract = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return unchecked_subtract__1.call(this,x);
  case 2:
  return unchecked_subtract__2.call(this,x,y);
  default:
  var G__9829 = null;
  if (arguments.length > 2) {
  var G__9830__i = 0, G__9830__a = new Array(arguments.length -  2);
  while (G__9830__i < G__9830__a.length) {G__9830__a[G__9830__i] = arguments[G__9830__i + 2]; ++G__9830__i;}
  G__9829 = new cljs.core.IndexedSeq(G__9830__a,0);
  }
  return unchecked_subtract__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9829);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_subtract.cljs$lang$maxFixedArity = 2;
  unchecked_subtract.cljs$lang$applyTo = unchecked_subtract__3.cljs$lang$applyTo;
  unchecked_subtract.cljs$core$IFn$_invoke$arity$1 = unchecked_subtract__1;
  unchecked_subtract.cljs$core$IFn$_invoke$arity$2 = unchecked_subtract__2;
  unchecked_subtract.cljs$core$IFn$_invoke$arity$variadic = unchecked_subtract__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_subtract;
  })()
  ;
  /**
  * If no ys are supplied, returns the negation of x, else subtracts
  * the ys from x and returns the result.
  * @param {...*} var_args
  */
  cljs.core.unchecked_subtract_int = (function() {
  var unchecked_subtract_int = null;
  var unchecked_subtract_int__1 = (function (x){
  return (- x);
  });
  var unchecked_subtract_int__2 = (function (x,y){
  return (x - y);
  });
  var unchecked_subtract_int__3 = (function() { 
  var G__9831__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(unchecked_subtract_int,(x - y),more);
  };
  var G__9831 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9832__i = 0, G__9832__a = new Array(arguments.length -  2);
  while (G__9832__i < G__9832__a.length) {G__9832__a[G__9832__i] = arguments[G__9832__i + 2]; ++G__9832__i;}
    more = new cljs.core.IndexedSeq(G__9832__a,0);
  } 
  return G__9831__delegate.call(this,x,y,more);};
  G__9831.cljs$lang$maxFixedArity = 2;
  G__9831.cljs$lang$applyTo = (function (arglist__9833){
  var x = cljs.core.first(arglist__9833);
  arglist__9833 = cljs.core.next(arglist__9833);
  var y = cljs.core.first(arglist__9833);
  var more = cljs.core.rest(arglist__9833);
  return G__9831__delegate(x,y,more);
  });
  G__9831.cljs$core$IFn$_invoke$arity$variadic = G__9831__delegate;
  return G__9831;
  })()
  ;
  unchecked_subtract_int = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return unchecked_subtract_int__1.call(this,x);
  case 2:
  return unchecked_subtract_int__2.call(this,x,y);
  default:
  var G__9834 = null;
  if (arguments.length > 2) {
  var G__9835__i = 0, G__9835__a = new Array(arguments.length -  2);
  while (G__9835__i < G__9835__a.length) {G__9835__a[G__9835__i] = arguments[G__9835__i + 2]; ++G__9835__i;}
  G__9834 = new cljs.core.IndexedSeq(G__9835__a,0);
  }
  return unchecked_subtract_int__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9834);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  unchecked_subtract_int.cljs$lang$maxFixedArity = 2;
  unchecked_subtract_int.cljs$lang$applyTo = unchecked_subtract_int__3.cljs$lang$applyTo;
  unchecked_subtract_int.cljs$core$IFn$_invoke$arity$1 = unchecked_subtract_int__1;
  unchecked_subtract_int.cljs$core$IFn$_invoke$arity$2 = unchecked_subtract_int__2;
  unchecked_subtract_int.cljs$core$IFn$_invoke$arity$variadic = unchecked_subtract_int__3.cljs$core$IFn$_invoke$arity$variadic;
  return unchecked_subtract_int;
  })()
  ;
  cljs.core.fix = (function fix(q){
  if((q >= (0))){
  var G__9838 = q;
  return (Math.floor.cljs$core$IFn$_invoke$arity$1 ? Math.floor.cljs$core$IFn$_invoke$arity$1(G__9838) : Math.floor.call(null,G__9838));
  } else {
  var G__9839 = q;
  return (Math.ceil.cljs$core$IFn$_invoke$arity$1 ? Math.ceil.cljs$core$IFn$_invoke$arity$1(G__9839) : Math.ceil.call(null,G__9839));
  }
  });
  /**
  * Coerce to int by stripping decimal places.
  */
  cljs.core.int$ = (function int$(x){
  return (x | (0));
  });
  /**
  * Coerce to int by stripping decimal places.
  */
  cljs.core.unchecked_int = (function unchecked_int(x){
  return cljs.core.fix(x);
  });
  /**
  * Coerce to long by stripping decimal places. Identical to `int'.
  */
  cljs.core.long$ = (function long$(x){
  return cljs.core.fix(x);
  });
  /**
  * Coerce to long by stripping decimal places. Identical to `int'.
  */
  cljs.core.unchecked_long = (function unchecked_long(x){
  return cljs.core.fix(x);
  });
  cljs.core.booleans = (function booleans(x){
  return x;
  });
  cljs.core.bytes = (function bytes(x){
  return x;
  });
  cljs.core.chars = (function chars(x){
  return x;
  });
  cljs.core.shorts = (function shorts(x){
  return x;
  });
  cljs.core.ints = (function ints(x){
  return x;
  });
  cljs.core.floats = (function floats(x){
  return x;
  });
  cljs.core.doubles = (function doubles(x){
  return x;
  });
  cljs.core.longs = (function longs(x){
  return x;
  });
  /**
  * Modulus of num and div with original javascript behavior. i.e. bug for negative numbers
  */
  cljs.core.js_mod = (function js_mod(n,d){
  return (n % d);
  });
  /**
  * Modulus of num and div. Truncates toward negative infinity.
  */
  cljs.core.mod = (function mod(n,d){
  return (((n % d) + d) % d);
  });
  /**
  * quot[ient] of dividing numerator by denominator.
  */
  cljs.core.quot = (function quot(n,d){
  var rem = (n % d);
  return cljs.core.fix(((n - rem) / d));
  });
  /**
  * remainder of dividing numerator by denominator.
  */
  cljs.core.rem = (function rem(n,d){
  var q = cljs.core.quot(n,d);
  return (n - (d * q));
  });
  /**
  * Bitwise exclusive or
  * @param {...*} var_args
  */
  cljs.core.bit_xor = (function() {
  var bit_xor = null;
  var bit_xor__2 = (function (x,y){
  return (x ^ y);
  });
  var bit_xor__3 = (function() { 
  var G__9840__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(bit_xor,(x ^ y),more);
  };
  var G__9840 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9841__i = 0, G__9841__a = new Array(arguments.length -  2);
  while (G__9841__i < G__9841__a.length) {G__9841__a[G__9841__i] = arguments[G__9841__i + 2]; ++G__9841__i;}
    more = new cljs.core.IndexedSeq(G__9841__a,0);
  } 
  return G__9840__delegate.call(this,x,y,more);};
  G__9840.cljs$lang$maxFixedArity = 2;
  G__9840.cljs$lang$applyTo = (function (arglist__9842){
  var x = cljs.core.first(arglist__9842);
  arglist__9842 = cljs.core.next(arglist__9842);
  var y = cljs.core.first(arglist__9842);
  var more = cljs.core.rest(arglist__9842);
  return G__9840__delegate(x,y,more);
  });
  G__9840.cljs$core$IFn$_invoke$arity$variadic = G__9840__delegate;
  return G__9840;
  })()
  ;
  bit_xor = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return bit_xor__2.call(this,x,y);
  default:
  var G__9843 = null;
  if (arguments.length > 2) {
  var G__9844__i = 0, G__9844__a = new Array(arguments.length -  2);
  while (G__9844__i < G__9844__a.length) {G__9844__a[G__9844__i] = arguments[G__9844__i + 2]; ++G__9844__i;}
  G__9843 = new cljs.core.IndexedSeq(G__9844__a,0);
  }
  return bit_xor__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9843);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  bit_xor.cljs$lang$maxFixedArity = 2;
  bit_xor.cljs$lang$applyTo = bit_xor__3.cljs$lang$applyTo;
  bit_xor.cljs$core$IFn$_invoke$arity$2 = bit_xor__2;
  bit_xor.cljs$core$IFn$_invoke$arity$variadic = bit_xor__3.cljs$core$IFn$_invoke$arity$variadic;
  return bit_xor;
  })()
  ;
  /**
  * Bitwise and
  * @param {...*} var_args
  */
  cljs.core.bit_and = (function() {
  var bit_and = null;
  var bit_and__2 = (function (x,y){
  return (x & y);
  });
  var bit_and__3 = (function() { 
  var G__9845__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(bit_and,(x & y),more);
  };
  var G__9845 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9846__i = 0, G__9846__a = new Array(arguments.length -  2);
  while (G__9846__i < G__9846__a.length) {G__9846__a[G__9846__i] = arguments[G__9846__i + 2]; ++G__9846__i;}
    more = new cljs.core.IndexedSeq(G__9846__a,0);
  } 
  return G__9845__delegate.call(this,x,y,more);};
  G__9845.cljs$lang$maxFixedArity = 2;
  G__9845.cljs$lang$applyTo = (function (arglist__9847){
  var x = cljs.core.first(arglist__9847);
  arglist__9847 = cljs.core.next(arglist__9847);
  var y = cljs.core.first(arglist__9847);
  var more = cljs.core.rest(arglist__9847);
  return G__9845__delegate(x,y,more);
  });
  G__9845.cljs$core$IFn$_invoke$arity$variadic = G__9845__delegate;
  return G__9845;
  })()
  ;
  bit_and = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return bit_and__2.call(this,x,y);
  default:
  var G__9848 = null;
  if (arguments.length > 2) {
  var G__9849__i = 0, G__9849__a = new Array(arguments.length -  2);
  while (G__9849__i < G__9849__a.length) {G__9849__a[G__9849__i] = arguments[G__9849__i + 2]; ++G__9849__i;}
  G__9848 = new cljs.core.IndexedSeq(G__9849__a,0);
  }
  return bit_and__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9848);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  bit_and.cljs$lang$maxFixedArity = 2;
  bit_and.cljs$lang$applyTo = bit_and__3.cljs$lang$applyTo;
  bit_and.cljs$core$IFn$_invoke$arity$2 = bit_and__2;
  bit_and.cljs$core$IFn$_invoke$arity$variadic = bit_and__3.cljs$core$IFn$_invoke$arity$variadic;
  return bit_and;
  })()
  ;
  /**
  * Bitwise or
  * @param {...*} var_args
  */
  cljs.core.bit_or = (function() {
  var bit_or = null;
  var bit_or__2 = (function (x,y){
  return (x | y);
  });
  var bit_or__3 = (function() { 
  var G__9850__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(bit_or,(x | y),more);
  };
  var G__9850 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9851__i = 0, G__9851__a = new Array(arguments.length -  2);
  while (G__9851__i < G__9851__a.length) {G__9851__a[G__9851__i] = arguments[G__9851__i + 2]; ++G__9851__i;}
    more = new cljs.core.IndexedSeq(G__9851__a,0);
  } 
  return G__9850__delegate.call(this,x,y,more);};
  G__9850.cljs$lang$maxFixedArity = 2;
  G__9850.cljs$lang$applyTo = (function (arglist__9852){
  var x = cljs.core.first(arglist__9852);
  arglist__9852 = cljs.core.next(arglist__9852);
  var y = cljs.core.first(arglist__9852);
  var more = cljs.core.rest(arglist__9852);
  return G__9850__delegate(x,y,more);
  });
  G__9850.cljs$core$IFn$_invoke$arity$variadic = G__9850__delegate;
  return G__9850;
  })()
  ;
  bit_or = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return bit_or__2.call(this,x,y);
  default:
  var G__9853 = null;
  if (arguments.length > 2) {
  var G__9854__i = 0, G__9854__a = new Array(arguments.length -  2);
  while (G__9854__i < G__9854__a.length) {G__9854__a[G__9854__i] = arguments[G__9854__i + 2]; ++G__9854__i;}
  G__9853 = new cljs.core.IndexedSeq(G__9854__a,0);
  }
  return bit_or__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9853);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  bit_or.cljs$lang$maxFixedArity = 2;
  bit_or.cljs$lang$applyTo = bit_or__3.cljs$lang$applyTo;
  bit_or.cljs$core$IFn$_invoke$arity$2 = bit_or__2;
  bit_or.cljs$core$IFn$_invoke$arity$variadic = bit_or__3.cljs$core$IFn$_invoke$arity$variadic;
  return bit_or;
  })()
  ;
  /**
  * Bitwise and
  * @param {...*} var_args
  */
  cljs.core.bit_and_not = (function() {
  var bit_and_not = null;
  var bit_and_not__2 = (function (x,y){
  return (x & ~y);
  });
  var bit_and_not__3 = (function() { 
  var G__9855__delegate = function (x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(bit_and_not,(x & ~y),more);
  };
  var G__9855 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9856__i = 0, G__9856__a = new Array(arguments.length -  2);
  while (G__9856__i < G__9856__a.length) {G__9856__a[G__9856__i] = arguments[G__9856__i + 2]; ++G__9856__i;}
    more = new cljs.core.IndexedSeq(G__9856__a,0);
  } 
  return G__9855__delegate.call(this,x,y,more);};
  G__9855.cljs$lang$maxFixedArity = 2;
  G__9855.cljs$lang$applyTo = (function (arglist__9857){
  var x = cljs.core.first(arglist__9857);
  arglist__9857 = cljs.core.next(arglist__9857);
  var y = cljs.core.first(arglist__9857);
  var more = cljs.core.rest(arglist__9857);
  return G__9855__delegate(x,y,more);
  });
  G__9855.cljs$core$IFn$_invoke$arity$variadic = G__9855__delegate;
  return G__9855;
  })()
  ;
  bit_and_not = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return bit_and_not__2.call(this,x,y);
  default:
  var G__9858 = null;
  if (arguments.length > 2) {
  var G__9859__i = 0, G__9859__a = new Array(arguments.length -  2);
  while (G__9859__i < G__9859__a.length) {G__9859__a[G__9859__i] = arguments[G__9859__i + 2]; ++G__9859__i;}
  G__9858 = new cljs.core.IndexedSeq(G__9859__a,0);
  }
  return bit_and_not__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9858);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  bit_and_not.cljs$lang$maxFixedArity = 2;
  bit_and_not.cljs$lang$applyTo = bit_and_not__3.cljs$lang$applyTo;
  bit_and_not.cljs$core$IFn$_invoke$arity$2 = bit_and_not__2;
  bit_and_not.cljs$core$IFn$_invoke$arity$variadic = bit_and_not__3.cljs$core$IFn$_invoke$arity$variadic;
  return bit_and_not;
  })()
  ;
  /**
  * Clear bit at index n
  */
  cljs.core.bit_clear = (function bit_clear(x,n){
  return (x & ~(1 << n));
  });
  /**
  * Flip bit at index n
  */
  cljs.core.bit_flip = (function bit_flip(x,n){
  return (x ^ (1 << n));
  });
  /**
  * Bitwise complement
  */
  cljs.core.bit_not = (function bit_not(x){
  return (~ x);
  });
  /**
  * Set bit at index n
  */
  cljs.core.bit_set = (function bit_set(x,n){
  return (x | (1 << n));
  });
  /**
  * Test bit at index n
  */
  cljs.core.bit_test = (function bit_test(x,n){
  return ((x & (1 << n)) != 0);
  });
  /**
  * Bitwise shift left
  */
  cljs.core.bit_shift_left = (function bit_shift_left(x,n){
  return (x << n);
  });
  /**
  * Bitwise shift right
  */
  cljs.core.bit_shift_right = (function bit_shift_right(x,n){
  return (x >> n);
  });
  /**
  * DEPRECATED: Bitwise shift right with zero fill
  */
  cljs.core.bit_shift_right_zero_fill = (function bit_shift_right_zero_fill(x,n){
  return (x >>> n);
  });
  /**
  * Bitwise shift right with zero fill
  */
  cljs.core.unsigned_bit_shift_right = (function unsigned_bit_shift_right(x,n){
  return (x >>> n);
  });
  /**
  * Counts the number of bits set in n
  */
  cljs.core.bit_count = (function bit_count(v){
  var v__$1 = (v - ((v >> (1)) & (1431655765)));
  var v__$2 = ((v__$1 & (858993459)) + ((v__$1 >> (2)) & (858993459)));
  return ((((v__$2 + (v__$2 >> (4))) & (252645135)) * (16843009)) >> (24));
  });
  /**
  * Returns non-nil if nums all have the equivalent
  * value, otherwise false. Behavior on non nums is
  * undefined.
  * @param {...*} var_args
  */
  cljs.core._EQ__EQ_ = (function() {
  var _EQ__EQ_ = null;
  var _EQ__EQ___1 = (function (x){
  return true;
  });
  var _EQ__EQ___2 = (function (x,y){
  return cljs.core._equiv(x,y);
  });
  var _EQ__EQ___3 = (function() { 
  var G__9864__delegate = function (x,y,more){
  while(true){
  if(_EQ__EQ_.cljs$core$IFn$_invoke$arity$2(x,y)){
  if(cljs.core.next(more)){
  var G__9865 = y;
  var G__9866 = cljs.core.first(more);
  var G__9867 = cljs.core.next(more);
  x = G__9865;
  y = G__9866;
  more = G__9867;
  continue;
  } else {
  return _EQ__EQ_.cljs$core$IFn$_invoke$arity$2(y,cljs.core.first(more));
  }
  } else {
  return false;
  }
  break;
  }
  };
  var G__9864 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__9868__i = 0, G__9868__a = new Array(arguments.length -  2);
  while (G__9868__i < G__9868__a.length) {G__9868__a[G__9868__i] = arguments[G__9868__i + 2]; ++G__9868__i;}
    more = new cljs.core.IndexedSeq(G__9868__a,0);
  } 
  return G__9864__delegate.call(this,x,y,more);};
  G__9864.cljs$lang$maxFixedArity = 2;
  G__9864.cljs$lang$applyTo = (function (arglist__9869){
  var x = cljs.core.first(arglist__9869);
  arglist__9869 = cljs.core.next(arglist__9869);
  var y = cljs.core.first(arglist__9869);
  var more = cljs.core.rest(arglist__9869);
  return G__9864__delegate(x,y,more);
  });
  G__9864.cljs$core$IFn$_invoke$arity$variadic = G__9864__delegate;
  return G__9864;
  })()
  ;
  _EQ__EQ_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return _EQ__EQ___1.call(this,x);
  case 2:
  return _EQ__EQ___2.call(this,x,y);
  default:
  var G__9870 = null;
  if (arguments.length > 2) {
  var G__9871__i = 0, G__9871__a = new Array(arguments.length -  2);
  while (G__9871__i < G__9871__a.length) {G__9871__a[G__9871__i] = arguments[G__9871__i + 2]; ++G__9871__i;}
  G__9870 = new cljs.core.IndexedSeq(G__9871__a,0);
  }
  return _EQ__EQ___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__9870);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  _EQ__EQ_.cljs$lang$maxFixedArity = 2;
  _EQ__EQ_.cljs$lang$applyTo = _EQ__EQ___3.cljs$lang$applyTo;
  _EQ__EQ_.cljs$core$IFn$_invoke$arity$1 = _EQ__EQ___1;
  _EQ__EQ_.cljs$core$IFn$_invoke$arity$2 = _EQ__EQ___2;
  _EQ__EQ_.cljs$core$IFn$_invoke$arity$variadic = _EQ__EQ___3.cljs$core$IFn$_invoke$arity$variadic;
  return _EQ__EQ_;
  })()
  ;
  /**
  * Returns true if num is greater than zero, else false
  */
  cljs.core.pos_QMARK_ = (function pos_QMARK_(n){
  return (n > (0));
  });
  cljs.core.zero_QMARK_ = (function zero_QMARK_(n){
  return (n === (0));
  });
  /**
  * Returns true if num is less than zero, else false
  */
  cljs.core.neg_QMARK_ = (function neg_QMARK_(x){
  return (x < (0));
  });
  /**
  * Returns the nth next of coll, (seq coll) when n is 0.
  */
  cljs.core.nthnext = (function nthnext(coll,n){
  var n__$1 = n;
  var xs = cljs.core.seq(coll);
  while(true){
  if((xs) && ((n__$1 > (0)))){
  var G__9872 = (n__$1 - (1));
  var G__9873 = cljs.core.next(xs);
  n__$1 = G__9872;
  xs = G__9873;
  continue;
  } else {
  return xs;
  }
  break;
  }
  });
  /**
  * With no args, returns the empty string. With one arg x, returns
  * x.toString().  (str nil) returns the empty string. With more than
  * one arg, returns the concatenation of the str values of the args.
  * @param {...*} var_args
  */
  cljs.core.str = (function() {
  var str = null;
  var str__0 = (function (){
  return "";
  });
  var str__1 = (function (x){
  if((x == null)){
  return "";
  } else {
  var G__9877 = x;
  return goog.string.buildString(G__9877);
  }
  });
  var str__2 = (function() { 
  var G__9878__delegate = function (x,ys){
  var sb = (new goog.string.StringBuffer(str.cljs$core$IFn$_invoke$arity$1(x)));
  var more = ys;
  while(true){
  if(cljs.core.truth_(more)){
  var G__9879 = sb.append(str.cljs$core$IFn$_invoke$arity$1(cljs.core.first(more)));
  var G__9880 = cljs.core.next(more);
  sb = G__9879;
  more = G__9880;
  continue;
  } else {
  return sb.toString();
  }
  break;
  }
  };
  var G__9878 = function (x,var_args){
  var ys = null;
  if (arguments.length > 1) {
  var G__9881__i = 0, G__9881__a = new Array(arguments.length -  1);
  while (G__9881__i < G__9881__a.length) {G__9881__a[G__9881__i] = arguments[G__9881__i + 1]; ++G__9881__i;}
    ys = new cljs.core.IndexedSeq(G__9881__a,0);
  } 
  return G__9878__delegate.call(this,x,ys);};
  G__9878.cljs$lang$maxFixedArity = 1;
  G__9878.cljs$lang$applyTo = (function (arglist__9882){
  var x = cljs.core.first(arglist__9882);
  var ys = cljs.core.rest(arglist__9882);
  return G__9878__delegate(x,ys);
  });
  G__9878.cljs$core$IFn$_invoke$arity$variadic = G__9878__delegate;
  return G__9878;
  })()
  ;
  str = function(x,var_args){
  var ys = var_args;
  switch(arguments.length){
  case 0:
  return str__0.call(this);
  case 1:
  return str__1.call(this,x);
  default:
  var G__9883 = null;
  if (arguments.length > 1) {
  var G__9884__i = 0, G__9884__a = new Array(arguments.length -  1);
  while (G__9884__i < G__9884__a.length) {G__9884__a[G__9884__i] = arguments[G__9884__i + 1]; ++G__9884__i;}
  G__9883 = new cljs.core.IndexedSeq(G__9884__a,0);
  }
  return str__2.cljs$core$IFn$_invoke$arity$variadic(x, G__9883);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  str.cljs$lang$maxFixedArity = 1;
  str.cljs$lang$applyTo = str__2.cljs$lang$applyTo;
  str.cljs$core$IFn$_invoke$arity$0 = str__0;
  str.cljs$core$IFn$_invoke$arity$1 = str__1;
  str.cljs$core$IFn$_invoke$arity$variadic = str__2.cljs$core$IFn$_invoke$arity$variadic;
  return str;
  })()
  ;
  /**
  * Returns the substring of s beginning at start inclusive, and ending
  * at end (defaults to length of string), exclusive.
  */
  cljs.core.subs = (function() {
  var subs = null;
  var subs__2 = (function (s,start){
  return s.substring(start);
  });
  var subs__3 = (function (s,start,end){
  return s.substring(start,end);
  });
  subs = function(s,start,end){
  switch(arguments.length){
  case 2:
  return subs__2.call(this,s,start);
  case 3:
  return subs__3.call(this,s,start,end);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  subs.cljs$core$IFn$_invoke$arity$2 = subs__2;
  subs.cljs$core$IFn$_invoke$arity$3 = subs__3;
  return subs;
  })()
  ;
  
  /**
  * Assumes x is sequential. Returns true if x equals y, otherwise
  * returns false.
  */
  cljs.core.equiv_sequential = (function equiv_sequential(x,y){
  return cljs.core.boolean$(((cljs.core.sequential_QMARK_(y))?(((cljs.core.counted_QMARK_(x)) && (cljs.core.counted_QMARK_(y)) && (!((cljs.core.count(x) === cljs.core.count(y)))))?false:(function (){var xs = cljs.core.seq(x);
  var ys = cljs.core.seq(y);
  while(true){
  if((xs == null)){
  return (ys == null);
  } else {
  if((ys == null)){
  return false;
  } else {
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.first(xs),cljs.core.first(ys))){
  var G__9885 = cljs.core.next(xs);
  var G__9886 = cljs.core.next(ys);
  xs = G__9885;
  ys = G__9886;
  continue;
  } else {
  return false;
  
  }
  }
  }
  break;
  }
  })()):null));
  });
  cljs.core.hash_coll = (function hash_coll(coll){
  if(cljs.core.seq(coll)){
  var res = cljs.core.hash(cljs.core.first(coll));
  var s = cljs.core.next(coll);
  while(true){
  if((s == null)){
  return res;
  } else {
  var G__9887 = cljs.core.hash_combine(res,cljs.core.hash(cljs.core.first(s)));
  var G__9888 = cljs.core.next(s);
  res = G__9887;
  s = G__9888;
  continue;
  }
  break;
  }
  } else {
  return (0);
  }
  });
  
  cljs.core.hash_imap = (function hash_imap(m){
  var h = (0);
  var s = cljs.core.seq(m);
  while(true){
  if(s){
  var e = cljs.core.first(s);
  var G__9893 = ((h + (cljs.core.hash((function (){var G__9891 = e;
  return (cljs.core.key.cljs$core$IFn$_invoke$arity$1 ? cljs.core.key.cljs$core$IFn$_invoke$arity$1(G__9891) : cljs.core.key.call(null,G__9891));
  })()) ^ cljs.core.hash((function (){var G__9892 = e;
  return (cljs.core.val.cljs$core$IFn$_invoke$arity$1 ? cljs.core.val.cljs$core$IFn$_invoke$arity$1(G__9892) : cljs.core.val.call(null,G__9892));
  })()))) % (4503599627370496));
  var G__9894 = cljs.core.next(s);
  h = G__9893;
  s = G__9894;
  continue;
  } else {
  return h;
  }
  break;
  }
  });
  cljs.core.hash_iset = (function hash_iset(s){
  var h = (0);
  var s__$1 = cljs.core.seq(s);
  while(true){
  if(s__$1){
  var e = cljs.core.first(s__$1);
  var G__9895 = ((h + cljs.core.hash(e)) % (4503599627370496));
  var G__9896 = cljs.core.next(s__$1);
  h = G__9895;
  s__$1 = G__9896;
  continue;
  } else {
  return h;
  }
  break;
  }
  });
  
  
  /**
  * Takes a JavaScript object and a map of names to functions and
  * attaches said functions as methods on the object.  Any references to
  * JavaScript's implicit this (via the this-as macro) will resolve to the
  * object that the function is attached.
  */
  cljs.core.extend_object_BANG_ = (function extend_object_BANG_(obj,fn_map){
  var seq__9907_9917 = cljs.core.seq(fn_map);
  var chunk__9908_9918 = null;
  var count__9909_9919 = (0);
  var i__9910_9920 = (0);
  while(true){
  if((i__9910_9920 < count__9909_9919)){
  var vec__9911_9921 = chunk__9908_9918.cljs$core$IIndexed$_nth$arity$2(null,i__9910_9920);
  var key_name_9922 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9911_9921,(0),null);
  var f_9923 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9911_9921,(1),null);
  var str_name_9924 = (function (){var G__9912 = key_name_9922;
  return (cljs.core.name.cljs$core$IFn$_invoke$arity$1 ? cljs.core.name.cljs$core$IFn$_invoke$arity$1(G__9912) : cljs.core.name.call(null,G__9912));
  })();
  (obj[str_name_9924] = f_9923);
  
  var G__9925 = seq__9907_9917;
  var G__9926 = chunk__9908_9918;
  var G__9927 = count__9909_9919;
  var G__9928 = (i__9910_9920 + (1));
  seq__9907_9917 = G__9925;
  chunk__9908_9918 = G__9926;
  count__9909_9919 = G__9927;
  i__9910_9920 = G__9928;
  continue;
  } else {
  var temp__4126__auto___9929 = cljs.core.seq(seq__9907_9917);
  if(temp__4126__auto___9929){
  var seq__9907_9930__$1 = temp__4126__auto___9929;
  if(cljs.core.chunked_seq_QMARK_(seq__9907_9930__$1)){
  var c__4595__auto___9931 = (function (){var G__9913 = seq__9907_9930__$1;
  return (cljs.core.chunk_first.cljs$core$IFn$_invoke$arity$1 ? cljs.core.chunk_first.cljs$core$IFn$_invoke$arity$1(G__9913) : cljs.core.chunk_first.call(null,G__9913));
  })();
  var G__9932 = (function (){var G__9914 = seq__9907_9930__$1;
  return (cljs.core.chunk_rest.cljs$core$IFn$_invoke$arity$1 ? cljs.core.chunk_rest.cljs$core$IFn$_invoke$arity$1(G__9914) : cljs.core.chunk_rest.call(null,G__9914));
  })();
  var G__9933 = c__4595__auto___9931;
  var G__9934 = cljs.core.count(c__4595__auto___9931);
  var G__9935 = (0);
  seq__9907_9917 = G__9932;
  chunk__9908_9918 = G__9933;
  count__9909_9919 = G__9934;
  i__9910_9920 = G__9935;
  continue;
  } else {
  var vec__9915_9936 = cljs.core.first(seq__9907_9930__$1);
  var key_name_9937 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9915_9936,(0),null);
  var f_9938 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__9915_9936,(1),null);
  var str_name_9939 = (function (){var G__9916 = key_name_9937;
  return (cljs.core.name.cljs$core$IFn$_invoke$arity$1 ? cljs.core.name.cljs$core$IFn$_invoke$arity$1(G__9916) : cljs.core.name.call(null,G__9916));
  })();
  (obj[str_name_9939] = f_9938);
  
  var G__9940 = cljs.core.next(seq__9907_9930__$1);
  var G__9941 = null;
  var G__9942 = (0);
  var G__9943 = (0);
  seq__9907_9917 = G__9940;
  chunk__9908_9918 = G__9941;
  count__9909_9919 = G__9942;
  i__9910_9920 = G__9943;
  continue;
  }
  } else {
  }
  }
  break;
  }
  
  return obj;
  });
  
  /**
  * @constructor
  */
  cljs.core.List = (function (meta,first,rest,count,__hash){
  this.meta = meta;
  this.first = first;
  this.rest = rest;
  this.count = count;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 65937646;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.List.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.List.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.List.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.List.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.List(self__.meta,self__.first,self__.rest,self__.count,self__.__hash));
  });
  
  cljs.core.List.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.count === (1))){
  return null;
  } else {
  return self__.rest;
  }
  });
  
  cljs.core.List.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.count;
  });
  
  cljs.core.List.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.first;
  });
  
  cljs.core.List.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._rest(coll__$1);
  });
  
  cljs.core.List.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.List.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.List.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.List.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.List.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.List.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.first;
  });
  
  cljs.core.List.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.count === (1))){
  return cljs.core.List.EMPTY;
  } else {
  return self__.rest;
  }
  });
  
  cljs.core.List.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.List.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.List(meta__$1,self__.first,self__.rest,self__.count,self__.__hash));
  });
  
  cljs.core.List.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.List(self__.meta,o,coll__$1,(self__.count + (1)),null));
  });
  
  cljs.core.List.cljs$lang$type = true;
  
  cljs.core.List.cljs$lang$ctorStr = "cljs.core/List";
  
  cljs.core.List.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/List");
  });
  
  cljs.core.__GT_List = (function __GT_List(meta,first,rest,count,__hash){
  return (new cljs.core.List(meta,first,rest,count,__hash));
  });
  
  (cljs.core.List.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.EmptyList = (function (meta){
  this.meta = meta;
  this.cljs$lang$protocol_mask$partition0$ = 65937614;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.EmptyList.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.EmptyList.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.EmptyList(self__.meta));
  });
  
  cljs.core.EmptyList.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return null;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (0);
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return null;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  throw (new Error("Can't pop empty list"));
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.empty_ordered_hash;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.EmptyList.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return null;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.List.EMPTY;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return null;
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.EmptyList(meta__$1));
  });
  
  cljs.core.EmptyList.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.List(self__.meta,o,null,(1),null));
  });
  
  cljs.core.EmptyList.cljs$lang$type = true;
  
  cljs.core.EmptyList.cljs$lang$ctorStr = "cljs.core/EmptyList";
  
  cljs.core.EmptyList.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/EmptyList");
  });
  
  cljs.core.__GT_EmptyList = (function __GT_EmptyList(meta){
  return (new cljs.core.EmptyList(meta));
  });
  
  cljs.core.List.EMPTY = (new cljs.core.EmptyList(null));
  (cljs.core.EmptyList.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.reversible_QMARK_ = (function reversible_QMARK_(coll){
  var G__9945 = coll;
  if(G__9945){
  var bit__4489__auto__ = (G__9945.cljs$lang$protocol_mask$partition0$ & (134217728));
  if((bit__4489__auto__) || (G__9945.cljs$core$IReversible$)){
  return true;
  } else {
  if((!G__9945.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IReversible,G__9945);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IReversible,G__9945);
  }
  });
  cljs.core.rseq = (function rseq(coll){
  return cljs.core._rseq(coll);
  });
  /**
  * Returns a seq of the items in coll in reverse order. Not lazy.
  */
  cljs.core.reverse = (function reverse(coll){
  if(cljs.core.reversible_QMARK_(coll)){
  return cljs.core.rseq(coll);
  } else {
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj,cljs.core.List.EMPTY,coll);
  }
  });
  /**
  * @param {...*} var_args
  */
  cljs.core.list = (function() { 
  var list__delegate = function (xs){
  var arr = ((((xs instanceof cljs.core.IndexedSeq)) && ((xs.i === (0))))?xs.arr:(function (){var arr = [];
  var xs__$1 = xs;
  while(true){
  if(!((xs__$1 == null))){
  arr.push(xs__$1.cljs$core$ISeq$_first$arity$1(null));
  
  var G__9946 = xs__$1.cljs$core$INext$_next$arity$1(null);
  xs__$1 = G__9946;
  continue;
  } else {
  return arr;
  }
  break;
  }
  })());
  var i = arr.length;
  var r = cljs.core.List.EMPTY;
  while(true){
  if((i > (0))){
  var G__9947 = (i - (1));
  var G__9948 = r.cljs$core$ICollection$_conj$arity$2(null,(arr[(i - (1))]));
  i = G__9947;
  r = G__9948;
  continue;
  } else {
  return r;
  }
  break;
  }
  };
  var list = function (var_args){
  var xs = null;
  if (arguments.length > 0) {
  var G__9949__i = 0, G__9949__a = new Array(arguments.length -  0);
  while (G__9949__i < G__9949__a.length) {G__9949__a[G__9949__i] = arguments[G__9949__i + 0]; ++G__9949__i;}
    xs = new cljs.core.IndexedSeq(G__9949__a,0);
  } 
  return list__delegate.call(this,xs);};
  list.cljs$lang$maxFixedArity = 0;
  list.cljs$lang$applyTo = (function (arglist__9950){
  var xs = cljs.core.seq(arglist__9950);
  return list__delegate(xs);
  });
  list.cljs$core$IFn$_invoke$arity$variadic = list__delegate;
  return list;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.Cons = (function (meta,first,rest,__hash){
  this.meta = meta;
  this.first = first;
  this.rest = rest;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 65929452;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.Cons.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.Cons.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.Cons.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.Cons.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.Cons(self__.meta,self__.first,self__.rest,self__.__hash));
  });
  
  cljs.core.Cons.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.rest == null)){
  return null;
  } else {
  return cljs.core.seq(self__.rest);
  }
  });
  
  cljs.core.Cons.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.Cons.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.Cons.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.Cons.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.Cons.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.Cons.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.first;
  });
  
  cljs.core.Cons.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.rest == null)){
  return cljs.core.List.EMPTY;
  } else {
  return self__.rest;
  }
  });
  
  cljs.core.Cons.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.Cons.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.Cons(meta__$1,self__.first,self__.rest,self__.__hash));
  });
  
  cljs.core.Cons.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.Cons(null,o,coll__$1,self__.__hash));
  });
  
  cljs.core.Cons.cljs$lang$type = true;
  
  cljs.core.Cons.cljs$lang$ctorStr = "cljs.core/Cons";
  
  cljs.core.Cons.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Cons");
  });
  
  cljs.core.__GT_Cons = (function __GT_Cons(meta,first,rest,__hash){
  return (new cljs.core.Cons(meta,first,rest,__hash));
  });
  
  (cljs.core.Cons.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * Returns a new seq where x is the first element and seq is the rest.
  */
  cljs.core.cons = (function cons(x,coll){
  if((function (){var or__3808__auto__ = (coll == null);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var G__9954 = coll;
  if(G__9954){
  var bit__4482__auto__ = (G__9954.cljs$lang$protocol_mask$partition0$ & (64));
  if((bit__4482__auto__) || (G__9954.cljs$core$ISeq$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  }
  })()){
  return (new cljs.core.Cons(null,x,coll,null));
  } else {
  return (new cljs.core.Cons(null,x,cljs.core.seq(coll),null));
  }
  });
  cljs.core.list_QMARK_ = (function list_QMARK_(x){
  var G__9956 = x;
  if(G__9956){
  var bit__4489__auto__ = (G__9956.cljs$lang$protocol_mask$partition0$ & (33554432));
  if((bit__4489__auto__) || (G__9956.cljs$core$IList$)){
  return true;
  } else {
  if((!G__9956.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IList,G__9956);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IList,G__9956);
  }
  });
  cljs.core.hash_keyword = (function hash_keyword(k){
  return ((cljs.core.hash_symbol(k) + (2654435769)) | (0));
  });
  cljs.core.compare_keywords = (function compare_keywords(a,b){
  if((a.fqn === b.fqn)){
  return (0);
  } else {
  if(cljs.core.truth_((function (){var and__3796__auto__ = cljs.core.not(a.ns);
  if(and__3796__auto__){
  return b.ns;
  } else {
  return and__3796__auto__;
  }
  })())){
  return (-1);
  } else {
  if(cljs.core.truth_(a.ns)){
  if(cljs.core.not(b.ns)){
  return (1);
  } else {
  var nsc = (function (){var G__9963 = a.ns;
  var G__9964 = b.ns;
  return goog.array.defaultCompare(G__9963,G__9964);
  })();
  if(((0) === nsc)){
  var G__9965 = a.name;
  var G__9966 = b.name;
  return goog.array.defaultCompare(G__9965,G__9966);
  } else {
  return nsc;
  }
  }
  } else {
  var G__9967 = a.name;
  var G__9968 = b.name;
  return goog.array.defaultCompare(G__9967,G__9968);
  
  }
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.Keyword = (function (ns,name,fqn,_hash){
  this.ns = ns;
  this.name = name;
  this.fqn = fqn;
  this._hash = _hash;
  this.cljs$lang$protocol_mask$partition0$ = 2153775105;
  this.cljs$lang$protocol_mask$partition1$ = 4096;
  })
  cljs.core.Keyword.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (o,writer,_){
  var self__ = this;
  var o__$1 = this;
  return cljs.core._write(writer,[cljs.core.str(":"),cljs.core.str(self__.fqn)].join(''));
  });
  
  cljs.core.Keyword.prototype.cljs$core$INamed$_name$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.name;
  });
  
  cljs.core.Keyword.prototype.cljs$core$INamed$_namespace$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.ns;
  });
  
  cljs.core.Keyword.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  var h__4229__auto__ = self__._hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_keyword(this$__$1);
  self__._hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.Keyword.prototype.call = (function() {
  var G__9970 = null;
  var G__9970__2 = (function (self__,coll){
  var self__ = this;
  var self____$1 = this;
  var kw = self____$1;
  return cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,kw);
  });
  var G__9970__3 = (function (self__,coll,not_found){
  var self__ = this;
  var self____$1 = this;
  var kw = self____$1;
  return cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,kw,not_found);
  });
  G__9970 = function(self__,coll,not_found){
  switch(arguments.length){
  case 2:
  return G__9970__2.call(this,self__,coll);
  case 3:
  return G__9970__3.call(this,self__,coll,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__9970.cljs$core$IFn$_invoke$arity$2 = G__9970__2;
  G__9970.cljs$core$IFn$_invoke$arity$3 = G__9970__3;
  return G__9970;
  })()
  ;
  
  cljs.core.Keyword.prototype.apply = (function (self__,args9969){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args9969)));
  });
  
  cljs.core.Keyword.prototype.cljs$core$IFn$_invoke$arity$1 = (function (coll){
  var self__ = this;
  var kw = this;
  return cljs.core.get.cljs$core$IFn$_invoke$arity$2(coll,kw);
  });
  
  cljs.core.Keyword.prototype.cljs$core$IFn$_invoke$arity$2 = (function (coll,not_found){
  var self__ = this;
  var kw = this;
  return cljs.core.get.cljs$core$IFn$_invoke$arity$3(coll,kw,not_found);
  });
  
  cljs.core.Keyword.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
  var self__ = this;
  var ___$1 = this;
  if((other instanceof cljs.core.Keyword)){
  return (self__.fqn === other.fqn);
  } else {
  return false;
  }
  });
  
  cljs.core.Keyword.prototype.toString = (function (){
  var self__ = this;
  var _ = this;
  return [cljs.core.str(":"),cljs.core.str(self__.fqn)].join('');
  });
  
  cljs.core.Keyword.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.Keyword.cljs$lang$type = true;
  
  cljs.core.Keyword.cljs$lang$ctorStr = "cljs.core/Keyword";
  
  cljs.core.Keyword.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Keyword");
  });
  
  cljs.core.__GT_Keyword = (function __GT_Keyword(ns,name,fqn,_hash){
  return (new cljs.core.Keyword(ns,name,fqn,_hash));
  });
  
  cljs.core.keyword_QMARK_ = (function keyword_QMARK_(x){
  return (x instanceof cljs.core.Keyword);
  });
  cljs.core.keyword_identical_QMARK_ = (function keyword_identical_QMARK_(x,y){
  if((x === y)){
  return true;
  } else {
  if(((x instanceof cljs.core.Keyword)) && ((y instanceof cljs.core.Keyword))){
  return (x.fqn === y.fqn);
  } else {
  return false;
  }
  }
  });
  /**
  * Returns the namespace String of a symbol or keyword, or nil if not present.
  */
  cljs.core.namespace = (function namespace(x){
  if((function (){var G__9972 = x;
  if(G__9972){
  var bit__4482__auto__ = (G__9972.cljs$lang$protocol_mask$partition1$ & (4096));
  if((bit__4482__auto__) || (G__9972.cljs$core$INamed$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return x.cljs$core$INamed$_namespace$arity$1(null);
  } else {
  throw (new Error([cljs.core.str("Doesn't support namespace: "),cljs.core.str(x)].join('')));
  }
  });
  /**
  * Returns a Keyword with the given namespace and name.  Do not use :
  * in the keyword strings, it will be added automatically.
  */
  cljs.core.keyword = (function() {
  var keyword = null;
  var keyword__1 = (function (name){
  if((name instanceof cljs.core.Keyword)){
  return name;
  } else {
  if((name instanceof cljs.core.Symbol)){
  return (new cljs.core.Keyword(cljs.core.namespace(name),(function (){var G__9974 = name;
  return (cljs.core.name.cljs$core$IFn$_invoke$arity$1 ? cljs.core.name.cljs$core$IFn$_invoke$arity$1(G__9974) : cljs.core.name.call(null,G__9974));
  })(),name.str,null));
  } else {
  if(typeof name === 'string'){
  var parts = name.split("/");
  if((parts.length === (2))){
  return (new cljs.core.Keyword((parts[(0)]),(parts[(1)]),name,null));
  } else {
  return (new cljs.core.Keyword(null,(parts[(0)]),name,null));
  }
  } else {
  return null;
  }
  }
  }
  });
  var keyword__2 = (function (ns,name){
  return (new cljs.core.Keyword(ns,name,[cljs.core.str((cljs.core.truth_(ns)?[cljs.core.str(ns),cljs.core.str("/")].join(''):null)),cljs.core.str(name)].join(''),null));
  });
  keyword = function(ns,name){
  switch(arguments.length){
  case 1:
  return keyword__1.call(this,ns);
  case 2:
  return keyword__2.call(this,ns,name);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  keyword.cljs$core$IFn$_invoke$arity$1 = keyword__1;
  keyword.cljs$core$IFn$_invoke$arity$2 = keyword__2;
  return keyword;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.LazySeq = (function (meta,fn,s,__hash){
  this.meta = meta;
  this.fn = fn;
  this.s = s;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374988;
  })
  cljs.core.LazySeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.LazySeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.LazySeq.prototype.sval = (function (){
  var self__ = this;
  var coll = this;
  if((self__.fn == null)){
  return self__.s;
  } else {
  self__.s = (function (){return (self__.fn.cljs$core$IFn$_invoke$arity$0 ? self__.fn.cljs$core$IFn$_invoke$arity$0() : self__.fn.call(null));
  })();
  
  self__.fn = null;
  
  return self__.s;
  }
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.LazySeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  cljs.core._seq(coll__$1);
  
  if((self__.s == null)){
  return null;
  } else {
  return cljs.core.next(self__.s);
  }
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.LazySeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  cljs.core._seq(coll__$1);
  
  if((self__.s == null)){
  return null;
  } else {
  return cljs.core.first(self__.s);
  }
  });
  
  cljs.core.LazySeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  cljs.core._seq(coll__$1);
  
  if(!((self__.s == null))){
  return cljs.core.rest(self__.s);
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.LazySeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  coll__$1.sval();
  
  if((self__.s == null)){
  return null;
  } else {
  var ls = self__.s;
  while(true){
  if((ls instanceof cljs.core.LazySeq)){
  var G__9975 = ls.sval();
  ls = G__9975;
  continue;
  } else {
  self__.s = ls;
  
  return cljs.core.seq(self__.s);
  }
  break;
  }
  }
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.LazySeq(meta__$1,self__.fn,self__.s,self__.__hash));
  });
  
  cljs.core.LazySeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.LazySeq.cljs$lang$type = true;
  
  cljs.core.LazySeq.cljs$lang$ctorStr = "cljs.core/LazySeq";
  
  cljs.core.LazySeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/LazySeq");
  });
  
  cljs.core.__GT_LazySeq = (function __GT_LazySeq(meta,fn,s,__hash){
  return (new cljs.core.LazySeq(meta,fn,s,__hash));
  });
  
  (cljs.core.LazySeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.ChunkBuffer = (function (buf,end){
  this.buf = buf;
  this.end = end;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 2;
  })
  cljs.core.ChunkBuffer.prototype.cljs$core$ICounted$_count$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.end;
  });
  
  cljs.core.ChunkBuffer.prototype.add = (function (o){
  var self__ = this;
  var _ = this;
  (self__.buf[self__.end] = o);
  
  return self__.end = (self__.end + (1));
  });
  
  cljs.core.ChunkBuffer.prototype.chunk = (function (o){
  var self__ = this;
  var _ = this;
  var ret = (new cljs.core.ArrayChunk(self__.buf,(0),self__.end));
  self__.buf = null;
  
  return ret;
  });
  
  cljs.core.ChunkBuffer.cljs$lang$type = true;
  
  cljs.core.ChunkBuffer.cljs$lang$ctorStr = "cljs.core/ChunkBuffer";
  
  cljs.core.ChunkBuffer.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ChunkBuffer");
  });
  
  cljs.core.__GT_ChunkBuffer = (function __GT_ChunkBuffer(buf,end){
  return (new cljs.core.ChunkBuffer(buf,end));
  });
  
  cljs.core.chunk_buffer = (function chunk_buffer(capacity){
  return (new cljs.core.ChunkBuffer((new Array(capacity)),(0)));
  });
  
  /**
  * @constructor
  */
  cljs.core.ArrayChunk = (function (arr,off,end){
  this.arr = arr;
  this.off = off;
  this.end = end;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 524306;
  })
  cljs.core.ArrayChunk.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,(self__.arr[self__.off]),(self__.off + (1)));
  });
  
  cljs.core.ArrayChunk.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.array_reduce.cljs$core$IFn$_invoke$arity$4(self__.arr,f,start,self__.off);
  });
  
  cljs.core.ArrayChunk.prototype.cljs$core$IChunk$ = true;
  
  cljs.core.ArrayChunk.prototype.cljs$core$IChunk$_drop_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.off === self__.end)){
  throw (new Error("-drop-first of empty chunk"));
  } else {
  return (new cljs.core.ArrayChunk(self__.arr,(self__.off + (1)),self__.end));
  }
  });
  
  cljs.core.ArrayChunk.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,i){
  var self__ = this;
  var coll__$1 = this;
  return (self__.arr[(self__.off + i)]);
  });
  
  cljs.core.ArrayChunk.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,i,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(((i >= (0))) && ((i < (self__.end - self__.off)))){
  return (self__.arr[(self__.off + i)]);
  } else {
  return not_found;
  }
  });
  
  cljs.core.ArrayChunk.prototype.cljs$core$ICounted$_count$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (self__.end - self__.off);
  });
  
  cljs.core.ArrayChunk.cljs$lang$type = true;
  
  cljs.core.ArrayChunk.cljs$lang$ctorStr = "cljs.core/ArrayChunk";
  
  cljs.core.ArrayChunk.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ArrayChunk");
  });
  
  cljs.core.__GT_ArrayChunk = (function __GT_ArrayChunk(arr,off,end){
  return (new cljs.core.ArrayChunk(arr,off,end));
  });
  
  cljs.core.array_chunk = (function() {
  var array_chunk = null;
  var array_chunk__1 = (function (arr){
  return (new cljs.core.ArrayChunk(arr,(0),arr.length));
  });
  var array_chunk__2 = (function (arr,off){
  return (new cljs.core.ArrayChunk(arr,off,arr.length));
  });
  var array_chunk__3 = (function (arr,off,end){
  return (new cljs.core.ArrayChunk(arr,off,end));
  });
  array_chunk = function(arr,off,end){
  switch(arguments.length){
  case 1:
  return array_chunk__1.call(this,arr);
  case 2:
  return array_chunk__2.call(this,arr,off);
  case 3:
  return array_chunk__3.call(this,arr,off,end);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  array_chunk.cljs$core$IFn$_invoke$arity$1 = array_chunk__1;
  array_chunk.cljs$core$IFn$_invoke$arity$2 = array_chunk__2;
  array_chunk.cljs$core$IFn$_invoke$arity$3 = array_chunk__3;
  return array_chunk;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.ChunkedCons = (function (chunk,more,meta,__hash){
  this.chunk = chunk;
  this.more = more;
  this.meta = meta;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 31850732;
  this.cljs$lang$protocol_mask$partition1$ = 1536;
  })
  cljs.core.ChunkedCons.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.ChunkedCons.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((cljs.core._count(self__.chunk) > (1))){
  return (new cljs.core.ChunkedCons(cljs.core._drop_first(self__.chunk),self__.more,self__.meta,null));
  } else {
  var more__$1 = cljs.core._seq(self__.more);
  if((more__$1 == null)){
  return null;
  } else {
  return more__$1;
  }
  }
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.chunk,(0));
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((cljs.core._count(self__.chunk) > (1))){
  return (new cljs.core.ChunkedCons(cljs.core._drop_first(self__.chunk),self__.more,self__.meta,null));
  } else {
  if((self__.more == null)){
  return cljs.core.List.EMPTY;
  } else {
  return self__.more;
  }
  }
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IChunkedSeq$_chunked_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.chunk;
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IChunkedSeq$_chunked_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.more == null)){
  return cljs.core.List.EMPTY;
  } else {
  return self__.more;
  }
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,m){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.ChunkedCons(self__.chunk,self__.more,m,self__.__hash));
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this$,o){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core.cons(o,this$__$1);
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IChunkedNext$_chunked_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.more == null)){
  return null;
  } else {
  return self__.more;
  }
  });
  
  cljs.core.ChunkedCons.cljs$lang$type = true;
  
  cljs.core.ChunkedCons.cljs$lang$ctorStr = "cljs.core/ChunkedCons";
  
  cljs.core.ChunkedCons.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ChunkedCons");
  });
  
  cljs.core.__GT_ChunkedCons = (function __GT_ChunkedCons(chunk,more,meta,__hash){
  return (new cljs.core.ChunkedCons(chunk,more,meta,__hash));
  });
  
  (cljs.core.ChunkedCons.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.chunk_cons = (function chunk_cons(chunk,rest){
  if((cljs.core._count(chunk) === (0))){
  return rest;
  } else {
  return (new cljs.core.ChunkedCons(chunk,rest,null,null));
  }
  });
  cljs.core.chunk_append = (function chunk_append(b,x){
  return b.add(x);
  });
  cljs.core.chunk = (function chunk(b){
  return b.chunk();
  });
  cljs.core.chunk_first = (function chunk_first(s){
  return cljs.core._chunked_first(s);
  });
  cljs.core.chunk_rest = (function chunk_rest(s){
  return cljs.core._chunked_rest(s);
  });
  cljs.core.chunk_next = (function chunk_next(s){
  if((function (){var G__9977 = s;
  if(G__9977){
  var bit__4482__auto__ = (G__9977.cljs$lang$protocol_mask$partition1$ & (1024));
  if((bit__4482__auto__) || (G__9977.cljs$core$IChunkedNext$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return cljs.core._chunked_next(s);
  } else {
  return cljs.core.seq(cljs.core._chunked_rest(s));
  }
  });
  /**
  * Naive impl of to-array as a start.
  */
  cljs.core.to_array = (function to_array(s){
  var ary = [];
  var s__$1 = s;
  while(true){
  if(cljs.core.seq(s__$1)){
  ary.push(cljs.core.first(s__$1));
  
  var G__9978 = cljs.core.next(s__$1);
  s__$1 = G__9978;
  continue;
  } else {
  return ary;
  }
  break;
  }
  });
  /**
  * Returns a (potentially-ragged) 2-dimensional array
  * containing the contents of coll.
  */
  cljs.core.to_array_2d = (function to_array_2d(coll){
  var ret = (new Array(cljs.core.count(coll)));
  var i_9979 = (0);
  var xs_9980 = cljs.core.seq(coll);
  while(true){
  if(xs_9980){
  (ret[i_9979] = cljs.core.to_array(cljs.core.first(xs_9980)));
  
  var G__9981 = (i_9979 + (1));
  var G__9982 = cljs.core.next(xs_9980);
  i_9979 = G__9981;
  xs_9980 = G__9982;
  continue;
  } else {
  }
  break;
  }
  
  return ret;
  });
  cljs.core.int_array = (function() {
  var int_array = null;
  var int_array__1 = (function (size_or_seq){
  if(typeof size_or_seq === 'number'){
  return int_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
  } else {
  return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
  }
  });
  var int_array__2 = (function (size,init_val_or_seq){
  var a = (new Array(size));
  if(cljs.core.seq_QMARK_(init_val_or_seq)){
  var s = cljs.core.seq(init_val_or_seq);
  var i = (0);
  var s__$1 = s;
  while(true){
  if((s__$1) && ((i < size))){
  (a[i] = cljs.core.first(s__$1));
  
  var G__9985 = (i + (1));
  var G__9986 = cljs.core.next(s__$1);
  i = G__9985;
  s__$1 = G__9986;
  continue;
  } else {
  return a;
  }
  break;
  }
  } else {
  var n__4695__auto___9987 = size;
  var i_9988 = (0);
  while(true){
  if((i_9988 < n__4695__auto___9987)){
  (a[i_9988] = init_val_or_seq);
  
  var G__9989 = (i_9988 + (1));
  i_9988 = G__9989;
  continue;
  } else {
  }
  break;
  }
  
  return a;
  }
  });
  int_array = function(size,init_val_or_seq){
  switch(arguments.length){
  case 1:
  return int_array__1.call(this,size);
  case 2:
  return int_array__2.call(this,size,init_val_or_seq);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  int_array.cljs$core$IFn$_invoke$arity$1 = int_array__1;
  int_array.cljs$core$IFn$_invoke$arity$2 = int_array__2;
  return int_array;
  })()
  ;
  cljs.core.long_array = (function() {
  var long_array = null;
  var long_array__1 = (function (size_or_seq){
  if(typeof size_or_seq === 'number'){
  return long_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
  } else {
  return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
  }
  });
  var long_array__2 = (function (size,init_val_or_seq){
  var a = (new Array(size));
  if(cljs.core.seq_QMARK_(init_val_or_seq)){
  var s = cljs.core.seq(init_val_or_seq);
  var i = (0);
  var s__$1 = s;
  while(true){
  if((s__$1) && ((i < size))){
  (a[i] = cljs.core.first(s__$1));
  
  var G__9992 = (i + (1));
  var G__9993 = cljs.core.next(s__$1);
  i = G__9992;
  s__$1 = G__9993;
  continue;
  } else {
  return a;
  }
  break;
  }
  } else {
  var n__4695__auto___9994 = size;
  var i_9995 = (0);
  while(true){
  if((i_9995 < n__4695__auto___9994)){
  (a[i_9995] = init_val_or_seq);
  
  var G__9996 = (i_9995 + (1));
  i_9995 = G__9996;
  continue;
  } else {
  }
  break;
  }
  
  return a;
  }
  });
  long_array = function(size,init_val_or_seq){
  switch(arguments.length){
  case 1:
  return long_array__1.call(this,size);
  case 2:
  return long_array__2.call(this,size,init_val_or_seq);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  long_array.cljs$core$IFn$_invoke$arity$1 = long_array__1;
  long_array.cljs$core$IFn$_invoke$arity$2 = long_array__2;
  return long_array;
  })()
  ;
  cljs.core.double_array = (function() {
  var double_array = null;
  var double_array__1 = (function (size_or_seq){
  if(typeof size_or_seq === 'number'){
  return double_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
  } else {
  return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
  }
  });
  var double_array__2 = (function (size,init_val_or_seq){
  var a = (new Array(size));
  if(cljs.core.seq_QMARK_(init_val_or_seq)){
  var s = cljs.core.seq(init_val_or_seq);
  var i = (0);
  var s__$1 = s;
  while(true){
  if((s__$1) && ((i < size))){
  (a[i] = cljs.core.first(s__$1));
  
  var G__9999 = (i + (1));
  var G__10000 = cljs.core.next(s__$1);
  i = G__9999;
  s__$1 = G__10000;
  continue;
  } else {
  return a;
  }
  break;
  }
  } else {
  var n__4695__auto___10001 = size;
  var i_10002 = (0);
  while(true){
  if((i_10002 < n__4695__auto___10001)){
  (a[i_10002] = init_val_or_seq);
  
  var G__10003 = (i_10002 + (1));
  i_10002 = G__10003;
  continue;
  } else {
  }
  break;
  }
  
  return a;
  }
  });
  double_array = function(size,init_val_or_seq){
  switch(arguments.length){
  case 1:
  return double_array__1.call(this,size);
  case 2:
  return double_array__2.call(this,size,init_val_or_seq);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  double_array.cljs$core$IFn$_invoke$arity$1 = double_array__1;
  double_array.cljs$core$IFn$_invoke$arity$2 = double_array__2;
  return double_array;
  })()
  ;
  cljs.core.object_array = (function() {
  var object_array = null;
  var object_array__1 = (function (size_or_seq){
  if(typeof size_or_seq === 'number'){
  return object_array.cljs$core$IFn$_invoke$arity$2(size_or_seq,null);
  } else {
  return cljs.core.into_array.cljs$core$IFn$_invoke$arity$1(size_or_seq);
  }
  });
  var object_array__2 = (function (size,init_val_or_seq){
  var a = (new Array(size));
  if(cljs.core.seq_QMARK_(init_val_or_seq)){
  var s = cljs.core.seq(init_val_or_seq);
  var i = (0);
  var s__$1 = s;
  while(true){
  if((s__$1) && ((i < size))){
  (a[i] = cljs.core.first(s__$1));
  
  var G__10006 = (i + (1));
  var G__10007 = cljs.core.next(s__$1);
  i = G__10006;
  s__$1 = G__10007;
  continue;
  } else {
  return a;
  }
  break;
  }
  } else {
  var n__4695__auto___10008 = size;
  var i_10009 = (0);
  while(true){
  if((i_10009 < n__4695__auto___10008)){
  (a[i_10009] = init_val_or_seq);
  
  var G__10010 = (i_10009 + (1));
  i_10009 = G__10010;
  continue;
  } else {
  }
  break;
  }
  
  return a;
  }
  });
  object_array = function(size,init_val_or_seq){
  switch(arguments.length){
  case 1:
  return object_array__1.call(this,size);
  case 2:
  return object_array__2.call(this,size,init_val_or_seq);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  object_array.cljs$core$IFn$_invoke$arity$1 = object_array__1;
  object_array.cljs$core$IFn$_invoke$arity$2 = object_array__2;
  return object_array;
  })()
  ;
  cljs.core.bounded_count = (function bounded_count(s,n){
  if(cljs.core.counted_QMARK_(s)){
  return cljs.core.count(s);
  } else {
  var s__$1 = s;
  var i = n;
  var sum = (0);
  while(true){
  if(((i > (0))) && (cljs.core.seq(s__$1))){
  var G__10011 = cljs.core.next(s__$1);
  var G__10012 = (i - (1));
  var G__10013 = (sum + (1));
  s__$1 = G__10011;
  i = G__10012;
  sum = G__10013;
  continue;
  } else {
  return sum;
  }
  break;
  }
  }
  });
  cljs.core.spread = (function spread(arglist){
  if((arglist == null)){
  return null;
  } else {
  if((cljs.core.next(arglist) == null)){
  return cljs.core.seq(cljs.core.first(arglist));
  } else {
  return cljs.core.cons(cljs.core.first(arglist),spread(cljs.core.next(arglist)));
  
  }
  }
  });
  /**
  * Returns a lazy seq representing the concatenation of the elements in the supplied colls.
  * @param {...*} var_args
  */
  cljs.core.concat = (function() {
  var concat = null;
  var concat__0 = (function (){
  return (new cljs.core.LazySeq(null,(function (){
  return null;
  }),null,null));
  });
  var concat__1 = (function (x){
  return (new cljs.core.LazySeq(null,(function (){
  return x;
  }),null,null));
  });
  var concat__2 = (function (x,y){
  return (new cljs.core.LazySeq(null,(function (){
  var s = cljs.core.seq(x);
  if(s){
  if(cljs.core.chunked_seq_QMARK_(s)){
  return cljs.core.chunk_cons(cljs.core.chunk_first(s),concat.cljs$core$IFn$_invoke$arity$2(cljs.core.chunk_rest(s),y));
  } else {
  return cljs.core.cons(cljs.core.first(s),concat.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(s),y));
  }
  } else {
  return y;
  }
  }),null,null));
  });
  var concat__3 = (function() { 
  var G__10033__delegate = function (x,y,zs){
  var cat = (function cat(xys,zs__$1){
  return (new cljs.core.LazySeq(null,(function (){
  var xys__$1 = cljs.core.seq(xys);
  if(xys__$1){
  if(cljs.core.chunked_seq_QMARK_(xys__$1)){
  return cljs.core.chunk_cons(cljs.core.chunk_first(xys__$1),cat(cljs.core.chunk_rest(xys__$1),zs__$1));
  } else {
  return cljs.core.cons(cljs.core.first(xys__$1),cat(cljs.core.rest(xys__$1),zs__$1));
  }
  } else {
  if(cljs.core.truth_(zs__$1)){
  return cat(cljs.core.first(zs__$1),cljs.core.next(zs__$1));
  } else {
  return null;
  }
  }
  }),null,null));
  });
  return cat(concat.cljs$core$IFn$_invoke$arity$2(x,y),zs);
  };
  var G__10033 = function (x,y,var_args){
  var zs = null;
  if (arguments.length > 2) {
  var G__10034__i = 0, G__10034__a = new Array(arguments.length -  2);
  while (G__10034__i < G__10034__a.length) {G__10034__a[G__10034__i] = arguments[G__10034__i + 2]; ++G__10034__i;}
    zs = new cljs.core.IndexedSeq(G__10034__a,0);
  } 
  return G__10033__delegate.call(this,x,y,zs);};
  G__10033.cljs$lang$maxFixedArity = 2;
  G__10033.cljs$lang$applyTo = (function (arglist__10035){
  var x = cljs.core.first(arglist__10035);
  arglist__10035 = cljs.core.next(arglist__10035);
  var y = cljs.core.first(arglist__10035);
  var zs = cljs.core.rest(arglist__10035);
  return G__10033__delegate(x,y,zs);
  });
  G__10033.cljs$core$IFn$_invoke$arity$variadic = G__10033__delegate;
  return G__10033;
  })()
  ;
  concat = function(x,y,var_args){
  var zs = var_args;
  switch(arguments.length){
  case 0:
  return concat__0.call(this);
  case 1:
  return concat__1.call(this,x);
  case 2:
  return concat__2.call(this,x,y);
  default:
  var G__10036 = null;
  if (arguments.length > 2) {
  var G__10037__i = 0, G__10037__a = new Array(arguments.length -  2);
  while (G__10037__i < G__10037__a.length) {G__10037__a[G__10037__i] = arguments[G__10037__i + 2]; ++G__10037__i;}
  G__10036 = new cljs.core.IndexedSeq(G__10037__a,0);
  }
  return concat__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__10036);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  concat.cljs$lang$maxFixedArity = 2;
  concat.cljs$lang$applyTo = concat__3.cljs$lang$applyTo;
  concat.cljs$core$IFn$_invoke$arity$0 = concat__0;
  concat.cljs$core$IFn$_invoke$arity$1 = concat__1;
  concat.cljs$core$IFn$_invoke$arity$2 = concat__2;
  concat.cljs$core$IFn$_invoke$arity$variadic = concat__3.cljs$core$IFn$_invoke$arity$variadic;
  return concat;
  })()
  ;
  /**
  * Creates a new list containing the items prepended to the rest, the
  * last of which will be treated as a sequence.
  * @param {...*} var_args
  */
  cljs.core.list_STAR_ = (function() {
  var list_STAR_ = null;
  var list_STAR___1 = (function (args){
  return cljs.core.seq(args);
  });
  var list_STAR___2 = (function (a,args){
  return cljs.core.cons(a,args);
  });
  var list_STAR___3 = (function (a,b,args){
  return cljs.core.cons(a,cljs.core.cons(b,args));
  });
  var list_STAR___4 = (function (a,b,c,args){
  return cljs.core.cons(a,cljs.core.cons(b,cljs.core.cons(c,args)));
  });
  var list_STAR___5 = (function() { 
  var G__10038__delegate = function (a,b,c,d,more){
  return cljs.core.cons(a,cljs.core.cons(b,cljs.core.cons(c,cljs.core.cons(d,cljs.core.spread(more)))));
  };
  var G__10038 = function (a,b,c,d,var_args){
  var more = null;
  if (arguments.length > 4) {
  var G__10039__i = 0, G__10039__a = new Array(arguments.length -  4);
  while (G__10039__i < G__10039__a.length) {G__10039__a[G__10039__i] = arguments[G__10039__i + 4]; ++G__10039__i;}
    more = new cljs.core.IndexedSeq(G__10039__a,0);
  } 
  return G__10038__delegate.call(this,a,b,c,d,more);};
  G__10038.cljs$lang$maxFixedArity = 4;
  G__10038.cljs$lang$applyTo = (function (arglist__10040){
  var a = cljs.core.first(arglist__10040);
  arglist__10040 = cljs.core.next(arglist__10040);
  var b = cljs.core.first(arglist__10040);
  arglist__10040 = cljs.core.next(arglist__10040);
  var c = cljs.core.first(arglist__10040);
  arglist__10040 = cljs.core.next(arglist__10040);
  var d = cljs.core.first(arglist__10040);
  var more = cljs.core.rest(arglist__10040);
  return G__10038__delegate(a,b,c,d,more);
  });
  G__10038.cljs$core$IFn$_invoke$arity$variadic = G__10038__delegate;
  return G__10038;
  })()
  ;
  list_STAR_ = function(a,b,c,d,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return list_STAR___1.call(this,a);
  case 2:
  return list_STAR___2.call(this,a,b);
  case 3:
  return list_STAR___3.call(this,a,b,c);
  case 4:
  return list_STAR___4.call(this,a,b,c,d);
  default:
  var G__10041 = null;
  if (arguments.length > 4) {
  var G__10042__i = 0, G__10042__a = new Array(arguments.length -  4);
  while (G__10042__i < G__10042__a.length) {G__10042__a[G__10042__i] = arguments[G__10042__i + 4]; ++G__10042__i;}
  G__10041 = new cljs.core.IndexedSeq(G__10042__a,0);
  }
  return list_STAR___5.cljs$core$IFn$_invoke$arity$variadic(a,b,c,d, G__10041);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  list_STAR_.cljs$lang$maxFixedArity = 4;
  list_STAR_.cljs$lang$applyTo = list_STAR___5.cljs$lang$applyTo;
  list_STAR_.cljs$core$IFn$_invoke$arity$1 = list_STAR___1;
  list_STAR_.cljs$core$IFn$_invoke$arity$2 = list_STAR___2;
  list_STAR_.cljs$core$IFn$_invoke$arity$3 = list_STAR___3;
  list_STAR_.cljs$core$IFn$_invoke$arity$4 = list_STAR___4;
  list_STAR_.cljs$core$IFn$_invoke$arity$variadic = list_STAR___5.cljs$core$IFn$_invoke$arity$variadic;
  return list_STAR_;
  })()
  ;
  /**
  * Returns a new, transient version of the collection, in constant time.
  */
  cljs.core.transient$ = (function transient$(coll){
  return cljs.core._as_transient(coll);
  });
  /**
  * Returns a new, persistent version of the transient collection, in
  * constant time. The transient collection cannot be used after this
  * call, any such use will throw an exception.
  */
  cljs.core.persistent_BANG_ = (function persistent_BANG_(tcoll){
  return cljs.core._persistent_BANG_(tcoll);
  });
  /**
  * Adds x to the transient collection, and return coll. The 'addition'
  * may happen at different 'places' depending on the concrete type.
  * @param {...*} var_args
  */
  cljs.core.conj_BANG_ = (function() {
  var conj_BANG_ = null;
  var conj_BANG___0 = (function (){
  return cljs.core.transient$(cljs.core.PersistentVector.EMPTY);
  });
  var conj_BANG___1 = (function (coll){
  return coll;
  });
  var conj_BANG___2 = (function (tcoll,val){
  return cljs.core._conj_BANG_(tcoll,val);
  });
  var conj_BANG___3 = (function() { 
  var G__10043__delegate = function (tcoll,val,vals){
  while(true){
  var ntcoll = cljs.core._conj_BANG_(tcoll,val);
  if(cljs.core.truth_(vals)){
  var G__10044 = ntcoll;
  var G__10045 = cljs.core.first(vals);
  var G__10046 = cljs.core.next(vals);
  tcoll = G__10044;
  val = G__10045;
  vals = G__10046;
  continue;
  } else {
  return ntcoll;
  }
  break;
  }
  };
  var G__10043 = function (tcoll,val,var_args){
  var vals = null;
  if (arguments.length > 2) {
  var G__10047__i = 0, G__10047__a = new Array(arguments.length -  2);
  while (G__10047__i < G__10047__a.length) {G__10047__a[G__10047__i] = arguments[G__10047__i + 2]; ++G__10047__i;}
    vals = new cljs.core.IndexedSeq(G__10047__a,0);
  } 
  return G__10043__delegate.call(this,tcoll,val,vals);};
  G__10043.cljs$lang$maxFixedArity = 2;
  G__10043.cljs$lang$applyTo = (function (arglist__10048){
  var tcoll = cljs.core.first(arglist__10048);
  arglist__10048 = cljs.core.next(arglist__10048);
  var val = cljs.core.first(arglist__10048);
  var vals = cljs.core.rest(arglist__10048);
  return G__10043__delegate(tcoll,val,vals);
  });
  G__10043.cljs$core$IFn$_invoke$arity$variadic = G__10043__delegate;
  return G__10043;
  })()
  ;
  conj_BANG_ = function(tcoll,val,var_args){
  var vals = var_args;
  switch(arguments.length){
  case 0:
  return conj_BANG___0.call(this);
  case 1:
  return conj_BANG___1.call(this,tcoll);
  case 2:
  return conj_BANG___2.call(this,tcoll,val);
  default:
  var G__10049 = null;
  if (arguments.length > 2) {
  var G__10050__i = 0, G__10050__a = new Array(arguments.length -  2);
  while (G__10050__i < G__10050__a.length) {G__10050__a[G__10050__i] = arguments[G__10050__i + 2]; ++G__10050__i;}
  G__10049 = new cljs.core.IndexedSeq(G__10050__a,0);
  }
  return conj_BANG___3.cljs$core$IFn$_invoke$arity$variadic(tcoll,val, G__10049);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  conj_BANG_.cljs$lang$maxFixedArity = 2;
  conj_BANG_.cljs$lang$applyTo = conj_BANG___3.cljs$lang$applyTo;
  conj_BANG_.cljs$core$IFn$_invoke$arity$0 = conj_BANG___0;
  conj_BANG_.cljs$core$IFn$_invoke$arity$1 = conj_BANG___1;
  conj_BANG_.cljs$core$IFn$_invoke$arity$2 = conj_BANG___2;
  conj_BANG_.cljs$core$IFn$_invoke$arity$variadic = conj_BANG___3.cljs$core$IFn$_invoke$arity$variadic;
  return conj_BANG_;
  })()
  ;
  /**
  * When applied to a transient map, adds mapping of key(s) to
  * val(s). When applied to a transient vector, sets the val at index.
  * Note - index must be <= (count vector). Returns coll.
  * @param {...*} var_args
  */
  cljs.core.assoc_BANG_ = (function() {
  var assoc_BANG_ = null;
  var assoc_BANG___3 = (function (tcoll,key,val){
  return cljs.core._assoc_BANG_(tcoll,key,val);
  });
  var assoc_BANG___4 = (function() { 
  var G__10051__delegate = function (tcoll,key,val,kvs){
  while(true){
  var ntcoll = cljs.core._assoc_BANG_(tcoll,key,val);
  if(cljs.core.truth_(kvs)){
  var G__10052 = ntcoll;
  var G__10053 = cljs.core.first(kvs);
  var G__10054 = cljs.core.second(kvs);
  var G__10055 = cljs.core.nnext(kvs);
  tcoll = G__10052;
  key = G__10053;
  val = G__10054;
  kvs = G__10055;
  continue;
  } else {
  return ntcoll;
  }
  break;
  }
  };
  var G__10051 = function (tcoll,key,val,var_args){
  var kvs = null;
  if (arguments.length > 3) {
  var G__10056__i = 0, G__10056__a = new Array(arguments.length -  3);
  while (G__10056__i < G__10056__a.length) {G__10056__a[G__10056__i] = arguments[G__10056__i + 3]; ++G__10056__i;}
    kvs = new cljs.core.IndexedSeq(G__10056__a,0);
  } 
  return G__10051__delegate.call(this,tcoll,key,val,kvs);};
  G__10051.cljs$lang$maxFixedArity = 3;
  G__10051.cljs$lang$applyTo = (function (arglist__10057){
  var tcoll = cljs.core.first(arglist__10057);
  arglist__10057 = cljs.core.next(arglist__10057);
  var key = cljs.core.first(arglist__10057);
  arglist__10057 = cljs.core.next(arglist__10057);
  var val = cljs.core.first(arglist__10057);
  var kvs = cljs.core.rest(arglist__10057);
  return G__10051__delegate(tcoll,key,val,kvs);
  });
  G__10051.cljs$core$IFn$_invoke$arity$variadic = G__10051__delegate;
  return G__10051;
  })()
  ;
  assoc_BANG_ = function(tcoll,key,val,var_args){
  var kvs = var_args;
  switch(arguments.length){
  case 3:
  return assoc_BANG___3.call(this,tcoll,key,val);
  default:
  var G__10058 = null;
  if (arguments.length > 3) {
  var G__10059__i = 0, G__10059__a = new Array(arguments.length -  3);
  while (G__10059__i < G__10059__a.length) {G__10059__a[G__10059__i] = arguments[G__10059__i + 3]; ++G__10059__i;}
  G__10058 = new cljs.core.IndexedSeq(G__10059__a,0);
  }
  return assoc_BANG___4.cljs$core$IFn$_invoke$arity$variadic(tcoll,key,val, G__10058);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  assoc_BANG_.cljs$lang$maxFixedArity = 3;
  assoc_BANG_.cljs$lang$applyTo = assoc_BANG___4.cljs$lang$applyTo;
  assoc_BANG_.cljs$core$IFn$_invoke$arity$3 = assoc_BANG___3;
  assoc_BANG_.cljs$core$IFn$_invoke$arity$variadic = assoc_BANG___4.cljs$core$IFn$_invoke$arity$variadic;
  return assoc_BANG_;
  })()
  ;
  /**
  * Returns a transient map that doesn't contain a mapping for key(s).
  * @param {...*} var_args
  */
  cljs.core.dissoc_BANG_ = (function() {
  var dissoc_BANG_ = null;
  var dissoc_BANG___2 = (function (tcoll,key){
  return cljs.core._dissoc_BANG_(tcoll,key);
  });
  var dissoc_BANG___3 = (function() { 
  var G__10060__delegate = function (tcoll,key,ks){
  while(true){
  var ntcoll = cljs.core._dissoc_BANG_(tcoll,key);
  if(cljs.core.truth_(ks)){
  var G__10061 = ntcoll;
  var G__10062 = cljs.core.first(ks);
  var G__10063 = cljs.core.next(ks);
  tcoll = G__10061;
  key = G__10062;
  ks = G__10063;
  continue;
  } else {
  return ntcoll;
  }
  break;
  }
  };
  var G__10060 = function (tcoll,key,var_args){
  var ks = null;
  if (arguments.length > 2) {
  var G__10064__i = 0, G__10064__a = new Array(arguments.length -  2);
  while (G__10064__i < G__10064__a.length) {G__10064__a[G__10064__i] = arguments[G__10064__i + 2]; ++G__10064__i;}
    ks = new cljs.core.IndexedSeq(G__10064__a,0);
  } 
  return G__10060__delegate.call(this,tcoll,key,ks);};
  G__10060.cljs$lang$maxFixedArity = 2;
  G__10060.cljs$lang$applyTo = (function (arglist__10065){
  var tcoll = cljs.core.first(arglist__10065);
  arglist__10065 = cljs.core.next(arglist__10065);
  var key = cljs.core.first(arglist__10065);
  var ks = cljs.core.rest(arglist__10065);
  return G__10060__delegate(tcoll,key,ks);
  });
  G__10060.cljs$core$IFn$_invoke$arity$variadic = G__10060__delegate;
  return G__10060;
  })()
  ;
  dissoc_BANG_ = function(tcoll,key,var_args){
  var ks = var_args;
  switch(arguments.length){
  case 2:
  return dissoc_BANG___2.call(this,tcoll,key);
  default:
  var G__10066 = null;
  if (arguments.length > 2) {
  var G__10067__i = 0, G__10067__a = new Array(arguments.length -  2);
  while (G__10067__i < G__10067__a.length) {G__10067__a[G__10067__i] = arguments[G__10067__i + 2]; ++G__10067__i;}
  G__10066 = new cljs.core.IndexedSeq(G__10067__a,0);
  }
  return dissoc_BANG___3.cljs$core$IFn$_invoke$arity$variadic(tcoll,key, G__10066);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  dissoc_BANG_.cljs$lang$maxFixedArity = 2;
  dissoc_BANG_.cljs$lang$applyTo = dissoc_BANG___3.cljs$lang$applyTo;
  dissoc_BANG_.cljs$core$IFn$_invoke$arity$2 = dissoc_BANG___2;
  dissoc_BANG_.cljs$core$IFn$_invoke$arity$variadic = dissoc_BANG___3.cljs$core$IFn$_invoke$arity$variadic;
  return dissoc_BANG_;
  })()
  ;
  /**
  * Removes the last item from a transient vector. If
  * the collection is empty, throws an exception. Returns coll
  */
  cljs.core.pop_BANG_ = (function pop_BANG_(tcoll){
  return cljs.core._pop_BANG_(tcoll);
  });
  /**
  * disj[oin]. Returns a transient set of the same (hashed/sorted) type, that
  * does not contain key(s).
  * @param {...*} var_args
  */
  cljs.core.disj_BANG_ = (function() {
  var disj_BANG_ = null;
  var disj_BANG___2 = (function (tcoll,val){
  return cljs.core._disjoin_BANG_(tcoll,val);
  });
  var disj_BANG___3 = (function() { 
  var G__10068__delegate = function (tcoll,val,vals){
  while(true){
  var ntcoll = cljs.core._disjoin_BANG_(tcoll,val);
  if(cljs.core.truth_(vals)){
  var G__10069 = ntcoll;
  var G__10070 = cljs.core.first(vals);
  var G__10071 = cljs.core.next(vals);
  tcoll = G__10069;
  val = G__10070;
  vals = G__10071;
  continue;
  } else {
  return ntcoll;
  }
  break;
  }
  };
  var G__10068 = function (tcoll,val,var_args){
  var vals = null;
  if (arguments.length > 2) {
  var G__10072__i = 0, G__10072__a = new Array(arguments.length -  2);
  while (G__10072__i < G__10072__a.length) {G__10072__a[G__10072__i] = arguments[G__10072__i + 2]; ++G__10072__i;}
    vals = new cljs.core.IndexedSeq(G__10072__a,0);
  } 
  return G__10068__delegate.call(this,tcoll,val,vals);};
  G__10068.cljs$lang$maxFixedArity = 2;
  G__10068.cljs$lang$applyTo = (function (arglist__10073){
  var tcoll = cljs.core.first(arglist__10073);
  arglist__10073 = cljs.core.next(arglist__10073);
  var val = cljs.core.first(arglist__10073);
  var vals = cljs.core.rest(arglist__10073);
  return G__10068__delegate(tcoll,val,vals);
  });
  G__10068.cljs$core$IFn$_invoke$arity$variadic = G__10068__delegate;
  return G__10068;
  })()
  ;
  disj_BANG_ = function(tcoll,val,var_args){
  var vals = var_args;
  switch(arguments.length){
  case 2:
  return disj_BANG___2.call(this,tcoll,val);
  default:
  var G__10074 = null;
  if (arguments.length > 2) {
  var G__10075__i = 0, G__10075__a = new Array(arguments.length -  2);
  while (G__10075__i < G__10075__a.length) {G__10075__a[G__10075__i] = arguments[G__10075__i + 2]; ++G__10075__i;}
  G__10074 = new cljs.core.IndexedSeq(G__10075__a,0);
  }
  return disj_BANG___3.cljs$core$IFn$_invoke$arity$variadic(tcoll,val, G__10074);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  disj_BANG_.cljs$lang$maxFixedArity = 2;
  disj_BANG_.cljs$lang$applyTo = disj_BANG___3.cljs$lang$applyTo;
  disj_BANG_.cljs$core$IFn$_invoke$arity$2 = disj_BANG___2;
  disj_BANG_.cljs$core$IFn$_invoke$arity$variadic = disj_BANG___3.cljs$core$IFn$_invoke$arity$variadic;
  return disj_BANG_;
  })()
  ;
  
  cljs.core.apply_to = (function apply_to(f,argc,args){
  var args__$1 = cljs.core.seq(args);
  if((argc === (0))){
  return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  } else {
  var a4739 = cljs.core._first(args__$1);
  var args__$2 = cljs.core._rest(args__$1);
  if((argc === (1))){
  if(f.cljs$core$IFn$_invoke$arity$1){
  return f.cljs$core$IFn$_invoke$arity$1(a4739);
  } else {
  var G__10286 = a4739;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10286) : f.call(null,G__10286));
  }
  } else {
  var b4740 = cljs.core._first(args__$2);
  var args__$3 = cljs.core._rest(args__$2);
  if((argc === (2))){
  if(f.cljs$core$IFn$_invoke$arity$2){
  return f.cljs$core$IFn$_invoke$arity$2(a4739,b4740);
  } else {
  var G__10287 = a4739;
  var G__10288 = b4740;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10287,G__10288) : f.call(null,G__10287,G__10288));
  }
  } else {
  var c4741 = cljs.core._first(args__$3);
  var args__$4 = cljs.core._rest(args__$3);
  if((argc === (3))){
  if(f.cljs$core$IFn$_invoke$arity$3){
  return f.cljs$core$IFn$_invoke$arity$3(a4739,b4740,c4741);
  } else {
  var G__10289 = a4739;
  var G__10290 = b4740;
  var G__10291 = c4741;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10289,G__10290,G__10291) : f.call(null,G__10289,G__10290,G__10291));
  }
  } else {
  var d4742 = cljs.core._first(args__$4);
  var args__$5 = cljs.core._rest(args__$4);
  if((argc === (4))){
  if(f.cljs$core$IFn$_invoke$arity$4){
  return f.cljs$core$IFn$_invoke$arity$4(a4739,b4740,c4741,d4742);
  } else {
  var G__10292 = a4739;
  var G__10293 = b4740;
  var G__10294 = c4741;
  var G__10295 = d4742;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10292,G__10293,G__10294,G__10295) : f.call(null,G__10292,G__10293,G__10294,G__10295));
  }
  } else {
  var e4743 = cljs.core._first(args__$5);
  var args__$6 = cljs.core._rest(args__$5);
  if((argc === (5))){
  if(f.cljs$core$IFn$_invoke$arity$5){
  return f.cljs$core$IFn$_invoke$arity$5(a4739,b4740,c4741,d4742,e4743);
  } else {
  var G__10296 = a4739;
  var G__10297 = b4740;
  var G__10298 = c4741;
  var G__10299 = d4742;
  var G__10300 = e4743;
  return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(G__10296,G__10297,G__10298,G__10299,G__10300) : f.call(null,G__10296,G__10297,G__10298,G__10299,G__10300));
  }
  } else {
  var f4744 = cljs.core._first(args__$6);
  var args__$7 = cljs.core._rest(args__$6);
  if((argc === (6))){
  if(f.cljs$core$IFn$_invoke$arity$6){
  return f.cljs$core$IFn$_invoke$arity$6(a4739,b4740,c4741,d4742,e4743,f4744);
  } else {
  var G__10301 = a4739;
  var G__10302 = b4740;
  var G__10303 = c4741;
  var G__10304 = d4742;
  var G__10305 = e4743;
  var G__10306 = f4744;
  return (f.cljs$core$IFn$_invoke$arity$6 ? f.cljs$core$IFn$_invoke$arity$6(G__10301,G__10302,G__10303,G__10304,G__10305,G__10306) : f.call(null,G__10301,G__10302,G__10303,G__10304,G__10305,G__10306));
  }
  } else {
  var g4745 = cljs.core._first(args__$7);
  var args__$8 = cljs.core._rest(args__$7);
  if((argc === (7))){
  if(f.cljs$core$IFn$_invoke$arity$7){
  return f.cljs$core$IFn$_invoke$arity$7(a4739,b4740,c4741,d4742,e4743,f4744,g4745);
  } else {
  var G__10307 = a4739;
  var G__10308 = b4740;
  var G__10309 = c4741;
  var G__10310 = d4742;
  var G__10311 = e4743;
  var G__10312 = f4744;
  var G__10313 = g4745;
  return (f.cljs$core$IFn$_invoke$arity$7 ? f.cljs$core$IFn$_invoke$arity$7(G__10307,G__10308,G__10309,G__10310,G__10311,G__10312,G__10313) : f.call(null,G__10307,G__10308,G__10309,G__10310,G__10311,G__10312,G__10313));
  }
  } else {
  var h4746 = cljs.core._first(args__$8);
  var args__$9 = cljs.core._rest(args__$8);
  if((argc === (8))){
  if(f.cljs$core$IFn$_invoke$arity$8){
  return f.cljs$core$IFn$_invoke$arity$8(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746);
  } else {
  var G__10314 = a4739;
  var G__10315 = b4740;
  var G__10316 = c4741;
  var G__10317 = d4742;
  var G__10318 = e4743;
  var G__10319 = f4744;
  var G__10320 = g4745;
  var G__10321 = h4746;
  return (f.cljs$core$IFn$_invoke$arity$8 ? f.cljs$core$IFn$_invoke$arity$8(G__10314,G__10315,G__10316,G__10317,G__10318,G__10319,G__10320,G__10321) : f.call(null,G__10314,G__10315,G__10316,G__10317,G__10318,G__10319,G__10320,G__10321));
  }
  } else {
  var i4747 = cljs.core._first(args__$9);
  var args__$10 = cljs.core._rest(args__$9);
  if((argc === (9))){
  if(f.cljs$core$IFn$_invoke$arity$9){
  return f.cljs$core$IFn$_invoke$arity$9(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747);
  } else {
  var G__10322 = a4739;
  var G__10323 = b4740;
  var G__10324 = c4741;
  var G__10325 = d4742;
  var G__10326 = e4743;
  var G__10327 = f4744;
  var G__10328 = g4745;
  var G__10329 = h4746;
  var G__10330 = i4747;
  return (f.cljs$core$IFn$_invoke$arity$9 ? f.cljs$core$IFn$_invoke$arity$9(G__10322,G__10323,G__10324,G__10325,G__10326,G__10327,G__10328,G__10329,G__10330) : f.call(null,G__10322,G__10323,G__10324,G__10325,G__10326,G__10327,G__10328,G__10329,G__10330));
  }
  } else {
  var j4748 = cljs.core._first(args__$10);
  var args__$11 = cljs.core._rest(args__$10);
  if((argc === (10))){
  if(f.cljs$core$IFn$_invoke$arity$10){
  return f.cljs$core$IFn$_invoke$arity$10(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748);
  } else {
  var G__10331 = a4739;
  var G__10332 = b4740;
  var G__10333 = c4741;
  var G__10334 = d4742;
  var G__10335 = e4743;
  var G__10336 = f4744;
  var G__10337 = g4745;
  var G__10338 = h4746;
  var G__10339 = i4747;
  var G__10340 = j4748;
  return (f.cljs$core$IFn$_invoke$arity$10 ? f.cljs$core$IFn$_invoke$arity$10(G__10331,G__10332,G__10333,G__10334,G__10335,G__10336,G__10337,G__10338,G__10339,G__10340) : f.call(null,G__10331,G__10332,G__10333,G__10334,G__10335,G__10336,G__10337,G__10338,G__10339,G__10340));
  }
  } else {
  var k4749 = cljs.core._first(args__$11);
  var args__$12 = cljs.core._rest(args__$11);
  if((argc === (11))){
  if(f.cljs$core$IFn$_invoke$arity$11){
  return f.cljs$core$IFn$_invoke$arity$11(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749);
  } else {
  var G__10341 = a4739;
  var G__10342 = b4740;
  var G__10343 = c4741;
  var G__10344 = d4742;
  var G__10345 = e4743;
  var G__10346 = f4744;
  var G__10347 = g4745;
  var G__10348 = h4746;
  var G__10349 = i4747;
  var G__10350 = j4748;
  var G__10351 = k4749;
  return (f.cljs$core$IFn$_invoke$arity$11 ? f.cljs$core$IFn$_invoke$arity$11(G__10341,G__10342,G__10343,G__10344,G__10345,G__10346,G__10347,G__10348,G__10349,G__10350,G__10351) : f.call(null,G__10341,G__10342,G__10343,G__10344,G__10345,G__10346,G__10347,G__10348,G__10349,G__10350,G__10351));
  }
  } else {
  var l4750 = cljs.core._first(args__$12);
  var args__$13 = cljs.core._rest(args__$12);
  if((argc === (12))){
  if(f.cljs$core$IFn$_invoke$arity$12){
  return f.cljs$core$IFn$_invoke$arity$12(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750);
  } else {
  var G__10352 = a4739;
  var G__10353 = b4740;
  var G__10354 = c4741;
  var G__10355 = d4742;
  var G__10356 = e4743;
  var G__10357 = f4744;
  var G__10358 = g4745;
  var G__10359 = h4746;
  var G__10360 = i4747;
  var G__10361 = j4748;
  var G__10362 = k4749;
  var G__10363 = l4750;
  return (f.cljs$core$IFn$_invoke$arity$12 ? f.cljs$core$IFn$_invoke$arity$12(G__10352,G__10353,G__10354,G__10355,G__10356,G__10357,G__10358,G__10359,G__10360,G__10361,G__10362,G__10363) : f.call(null,G__10352,G__10353,G__10354,G__10355,G__10356,G__10357,G__10358,G__10359,G__10360,G__10361,G__10362,G__10363));
  }
  } else {
  var m4751 = cljs.core._first(args__$13);
  var args__$14 = cljs.core._rest(args__$13);
  if((argc === (13))){
  if(f.cljs$core$IFn$_invoke$arity$13){
  return f.cljs$core$IFn$_invoke$arity$13(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751);
  } else {
  var G__10364 = a4739;
  var G__10365 = b4740;
  var G__10366 = c4741;
  var G__10367 = d4742;
  var G__10368 = e4743;
  var G__10369 = f4744;
  var G__10370 = g4745;
  var G__10371 = h4746;
  var G__10372 = i4747;
  var G__10373 = j4748;
  var G__10374 = k4749;
  var G__10375 = l4750;
  var G__10376 = m4751;
  return (f.cljs$core$IFn$_invoke$arity$13 ? f.cljs$core$IFn$_invoke$arity$13(G__10364,G__10365,G__10366,G__10367,G__10368,G__10369,G__10370,G__10371,G__10372,G__10373,G__10374,G__10375,G__10376) : f.call(null,G__10364,G__10365,G__10366,G__10367,G__10368,G__10369,G__10370,G__10371,G__10372,G__10373,G__10374,G__10375,G__10376));
  }
  } else {
  var n4752 = cljs.core._first(args__$14);
  var args__$15 = cljs.core._rest(args__$14);
  if((argc === (14))){
  if(f.cljs$core$IFn$_invoke$arity$14){
  return f.cljs$core$IFn$_invoke$arity$14(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752);
  } else {
  var G__10377 = a4739;
  var G__10378 = b4740;
  var G__10379 = c4741;
  var G__10380 = d4742;
  var G__10381 = e4743;
  var G__10382 = f4744;
  var G__10383 = g4745;
  var G__10384 = h4746;
  var G__10385 = i4747;
  var G__10386 = j4748;
  var G__10387 = k4749;
  var G__10388 = l4750;
  var G__10389 = m4751;
  var G__10390 = n4752;
  return (f.cljs$core$IFn$_invoke$arity$14 ? f.cljs$core$IFn$_invoke$arity$14(G__10377,G__10378,G__10379,G__10380,G__10381,G__10382,G__10383,G__10384,G__10385,G__10386,G__10387,G__10388,G__10389,G__10390) : f.call(null,G__10377,G__10378,G__10379,G__10380,G__10381,G__10382,G__10383,G__10384,G__10385,G__10386,G__10387,G__10388,G__10389,G__10390));
  }
  } else {
  var o4753 = cljs.core._first(args__$15);
  var args__$16 = cljs.core._rest(args__$15);
  if((argc === (15))){
  if(f.cljs$core$IFn$_invoke$arity$15){
  return f.cljs$core$IFn$_invoke$arity$15(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752,o4753);
  } else {
  var G__10391 = a4739;
  var G__10392 = b4740;
  var G__10393 = c4741;
  var G__10394 = d4742;
  var G__10395 = e4743;
  var G__10396 = f4744;
  var G__10397 = g4745;
  var G__10398 = h4746;
  var G__10399 = i4747;
  var G__10400 = j4748;
  var G__10401 = k4749;
  var G__10402 = l4750;
  var G__10403 = m4751;
  var G__10404 = n4752;
  var G__10405 = o4753;
  return (f.cljs$core$IFn$_invoke$arity$15 ? f.cljs$core$IFn$_invoke$arity$15(G__10391,G__10392,G__10393,G__10394,G__10395,G__10396,G__10397,G__10398,G__10399,G__10400,G__10401,G__10402,G__10403,G__10404,G__10405) : f.call(null,G__10391,G__10392,G__10393,G__10394,G__10395,G__10396,G__10397,G__10398,G__10399,G__10400,G__10401,G__10402,G__10403,G__10404,G__10405));
  }
  } else {
  var p4754 = cljs.core._first(args__$16);
  var args__$17 = cljs.core._rest(args__$16);
  if((argc === (16))){
  if(f.cljs$core$IFn$_invoke$arity$16){
  return f.cljs$core$IFn$_invoke$arity$16(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752,o4753,p4754);
  } else {
  var G__10406 = a4739;
  var G__10407 = b4740;
  var G__10408 = c4741;
  var G__10409 = d4742;
  var G__10410 = e4743;
  var G__10411 = f4744;
  var G__10412 = g4745;
  var G__10413 = h4746;
  var G__10414 = i4747;
  var G__10415 = j4748;
  var G__10416 = k4749;
  var G__10417 = l4750;
  var G__10418 = m4751;
  var G__10419 = n4752;
  var G__10420 = o4753;
  var G__10421 = p4754;
  return (f.cljs$core$IFn$_invoke$arity$16 ? f.cljs$core$IFn$_invoke$arity$16(G__10406,G__10407,G__10408,G__10409,G__10410,G__10411,G__10412,G__10413,G__10414,G__10415,G__10416,G__10417,G__10418,G__10419,G__10420,G__10421) : f.call(null,G__10406,G__10407,G__10408,G__10409,G__10410,G__10411,G__10412,G__10413,G__10414,G__10415,G__10416,G__10417,G__10418,G__10419,G__10420,G__10421));
  }
  } else {
  var q4755 = cljs.core._first(args__$17);
  var args__$18 = cljs.core._rest(args__$17);
  if((argc === (17))){
  if(f.cljs$core$IFn$_invoke$arity$17){
  return f.cljs$core$IFn$_invoke$arity$17(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752,o4753,p4754,q4755);
  } else {
  var G__10422 = a4739;
  var G__10423 = b4740;
  var G__10424 = c4741;
  var G__10425 = d4742;
  var G__10426 = e4743;
  var G__10427 = f4744;
  var G__10428 = g4745;
  var G__10429 = h4746;
  var G__10430 = i4747;
  var G__10431 = j4748;
  var G__10432 = k4749;
  var G__10433 = l4750;
  var G__10434 = m4751;
  var G__10435 = n4752;
  var G__10436 = o4753;
  var G__10437 = p4754;
  var G__10438 = q4755;
  return (f.cljs$core$IFn$_invoke$arity$17 ? f.cljs$core$IFn$_invoke$arity$17(G__10422,G__10423,G__10424,G__10425,G__10426,G__10427,G__10428,G__10429,G__10430,G__10431,G__10432,G__10433,G__10434,G__10435,G__10436,G__10437,G__10438) : f.call(null,G__10422,G__10423,G__10424,G__10425,G__10426,G__10427,G__10428,G__10429,G__10430,G__10431,G__10432,G__10433,G__10434,G__10435,G__10436,G__10437,G__10438));
  }
  } else {
  var r4756 = cljs.core._first(args__$18);
  var args__$19 = cljs.core._rest(args__$18);
  if((argc === (18))){
  if(f.cljs$core$IFn$_invoke$arity$18){
  return f.cljs$core$IFn$_invoke$arity$18(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752,o4753,p4754,q4755,r4756);
  } else {
  var G__10439 = a4739;
  var G__10440 = b4740;
  var G__10441 = c4741;
  var G__10442 = d4742;
  var G__10443 = e4743;
  var G__10444 = f4744;
  var G__10445 = g4745;
  var G__10446 = h4746;
  var G__10447 = i4747;
  var G__10448 = j4748;
  var G__10449 = k4749;
  var G__10450 = l4750;
  var G__10451 = m4751;
  var G__10452 = n4752;
  var G__10453 = o4753;
  var G__10454 = p4754;
  var G__10455 = q4755;
  var G__10456 = r4756;
  return (f.cljs$core$IFn$_invoke$arity$18 ? f.cljs$core$IFn$_invoke$arity$18(G__10439,G__10440,G__10441,G__10442,G__10443,G__10444,G__10445,G__10446,G__10447,G__10448,G__10449,G__10450,G__10451,G__10452,G__10453,G__10454,G__10455,G__10456) : f.call(null,G__10439,G__10440,G__10441,G__10442,G__10443,G__10444,G__10445,G__10446,G__10447,G__10448,G__10449,G__10450,G__10451,G__10452,G__10453,G__10454,G__10455,G__10456));
  }
  } else {
  var s4757 = cljs.core._first(args__$19);
  var args__$20 = cljs.core._rest(args__$19);
  if((argc === (19))){
  if(f.cljs$core$IFn$_invoke$arity$19){
  return f.cljs$core$IFn$_invoke$arity$19(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752,o4753,p4754,q4755,r4756,s4757);
  } else {
  var G__10457 = a4739;
  var G__10458 = b4740;
  var G__10459 = c4741;
  var G__10460 = d4742;
  var G__10461 = e4743;
  var G__10462 = f4744;
  var G__10463 = g4745;
  var G__10464 = h4746;
  var G__10465 = i4747;
  var G__10466 = j4748;
  var G__10467 = k4749;
  var G__10468 = l4750;
  var G__10469 = m4751;
  var G__10470 = n4752;
  var G__10471 = o4753;
  var G__10472 = p4754;
  var G__10473 = q4755;
  var G__10474 = r4756;
  var G__10475 = s4757;
  return (f.cljs$core$IFn$_invoke$arity$19 ? f.cljs$core$IFn$_invoke$arity$19(G__10457,G__10458,G__10459,G__10460,G__10461,G__10462,G__10463,G__10464,G__10465,G__10466,G__10467,G__10468,G__10469,G__10470,G__10471,G__10472,G__10473,G__10474,G__10475) : f.call(null,G__10457,G__10458,G__10459,G__10460,G__10461,G__10462,G__10463,G__10464,G__10465,G__10466,G__10467,G__10468,G__10469,G__10470,G__10471,G__10472,G__10473,G__10474,G__10475));
  }
  } else {
  var t4758 = cljs.core._first(args__$20);
  var args__$21 = cljs.core._rest(args__$20);
  if((argc === (20))){
  if(f.cljs$core$IFn$_invoke$arity$20){
  return f.cljs$core$IFn$_invoke$arity$20(a4739,b4740,c4741,d4742,e4743,f4744,g4745,h4746,i4747,j4748,k4749,l4750,m4751,n4752,o4753,p4754,q4755,r4756,s4757,t4758);
  } else {
  var G__10476 = a4739;
  var G__10477 = b4740;
  var G__10478 = c4741;
  var G__10479 = d4742;
  var G__10480 = e4743;
  var G__10481 = f4744;
  var G__10482 = g4745;
  var G__10483 = h4746;
  var G__10484 = i4747;
  var G__10485 = j4748;
  var G__10486 = k4749;
  var G__10487 = l4750;
  var G__10488 = m4751;
  var G__10489 = n4752;
  var G__10490 = o4753;
  var G__10491 = p4754;
  var G__10492 = q4755;
  var G__10493 = r4756;
  var G__10494 = s4757;
  var G__10495 = t4758;
  return (f.cljs$core$IFn$_invoke$arity$20 ? f.cljs$core$IFn$_invoke$arity$20(G__10476,G__10477,G__10478,G__10479,G__10480,G__10481,G__10482,G__10483,G__10484,G__10485,G__10486,G__10487,G__10488,G__10489,G__10490,G__10491,G__10492,G__10493,G__10494,G__10495) : f.call(null,G__10476,G__10477,G__10478,G__10479,G__10480,G__10481,G__10482,G__10483,G__10484,G__10485,G__10486,G__10487,G__10488,G__10489,G__10490,G__10491,G__10492,G__10493,G__10494,G__10495));
  }
  } else {
  throw (new Error("Only up to 20 arguments supported on functions"));
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  });
  
  /**
  * Applies fn f to the argument list formed by prepending intervening arguments to args.
  * First cut.  Not lazy.  Needs to use emitted toApply.
  * @param {...*} var_args
  */
  cljs.core.apply = (function() {
  var apply = null;
  var apply__2 = (function (f,args){
  var fixed_arity = f.cljs$lang$maxFixedArity;
  if(f.cljs$lang$applyTo){
  var bc = cljs.core.bounded_count(args,(fixed_arity + (1)));
  if((bc <= fixed_arity)){
  return cljs.core.apply_to(f,bc,args);
  } else {
  return f.cljs$lang$applyTo(args);
  }
  } else {
  return f.apply(f,cljs.core.to_array(args));
  }
  });
  var apply__3 = (function (f,x,args){
  var arglist = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$2(x,args);
  var fixed_arity = f.cljs$lang$maxFixedArity;
  if(f.cljs$lang$applyTo){
  var bc = cljs.core.bounded_count(arglist,(fixed_arity + (1)));
  if((bc <= fixed_arity)){
  return cljs.core.apply_to(f,bc,arglist);
  } else {
  return f.cljs$lang$applyTo(arglist);
  }
  } else {
  return f.apply(f,cljs.core.to_array(arglist));
  }
  });
  var apply__4 = (function (f,x,y,args){
  var arglist = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$3(x,y,args);
  var fixed_arity = f.cljs$lang$maxFixedArity;
  if(f.cljs$lang$applyTo){
  var bc = cljs.core.bounded_count(arglist,(fixed_arity + (1)));
  if((bc <= fixed_arity)){
  return cljs.core.apply_to(f,bc,arglist);
  } else {
  return f.cljs$lang$applyTo(arglist);
  }
  } else {
  return f.apply(f,cljs.core.to_array(arglist));
  }
  });
  var apply__5 = (function (f,x,y,z,args){
  var arglist = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(x,y,z,args);
  var fixed_arity = f.cljs$lang$maxFixedArity;
  if(f.cljs$lang$applyTo){
  var bc = cljs.core.bounded_count(arglist,(fixed_arity + (1)));
  if((bc <= fixed_arity)){
  return cljs.core.apply_to(f,bc,arglist);
  } else {
  return f.cljs$lang$applyTo(arglist);
  }
  } else {
  return f.apply(f,cljs.core.to_array(arglist));
  }
  });
  var apply__6 = (function() { 
  var G__10496__delegate = function (f,a,b,c,d,args){
  var arglist = cljs.core.cons(a,cljs.core.cons(b,cljs.core.cons(c,cljs.core.cons(d,cljs.core.spread(args)))));
  var fixed_arity = f.cljs$lang$maxFixedArity;
  if(f.cljs$lang$applyTo){
  var bc = cljs.core.bounded_count(arglist,(fixed_arity + (1)));
  if((bc <= fixed_arity)){
  return cljs.core.apply_to(f,bc,arglist);
  } else {
  return f.cljs$lang$applyTo(arglist);
  }
  } else {
  return f.apply(f,cljs.core.to_array(arglist));
  }
  };
  var G__10496 = function (f,a,b,c,d,var_args){
  var args = null;
  if (arguments.length > 5) {
  var G__10497__i = 0, G__10497__a = new Array(arguments.length -  5);
  while (G__10497__i < G__10497__a.length) {G__10497__a[G__10497__i] = arguments[G__10497__i + 5]; ++G__10497__i;}
    args = new cljs.core.IndexedSeq(G__10497__a,0);
  } 
  return G__10496__delegate.call(this,f,a,b,c,d,args);};
  G__10496.cljs$lang$maxFixedArity = 5;
  G__10496.cljs$lang$applyTo = (function (arglist__10498){
  var f = cljs.core.first(arglist__10498);
  arglist__10498 = cljs.core.next(arglist__10498);
  var a = cljs.core.first(arglist__10498);
  arglist__10498 = cljs.core.next(arglist__10498);
  var b = cljs.core.first(arglist__10498);
  arglist__10498 = cljs.core.next(arglist__10498);
  var c = cljs.core.first(arglist__10498);
  arglist__10498 = cljs.core.next(arglist__10498);
  var d = cljs.core.first(arglist__10498);
  var args = cljs.core.rest(arglist__10498);
  return G__10496__delegate(f,a,b,c,d,args);
  });
  G__10496.cljs$core$IFn$_invoke$arity$variadic = G__10496__delegate;
  return G__10496;
  })()
  ;
  apply = function(f,a,b,c,d,var_args){
  var args = var_args;
  switch(arguments.length){
  case 2:
  return apply__2.call(this,f,a);
  case 3:
  return apply__3.call(this,f,a,b);
  case 4:
  return apply__4.call(this,f,a,b,c);
  case 5:
  return apply__5.call(this,f,a,b,c,d);
  default:
  var G__10499 = null;
  if (arguments.length > 5) {
  var G__10500__i = 0, G__10500__a = new Array(arguments.length -  5);
  while (G__10500__i < G__10500__a.length) {G__10500__a[G__10500__i] = arguments[G__10500__i + 5]; ++G__10500__i;}
  G__10499 = new cljs.core.IndexedSeq(G__10500__a,0);
  }
  return apply__6.cljs$core$IFn$_invoke$arity$variadic(f,a,b,c,d, G__10499);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  apply.cljs$lang$maxFixedArity = 5;
  apply.cljs$lang$applyTo = apply__6.cljs$lang$applyTo;
  apply.cljs$core$IFn$_invoke$arity$2 = apply__2;
  apply.cljs$core$IFn$_invoke$arity$3 = apply__3;
  apply.cljs$core$IFn$_invoke$arity$4 = apply__4;
  apply.cljs$core$IFn$_invoke$arity$5 = apply__5;
  apply.cljs$core$IFn$_invoke$arity$variadic = apply__6.cljs$core$IFn$_invoke$arity$variadic;
  return apply;
  })()
  ;
  /**
  * Returns an object of the same type and value as obj, with
  * (apply f (meta obj) args) as its metadata.
  * @param {...*} var_args
  */
  cljs.core.vary_meta = (function() {
  var vary_meta = null;
  var vary_meta__2 = (function (obj,f){
  return cljs.core.with_meta(obj,(function (){var G__10516 = cljs.core.meta(obj);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10516) : f.call(null,G__10516));
  })());
  });
  var vary_meta__3 = (function (obj,f,a){
  return cljs.core.with_meta(obj,(function (){var G__10517 = cljs.core.meta(obj);
  var G__10518 = a;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10517,G__10518) : f.call(null,G__10517,G__10518));
  })());
  });
  var vary_meta__4 = (function (obj,f,a,b){
  return cljs.core.with_meta(obj,(function (){var G__10519 = cljs.core.meta(obj);
  var G__10520 = a;
  var G__10521 = b;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10519,G__10520,G__10521) : f.call(null,G__10519,G__10520,G__10521));
  })());
  });
  var vary_meta__5 = (function (obj,f,a,b,c){
  return cljs.core.with_meta(obj,(function (){var G__10522 = cljs.core.meta(obj);
  var G__10523 = a;
  var G__10524 = b;
  var G__10525 = c;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10522,G__10523,G__10524,G__10525) : f.call(null,G__10522,G__10523,G__10524,G__10525));
  })());
  });
  var vary_meta__6 = (function (obj,f,a,b,c,d){
  return cljs.core.with_meta(obj,(function (){var G__10526 = cljs.core.meta(obj);
  var G__10527 = a;
  var G__10528 = b;
  var G__10529 = c;
  var G__10530 = d;
  return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(G__10526,G__10527,G__10528,G__10529,G__10530) : f.call(null,G__10526,G__10527,G__10528,G__10529,G__10530));
  })());
  });
  var vary_meta__7 = (function() { 
  var G__10531__delegate = function (obj,f,a,b,c,d,args){
  return cljs.core.with_meta(obj,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,cljs.core.meta(obj),a,b,c,cljs.core.array_seq([d,args], 0)));
  };
  var G__10531 = function (obj,f,a,b,c,d,var_args){
  var args = null;
  if (arguments.length > 6) {
  var G__10532__i = 0, G__10532__a = new Array(arguments.length -  6);
  while (G__10532__i < G__10532__a.length) {G__10532__a[G__10532__i] = arguments[G__10532__i + 6]; ++G__10532__i;}
    args = new cljs.core.IndexedSeq(G__10532__a,0);
  } 
  return G__10531__delegate.call(this,obj,f,a,b,c,d,args);};
  G__10531.cljs$lang$maxFixedArity = 6;
  G__10531.cljs$lang$applyTo = (function (arglist__10533){
  var obj = cljs.core.first(arglist__10533);
  arglist__10533 = cljs.core.next(arglist__10533);
  var f = cljs.core.first(arglist__10533);
  arglist__10533 = cljs.core.next(arglist__10533);
  var a = cljs.core.first(arglist__10533);
  arglist__10533 = cljs.core.next(arglist__10533);
  var b = cljs.core.first(arglist__10533);
  arglist__10533 = cljs.core.next(arglist__10533);
  var c = cljs.core.first(arglist__10533);
  arglist__10533 = cljs.core.next(arglist__10533);
  var d = cljs.core.first(arglist__10533);
  var args = cljs.core.rest(arglist__10533);
  return G__10531__delegate(obj,f,a,b,c,d,args);
  });
  G__10531.cljs$core$IFn$_invoke$arity$variadic = G__10531__delegate;
  return G__10531;
  })()
  ;
  vary_meta = function(obj,f,a,b,c,d,var_args){
  var args = var_args;
  switch(arguments.length){
  case 2:
  return vary_meta__2.call(this,obj,f);
  case 3:
  return vary_meta__3.call(this,obj,f,a);
  case 4:
  return vary_meta__4.call(this,obj,f,a,b);
  case 5:
  return vary_meta__5.call(this,obj,f,a,b,c);
  case 6:
  return vary_meta__6.call(this,obj,f,a,b,c,d);
  default:
  var G__10534 = null;
  if (arguments.length > 6) {
  var G__10535__i = 0, G__10535__a = new Array(arguments.length -  6);
  while (G__10535__i < G__10535__a.length) {G__10535__a[G__10535__i] = arguments[G__10535__i + 6]; ++G__10535__i;}
  G__10534 = new cljs.core.IndexedSeq(G__10535__a,0);
  }
  return vary_meta__7.cljs$core$IFn$_invoke$arity$variadic(obj,f,a,b,c,d, G__10534);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  vary_meta.cljs$lang$maxFixedArity = 6;
  vary_meta.cljs$lang$applyTo = vary_meta__7.cljs$lang$applyTo;
  vary_meta.cljs$core$IFn$_invoke$arity$2 = vary_meta__2;
  vary_meta.cljs$core$IFn$_invoke$arity$3 = vary_meta__3;
  vary_meta.cljs$core$IFn$_invoke$arity$4 = vary_meta__4;
  vary_meta.cljs$core$IFn$_invoke$arity$5 = vary_meta__5;
  vary_meta.cljs$core$IFn$_invoke$arity$6 = vary_meta__6;
  vary_meta.cljs$core$IFn$_invoke$arity$variadic = vary_meta__7.cljs$core$IFn$_invoke$arity$variadic;
  return vary_meta;
  })()
  ;
  /**
  * Same as (not (= obj1 obj2))
  * @param {...*} var_args
  */
  cljs.core.not_EQ_ = (function() {
  var not_EQ_ = null;
  var not_EQ___1 = (function (x){
  return false;
  });
  var not_EQ___2 = (function (x,y){
  return !(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y));
  });
  var not_EQ___3 = (function() { 
  var G__10536__delegate = function (x,y,more){
  return cljs.core.not(cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core._EQ_,x,y,more));
  };
  var G__10536 = function (x,y,var_args){
  var more = null;
  if (arguments.length > 2) {
  var G__10537__i = 0, G__10537__a = new Array(arguments.length -  2);
  while (G__10537__i < G__10537__a.length) {G__10537__a[G__10537__i] = arguments[G__10537__i + 2]; ++G__10537__i;}
    more = new cljs.core.IndexedSeq(G__10537__a,0);
  } 
  return G__10536__delegate.call(this,x,y,more);};
  G__10536.cljs$lang$maxFixedArity = 2;
  G__10536.cljs$lang$applyTo = (function (arglist__10538){
  var x = cljs.core.first(arglist__10538);
  arglist__10538 = cljs.core.next(arglist__10538);
  var y = cljs.core.first(arglist__10538);
  var more = cljs.core.rest(arglist__10538);
  return G__10536__delegate(x,y,more);
  });
  G__10536.cljs$core$IFn$_invoke$arity$variadic = G__10536__delegate;
  return G__10536;
  })()
  ;
  not_EQ_ = function(x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return not_EQ___1.call(this,x);
  case 2:
  return not_EQ___2.call(this,x,y);
  default:
  var G__10539 = null;
  if (arguments.length > 2) {
  var G__10540__i = 0, G__10540__a = new Array(arguments.length -  2);
  while (G__10540__i < G__10540__a.length) {G__10540__a[G__10540__i] = arguments[G__10540__i + 2]; ++G__10540__i;}
  G__10539 = new cljs.core.IndexedSeq(G__10540__a,0);
  }
  return not_EQ___3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__10539);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  not_EQ_.cljs$lang$maxFixedArity = 2;
  not_EQ_.cljs$lang$applyTo = not_EQ___3.cljs$lang$applyTo;
  not_EQ_.cljs$core$IFn$_invoke$arity$1 = not_EQ___1;
  not_EQ_.cljs$core$IFn$_invoke$arity$2 = not_EQ___2;
  not_EQ_.cljs$core$IFn$_invoke$arity$variadic = not_EQ___3.cljs$core$IFn$_invoke$arity$variadic;
  return not_EQ_;
  })()
  ;
  /**
  * If coll is empty, returns nil, else coll
  */
  cljs.core.not_empty = (function not_empty(coll){
  if(cljs.core.seq(coll)){
  return coll;
  } else {
  return null;
  }
  });
  cljs.core.nil_iter = (function nil_iter(){
  if(typeof cljs.core.t10544 !== 'undefined'){
  } else {
  
  /**
  * @constructor
  */
  cljs.core.t10544 = (function (nil_iter,meta10545){
  this.nil_iter = nil_iter;
  this.meta10545 = meta10545;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 393216;
  })
  cljs.core.t10544.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  return false;
  });
  
  cljs.core.t10544.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  return (new Error("No such element"));
  });
  
  cljs.core.t10544.prototype.remove = (function (){
  var self__ = this;
  var _ = this;
  return (new Error("Unsupported operation"));
  });
  
  cljs.core.t10544.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_10546){
  var self__ = this;
  var _10546__$1 = this;
  return self__.meta10545;
  });
  
  cljs.core.t10544.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (_10546,meta10545__$1){
  var self__ = this;
  var _10546__$1 = this;
  return (new cljs.core.t10544(self__.nil_iter,meta10545__$1));
  });
  
  cljs.core.t10544.cljs$lang$type = true;
  
  cljs.core.t10544.cljs$lang$ctorStr = "cljs.core/t10544";
  
  cljs.core.t10544.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/t10544");
  });
  
  cljs.core.__GT_t10544 = (function __GT_t10544(nil_iter__$1,meta10545){
  return (new cljs.core.t10544(nil_iter__$1,meta10545));
  });
  
  }
  
  return (new cljs.core.t10544(nil_iter,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"end-column","end-column",1425389514),54,new cljs.core.Keyword(null,"end-line","end-line",1837326455),3063,new cljs.core.Keyword(null,"column","column",2078222095),3,new cljs.core.Keyword(null,"line","line",212345235),3059,new cljs.core.Keyword(null,"file","file",-1269645878),"/Users/brentvatne/coding/shout/client/cljs/.repl/cljs/core.cljs"], null)));
  });
  
  /**
  * @constructor
  */
  cljs.core.StringIter = (function (s,i){
  this.s = s;
  this.i = i;
  })
  cljs.core.StringIter.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  return (self__.i < self__.s.length);
  });
  
  cljs.core.StringIter.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  var ret = self__.s.charAt(self__.i);
  self__.i = (self__.i + (1));
  
  return ret;
  });
  
  cljs.core.StringIter.prototype.remove = (function (){
  var self__ = this;
  var _ = this;
  return (new Error("Unsupported operation"));
  });
  
  cljs.core.StringIter.cljs$lang$type = true;
  
  cljs.core.StringIter.cljs$lang$ctorStr = "cljs.core/StringIter";
  
  cljs.core.StringIter.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/StringIter");
  });
  
  cljs.core.__GT_StringIter = (function __GT_StringIter(s,i){
  return (new cljs.core.StringIter(s,i));
  });
  
  cljs.core.string_iter = (function string_iter(x){
  return (new cljs.core.StringIter(x,(0)));
  });
  
  /**
  * @constructor
  */
  cljs.core.ArrayIter = (function (arr,i){
  this.arr = arr;
  this.i = i;
  })
  cljs.core.ArrayIter.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  return (self__.i < self__.arr.length);
  });
  
  cljs.core.ArrayIter.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  var ret = (self__.arr[self__.i]);
  self__.i = (self__.i + (1));
  
  return ret;
  });
  
  cljs.core.ArrayIter.prototype.remove = (function (){
  var self__ = this;
  var _ = this;
  return (new Error("Unsupported operation"));
  });
  
  cljs.core.ArrayIter.cljs$lang$type = true;
  
  cljs.core.ArrayIter.cljs$lang$ctorStr = "cljs.core/ArrayIter";
  
  cljs.core.ArrayIter.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ArrayIter");
  });
  
  cljs.core.__GT_ArrayIter = (function __GT_ArrayIter(arr,i){
  return (new cljs.core.ArrayIter(arr,i));
  });
  
  cljs.core.array_iter = (function array_iter(x){
  return (new cljs.core.ArrayIter(x,(0)));
  });
  cljs.core.INIT = {};
  cljs.core.START = {};
  
  /**
  * @constructor
  */
  cljs.core.SeqIter = (function (_seq,_next){
  this._seq = _seq;
  this._next = _next;
  })
  cljs.core.SeqIter.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  if((self__._seq === cljs.core.INIT)){
  self__._seq = cljs.core.START;
  
  self__._next = cljs.core.seq(self__._next);
  } else {
  if((self__._seq === self__._next)){
  self__._next = cljs.core.next(self__._seq);
  } else {
  }
  }
  
  return !((self__._next == null));
  });
  
  cljs.core.SeqIter.prototype.next = (function (){
  var self__ = this;
  var this$ = this;
  if(cljs.core.not(this$.hasNext())){
  throw (new Error("No such element"));
  } else {
  self__._seq = self__._next;
  
  return cljs.core.first(self__._next);
  }
  });
  
  cljs.core.SeqIter.prototype.remove = (function (){
  var self__ = this;
  var _ = this;
  return (new Error("Unsupported operation"));
  });
  
  cljs.core.SeqIter.cljs$lang$type = true;
  
  cljs.core.SeqIter.cljs$lang$ctorStr = "cljs.core/SeqIter";
  
  cljs.core.SeqIter.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/SeqIter");
  });
  
  cljs.core.__GT_SeqIter = (function __GT_SeqIter(_seq,_next){
  return (new cljs.core.SeqIter(_seq,_next));
  });
  
  cljs.core.seq_iter = (function seq_iter(coll){
  return (new cljs.core.SeqIter(cljs.core.INIT,coll));
  });
  cljs.core.iter = (function iter(coll){
  if((coll == null)){
  return cljs.core.nil_iter();
  } else {
  if(typeof coll === 'string'){
  return cljs.core.string_iter(coll);
  } else {
  if(coll instanceof Array){
  return cljs.core.array_iter(coll);
  } else {
  if(cljs.core.iterable_QMARK_(coll)){
  return cljs.core._iterator(coll);
  } else {
  if(cljs.core.seqable_QMARK_(coll)){
  return cljs.core.seq_iter(coll);
  } else {
  throw (new Error([cljs.core.str("Cannot create iterator from "),cljs.core.str(coll)].join('')));
  
  }
  }
  }
  }
  }
  });
  cljs.core.lazy_transformer = (function lazy_transformer(stepper){
  return (new cljs.core.LazyTransformer(stepper,null,null,null));
  });
  
  /**
  * @constructor
  */
  cljs.core.Stepper = (function (xform,iter){
  this.xform = xform;
  this.iter = iter;
  })
  cljs.core.Stepper.prototype.step = (function (lt){
  var self__ = this;
  var this$ = this;
  while(true){
  if(cljs.core.truth_((function (){var and__3796__auto__ = !((lt.stepper == null));
  if(and__3796__auto__){
  return self__.iter.hasNext();
  } else {
  return and__3796__auto__;
  }
  })())){
  if(cljs.core.reduced_QMARK_((function (){var G__10547 = lt;
  var G__10548 = self__.iter.next();
  return (self__.xform.cljs$core$IFn$_invoke$arity$2 ? self__.xform.cljs$core$IFn$_invoke$arity$2(G__10547,G__10548) : self__.xform.call(null,G__10547,G__10548));
  })())){
  if((lt.rest == null)){
  } else {
  lt.rest.stepper = null;
  }
  } else {
  continue;
  }
  } else {
  }
  break;
  }
  
  if((lt.stepper == null)){
  return null;
  } else {
  var G__10549 = lt;
  return (self__.xform.cljs$core$IFn$_invoke$arity$1 ? self__.xform.cljs$core$IFn$_invoke$arity$1(G__10549) : self__.xform.call(null,G__10549));
  }
  });
  
  cljs.core.Stepper.cljs$lang$type = true;
  
  cljs.core.Stepper.cljs$lang$ctorStr = "cljs.core/Stepper";
  
  cljs.core.Stepper.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Stepper");
  });
  
  cljs.core.__GT_Stepper = (function __GT_Stepper(xform,iter){
  return (new cljs.core.Stepper(xform,iter));
  });
  
  cljs.core.stepper = (function stepper(xform,iter){
  var stepfn = (function() {
  var stepfn = null;
  var stepfn__1 = (function (result){
  var lt = ((cljs.core.reduced_QMARK_(result))?cljs.core.deref(result):result);
  lt.stepper = null;
  
  return result;
  });
  var stepfn__2 = (function (result,input){
  var lt = result;
  lt.first = input;
  
  lt.rest = cljs.core.lazy_transformer(lt.stepper);
  
  lt.stepper = null;
  
  return lt.rest;
  });
  stepfn = function(result,input){
  switch(arguments.length){
  case 1:
  return stepfn__1.call(this,result);
  case 2:
  return stepfn__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  stepfn.cljs$core$IFn$_invoke$arity$1 = stepfn__1;
  stepfn.cljs$core$IFn$_invoke$arity$2 = stepfn__2;
  return stepfn;
  })()
  ;
  return (new cljs.core.Stepper((function (){var G__10551 = stepfn;
  return (xform.cljs$core$IFn$_invoke$arity$1 ? xform.cljs$core$IFn$_invoke$arity$1(G__10551) : xform.call(null,G__10551));
  })(),iter));
  });
  
  /**
  * @constructor
  */
  cljs.core.MultiStepper = (function (xform,iters,nexts){
  this.xform = xform;
  this.iters = iters;
  this.nexts = nexts;
  })
  cljs.core.MultiStepper.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  var iters__$1 = cljs.core.seq(self__.iters);
  while(true){
  if(!((iters__$1 == null))){
  var iter = cljs.core.first(iters__$1);
  if(cljs.core.not(iter.hasNext())){
  return false;
  } else {
  var G__10553 = cljs.core.next(iters__$1);
  iters__$1 = G__10553;
  continue;
  }
  } else {
  return true;
  }
  break;
  }
  });
  
  cljs.core.MultiStepper.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  var n__4695__auto___10554 = self__.iters.length;
  var i_10555 = (0);
  while(true){
  if((i_10555 < n__4695__auto___10554)){
  (self__.nexts[i_10555] = (self__.iters[i_10555]).next());
  
  var G__10556 = (i_10555 + (1));
  i_10555 = G__10556;
  continue;
  } else {
  }
  break;
  }
  
  return cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2(self__.nexts,(0));
  });
  
  cljs.core.MultiStepper.prototype.step = (function (lt){
  var self__ = this;
  var this$ = this;
  while(true){
  if(cljs.core.truth_((function (){var and__3796__auto__ = !((lt.stepper == null));
  if(and__3796__auto__){
  return this$.hasNext();
  } else {
  return and__3796__auto__;
  }
  })())){
  if(cljs.core.reduced_QMARK_(cljs.core.apply.cljs$core$IFn$_invoke$arity$2(self__.xform,cljs.core.cons(lt,this$.next())))){
  if((lt.rest == null)){
  } else {
  lt.rest.stepper = null;
  }
  } else {
  continue;
  }
  } else {
  }
  break;
  }
  
  if((lt.stepper == null)){
  return null;
  } else {
  var G__10552 = lt;
  return (self__.xform.cljs$core$IFn$_invoke$arity$1 ? self__.xform.cljs$core$IFn$_invoke$arity$1(G__10552) : self__.xform.call(null,G__10552));
  }
  });
  
  cljs.core.MultiStepper.cljs$lang$type = true;
  
  cljs.core.MultiStepper.cljs$lang$ctorStr = "cljs.core/MultiStepper";
  
  cljs.core.MultiStepper.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/MultiStepper");
  });
  
  cljs.core.__GT_MultiStepper = (function __GT_MultiStepper(xform,iters,nexts){
  return (new cljs.core.MultiStepper(xform,iters,nexts));
  });
  
  cljs.core.multi_stepper = (function() {
  var multi_stepper = null;
  var multi_stepper__2 = (function (xform,iters){
  return multi_stepper.cljs$core$IFn$_invoke$arity$3(xform,iters,(new Array(iters.length)));
  });
  var multi_stepper__3 = (function (xform,iters,nexts){
  var stepfn = (function() {
  var stepfn = null;
  var stepfn__1 = (function (result){
  var lt = ((cljs.core.reduced_QMARK_(result))?cljs.core.deref(result):result);
  lt.stepper = null;
  
  return lt;
  });
  var stepfn__2 = (function (result,input){
  var lt = result;
  lt.first = input;
  
  lt.rest = cljs.core.lazy_transformer(lt.stepper);
  
  lt.stepper = null;
  
  return lt.rest;
  });
  stepfn = function(result,input){
  switch(arguments.length){
  case 1:
  return stepfn__1.call(this,result);
  case 2:
  return stepfn__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  stepfn.cljs$core$IFn$_invoke$arity$1 = stepfn__1;
  stepfn.cljs$core$IFn$_invoke$arity$2 = stepfn__2;
  return stepfn;
  })()
  ;
  return (new cljs.core.MultiStepper((function (){var G__10561 = stepfn;
  return (xform.cljs$core$IFn$_invoke$arity$1 ? xform.cljs$core$IFn$_invoke$arity$1(G__10561) : xform.call(null,G__10561));
  })(),iters,nexts));
  });
  multi_stepper = function(xform,iters,nexts){
  switch(arguments.length){
  case 2:
  return multi_stepper__2.call(this,xform,iters);
  case 3:
  return multi_stepper__3.call(this,xform,iters,nexts);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  multi_stepper.cljs$core$IFn$_invoke$arity$2 = multi_stepper__2;
  multi_stepper.cljs$core$IFn$_invoke$arity$3 = multi_stepper__3;
  return multi_stepper;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.LazyTransformer = (function (stepper,first,rest,meta){
  this.stepper = stepper;
  this.first = first;
  this.rest = rest;
  this.meta = meta;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 31719628;
  })
  cljs.core.LazyTransformer.prototype.cljs$core$INext$_next$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  if((self__.stepper == null)){
  } else {
  cljs.core._seq(this$__$1);
  }
  
  if((self__.rest == null)){
  return null;
  } else {
  return cljs.core._seq(self__.rest);
  }
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$ISeq$_first$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  if((self__.stepper == null)){
  } else {
  cljs.core._seq(this$__$1);
  }
  
  if((self__.rest == null)){
  return null;
  } else {
  return self__.first;
  }
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$ISeq$_rest$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  if((self__.stepper == null)){
  } else {
  cljs.core._seq(this$__$1);
  }
  
  if((self__.rest == null)){
  return cljs.core.List.EMPTY;
  } else {
  return self__.rest;
  }
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  if((self__.stepper == null)){
  } else {
  self__.stepper.step(this$__$1);
  }
  
  if((self__.rest == null)){
  return null;
  } else {
  return this$__$1;
  }
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core.hash_ordered_coll(this$__$1);
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this$,other){
  var self__ = this;
  var this$__$1 = this;
  var s = cljs.core._seq(this$__$1);
  if(!((s == null))){
  return cljs.core.equiv_sequential(this$__$1,other);
  } else {
  return (cljs.core.sequential_QMARK_(other)) && ((cljs.core.seq(other) == null));
  }
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core.List.EMPTY;
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this$,o){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core.cons(o,cljs.core._seq(this$__$1));
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this$,new_meta){
  var self__ = this;
  var this$__$1 = this;
  return (new cljs.core.LazyTransformer(self__.stepper,self__.first,self__.rest,new_meta));
  });
  
  cljs.core.LazyTransformer.cljs$lang$type = true;
  
  cljs.core.LazyTransformer.cljs$lang$ctorStr = "cljs.core/LazyTransformer";
  
  cljs.core.LazyTransformer.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/LazyTransformer");
  });
  
  cljs.core.__GT_LazyTransformer = (function __GT_LazyTransformer(stepper,first,rest,meta){
  return (new cljs.core.LazyTransformer(stepper,first,rest,meta));
  });
  
  (cljs.core.LazyTransformer.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.LazyTransformer.create = (function (xform,coll){
  return (new cljs.core.LazyTransformer(cljs.core.stepper(xform,cljs.core.iter(coll)),null,null,null));
  });
  cljs.core.LazyTransformer.createMulti = (function (xform,colls){
  var iters = [];
  var seq__10562_10566 = cljs.core.seq(colls);
  var chunk__10563_10567 = null;
  var count__10564_10568 = (0);
  var i__10565_10569 = (0);
  while(true){
  if((i__10565_10569 < count__10564_10568)){
  var coll_10570 = chunk__10563_10567.cljs$core$IIndexed$_nth$arity$2(null,i__10565_10569);
  iters.push(cljs.core.iter(coll_10570));
  
  var G__10571 = seq__10562_10566;
  var G__10572 = chunk__10563_10567;
  var G__10573 = count__10564_10568;
  var G__10574 = (i__10565_10569 + (1));
  seq__10562_10566 = G__10571;
  chunk__10563_10567 = G__10572;
  count__10564_10568 = G__10573;
  i__10565_10569 = G__10574;
  continue;
  } else {
  var temp__4126__auto___10575 = cljs.core.seq(seq__10562_10566);
  if(temp__4126__auto___10575){
  var seq__10562_10576__$1 = temp__4126__auto___10575;
  if(cljs.core.chunked_seq_QMARK_(seq__10562_10576__$1)){
  var c__4595__auto___10577 = cljs.core.chunk_first(seq__10562_10576__$1);
  var G__10578 = cljs.core.chunk_rest(seq__10562_10576__$1);
  var G__10579 = c__4595__auto___10577;
  var G__10580 = cljs.core.count(c__4595__auto___10577);
  var G__10581 = (0);
  seq__10562_10566 = G__10578;
  chunk__10563_10567 = G__10579;
  count__10564_10568 = G__10580;
  i__10565_10569 = G__10581;
  continue;
  } else {
  var coll_10582 = cljs.core.first(seq__10562_10576__$1);
  iters.push(cljs.core.iter(coll_10582));
  
  var G__10583 = cljs.core.next(seq__10562_10576__$1);
  var G__10584 = null;
  var G__10585 = (0);
  var G__10586 = (0);
  seq__10562_10566 = G__10583;
  chunk__10563_10567 = G__10584;
  count__10564_10568 = G__10585;
  i__10565_10569 = G__10586;
  continue;
  }
  } else {
  }
  }
  break;
  }
  
  return (new cljs.core.LazyTransformer(cljs.core.multi_stepper.cljs$core$IFn$_invoke$arity$3(xform,iters,(new Array(iters.length))),null,null,null));
  });
  /**
  * Coerces coll to a (possibly empty) sequence, if it is not already
  * one. Will not force a lazy seq. (sequence nil) yields (), When a
  * transducer is supplied, returns a lazy sequence of applications of
  * the transform to the items in coll(s), i.e. to the set of first
  * items of each coll, followed by the set of second
  * items in each coll, until any one of the colls is exhausted.  Any
  * remaining items in other colls are ignored. The transform should accept
  * number-of-colls arguments
  * @param {...*} var_args
  */
  cljs.core.sequence = (function() {
  var sequence = null;
  var sequence__1 = (function (coll){
  if(cljs.core.seq_QMARK_(coll)){
  return coll;
  } else {
  var or__3808__auto__ = cljs.core.seq(coll);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  return cljs.core.List.EMPTY;
  }
  }
  });
  var sequence__2 = (function (xform,coll){
  return cljs.core.LazyTransformer.create(xform,coll);
  });
  var sequence__3 = (function() { 
  var G__10587__delegate = function (xform,coll,colls){
  return cljs.core.LazyTransformer.createMulti(xform,cljs.core.to_array(cljs.core.cons(coll,colls)));
  };
  var G__10587 = function (xform,coll,var_args){
  var colls = null;
  if (arguments.length > 2) {
  var G__10588__i = 0, G__10588__a = new Array(arguments.length -  2);
  while (G__10588__i < G__10588__a.length) {G__10588__a[G__10588__i] = arguments[G__10588__i + 2]; ++G__10588__i;}
    colls = new cljs.core.IndexedSeq(G__10588__a,0);
  } 
  return G__10587__delegate.call(this,xform,coll,colls);};
  G__10587.cljs$lang$maxFixedArity = 2;
  G__10587.cljs$lang$applyTo = (function (arglist__10589){
  var xform = cljs.core.first(arglist__10589);
  arglist__10589 = cljs.core.next(arglist__10589);
  var coll = cljs.core.first(arglist__10589);
  var colls = cljs.core.rest(arglist__10589);
  return G__10587__delegate(xform,coll,colls);
  });
  G__10587.cljs$core$IFn$_invoke$arity$variadic = G__10587__delegate;
  return G__10587;
  })()
  ;
  sequence = function(xform,coll,var_args){
  var colls = var_args;
  switch(arguments.length){
  case 1:
  return sequence__1.call(this,xform);
  case 2:
  return sequence__2.call(this,xform,coll);
  default:
  var G__10590 = null;
  if (arguments.length > 2) {
  var G__10591__i = 0, G__10591__a = new Array(arguments.length -  2);
  while (G__10591__i < G__10591__a.length) {G__10591__a[G__10591__i] = arguments[G__10591__i + 2]; ++G__10591__i;}
  G__10590 = new cljs.core.IndexedSeq(G__10591__a,0);
  }
  return sequence__3.cljs$core$IFn$_invoke$arity$variadic(xform,coll, G__10590);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  sequence.cljs$lang$maxFixedArity = 2;
  sequence.cljs$lang$applyTo = sequence__3.cljs$lang$applyTo;
  sequence.cljs$core$IFn$_invoke$arity$1 = sequence__1;
  sequence.cljs$core$IFn$_invoke$arity$2 = sequence__2;
  sequence.cljs$core$IFn$_invoke$arity$variadic = sequence__3.cljs$core$IFn$_invoke$arity$variadic;
  return sequence;
  })()
  ;
  /**
  * Returns true if (pred x) is logical true for every x in coll, else
  * false.
  */
  cljs.core.every_QMARK_ = (function every_QMARK_(pred,coll){
  while(true){
  if((cljs.core.seq(coll) == null)){
  return true;
  } else {
  if(cljs.core.truth_((function (){var G__10593 = cljs.core.first(coll);
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__10593) : pred.call(null,G__10593));
  })())){
  var G__10594 = pred;
  var G__10595 = cljs.core.next(coll);
  pred = G__10594;
  coll = G__10595;
  continue;
  } else {
  return false;
  
  }
  }
  break;
  }
  });
  /**
  * Returns false if (pred x) is logical true for every x in
  * coll, else true.
  */
  cljs.core.not_every_QMARK_ = (function not_every_QMARK_(pred,coll){
  return !(cljs.core.every_QMARK_(pred,coll));
  });
  /**
  * Returns the first logical true value of (pred x) for any x in coll,
  * else nil.  One common idiom is to use a set as pred, for example
  * this will return :fred if :fred is in the sequence, otherwise nil:
  * (some #{:fred} coll)
  */
  cljs.core.some = (function some(pred,coll){
  while(true){
  if(cljs.core.seq(coll)){
  var or__3808__auto__ = (function (){var G__10599 = cljs.core.first(coll);
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__10599) : pred.call(null,G__10599));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var G__10600 = pred;
  var G__10601 = cljs.core.next(coll);
  pred = G__10600;
  coll = G__10601;
  continue;
  }
  } else {
  return null;
  }
  break;
  }
  });
  /**
  * Returns false if (pred x) is logical true for any x in coll,
  * else true.
  */
  cljs.core.not_any_QMARK_ = (function not_any_QMARK_(pred,coll){
  return cljs.core.not(cljs.core.some(pred,coll));
  });
  /**
  * Returns true if n is even, throws an exception if n is not an integer
  */
  cljs.core.even_QMARK_ = (function even_QMARK_(n){
  if(cljs.core.integer_QMARK_(n)){
  return ((n & (1)) === (0));
  } else {
  throw (new Error([cljs.core.str("Argument must be an integer: "),cljs.core.str(n)].join('')));
  }
  });
  /**
  * Returns true if n is odd, throws an exception if n is not an integer
  */
  cljs.core.odd_QMARK_ = (function odd_QMARK_(n){
  return !(cljs.core.even_QMARK_(n));
  });
  /**
  * Takes a fn f and returns a fn that takes the same arguments as f,
  * has the same effects, if any, and returns the opposite truth value.
  */
  cljs.core.complement = (function complement(f){
  return (function() {
  var G__10608 = null;
  var G__10608__0 = (function (){
  return cljs.core.not((function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })());
  });
  var G__10608__1 = (function (x){
  return cljs.core.not((function (){var G__10605 = x;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10605) : f.call(null,G__10605));
  })());
  });
  var G__10608__2 = (function (x,y){
  return cljs.core.not((function (){var G__10606 = x;
  var G__10607 = y;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10606,G__10607) : f.call(null,G__10606,G__10607));
  })());
  });
  var G__10608__3 = (function() { 
  var G__10609__delegate = function (x,y,zs){
  return cljs.core.not(cljs.core.apply.cljs$core$IFn$_invoke$arity$4(f,x,y,zs));
  };
  var G__10609 = function (x,y,var_args){
  var zs = null;
  if (arguments.length > 2) {
  var G__10610__i = 0, G__10610__a = new Array(arguments.length -  2);
  while (G__10610__i < G__10610__a.length) {G__10610__a[G__10610__i] = arguments[G__10610__i + 2]; ++G__10610__i;}
    zs = new cljs.core.IndexedSeq(G__10610__a,0);
  } 
  return G__10609__delegate.call(this,x,y,zs);};
  G__10609.cljs$lang$maxFixedArity = 2;
  G__10609.cljs$lang$applyTo = (function (arglist__10611){
  var x = cljs.core.first(arglist__10611);
  arglist__10611 = cljs.core.next(arglist__10611);
  var y = cljs.core.first(arglist__10611);
  var zs = cljs.core.rest(arglist__10611);
  return G__10609__delegate(x,y,zs);
  });
  G__10609.cljs$core$IFn$_invoke$arity$variadic = G__10609__delegate;
  return G__10609;
  })()
  ;
  G__10608 = function(x,y,var_args){
  var zs = var_args;
  switch(arguments.length){
  case 0:
  return G__10608__0.call(this);
  case 1:
  return G__10608__1.call(this,x);
  case 2:
  return G__10608__2.call(this,x,y);
  default:
  var G__10612 = null;
  if (arguments.length > 2) {
  var G__10613__i = 0, G__10613__a = new Array(arguments.length -  2);
  while (G__10613__i < G__10613__a.length) {G__10613__a[G__10613__i] = arguments[G__10613__i + 2]; ++G__10613__i;}
  G__10612 = new cljs.core.IndexedSeq(G__10613__a,0);
  }
  return G__10608__3.cljs$core$IFn$_invoke$arity$variadic(x,y, G__10612);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10608.cljs$lang$maxFixedArity = 2;
  G__10608.cljs$lang$applyTo = G__10608__3.cljs$lang$applyTo;
  G__10608.cljs$core$IFn$_invoke$arity$0 = G__10608__0;
  G__10608.cljs$core$IFn$_invoke$arity$1 = G__10608__1;
  G__10608.cljs$core$IFn$_invoke$arity$2 = G__10608__2;
  G__10608.cljs$core$IFn$_invoke$arity$variadic = G__10608__3.cljs$core$IFn$_invoke$arity$variadic;
  return G__10608;
  })()
  });
  /**
  * Returns a function that takes any number of arguments and returns x.
  */
  cljs.core.constantly = (function constantly(x){
  return (function() { 
  var G__10614__delegate = function (args){
  return x;
  };
  var G__10614 = function (var_args){
  var args = null;
  if (arguments.length > 0) {
  var G__10615__i = 0, G__10615__a = new Array(arguments.length -  0);
  while (G__10615__i < G__10615__a.length) {G__10615__a[G__10615__i] = arguments[G__10615__i + 0]; ++G__10615__i;}
    args = new cljs.core.IndexedSeq(G__10615__a,0);
  } 
  return G__10614__delegate.call(this,args);};
  G__10614.cljs$lang$maxFixedArity = 0;
  G__10614.cljs$lang$applyTo = (function (arglist__10616){
  var args = cljs.core.seq(arglist__10616);
  return G__10614__delegate(args);
  });
  G__10614.cljs$core$IFn$_invoke$arity$variadic = G__10614__delegate;
  return G__10614;
  })()
  ;
  });
  /**
  * Takes a set of functions and returns a fn that is the composition
  * of those fns.  The returned fn takes a variable number of args,
  * applies the rightmost of fns to the args, the next
  * fn (right-to-left) to the result, etc.
  * @param {...*} var_args
  */
  cljs.core.comp = (function() {
  var comp = null;
  var comp__0 = (function (){
  return cljs.core.identity;
  });
  var comp__1 = (function (f){
  return f;
  });
  var comp__2 = (function (f,g){
  return (function() {
  var G__10671 = null;
  var G__10671__0 = (function (){
  var G__10644 = (function (){return (g.cljs$core$IFn$_invoke$arity$0 ? g.cljs$core$IFn$_invoke$arity$0() : g.call(null));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10644) : f.call(null,G__10644));
  });
  var G__10671__1 = (function (x){
  var G__10645 = (function (){var G__10646 = x;
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__10646) : g.call(null,G__10646));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10645) : f.call(null,G__10645));
  });
  var G__10671__2 = (function (x,y){
  var G__10647 = (function (){var G__10648 = x;
  var G__10649 = y;
  return (g.cljs$core$IFn$_invoke$arity$2 ? g.cljs$core$IFn$_invoke$arity$2(G__10648,G__10649) : g.call(null,G__10648,G__10649));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10647) : f.call(null,G__10647));
  });
  var G__10671__3 = (function (x,y,z){
  var G__10650 = (function (){var G__10651 = x;
  var G__10652 = y;
  var G__10653 = z;
  return (g.cljs$core$IFn$_invoke$arity$3 ? g.cljs$core$IFn$_invoke$arity$3(G__10651,G__10652,G__10653) : g.call(null,G__10651,G__10652,G__10653));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10650) : f.call(null,G__10650));
  });
  var G__10671__4 = (function() { 
  var G__10672__delegate = function (x,y,z,args){
  var G__10654 = cljs.core.apply.cljs$core$IFn$_invoke$arity$5(g,x,y,z,args);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10654) : f.call(null,G__10654));
  };
  var G__10672 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__10673__i = 0, G__10673__a = new Array(arguments.length -  3);
  while (G__10673__i < G__10673__a.length) {G__10673__a[G__10673__i] = arguments[G__10673__i + 3]; ++G__10673__i;}
    args = new cljs.core.IndexedSeq(G__10673__a,0);
  } 
  return G__10672__delegate.call(this,x,y,z,args);};
  G__10672.cljs$lang$maxFixedArity = 3;
  G__10672.cljs$lang$applyTo = (function (arglist__10674){
  var x = cljs.core.first(arglist__10674);
  arglist__10674 = cljs.core.next(arglist__10674);
  var y = cljs.core.first(arglist__10674);
  arglist__10674 = cljs.core.next(arglist__10674);
  var z = cljs.core.first(arglist__10674);
  var args = cljs.core.rest(arglist__10674);
  return G__10672__delegate(x,y,z,args);
  });
  G__10672.cljs$core$IFn$_invoke$arity$variadic = G__10672__delegate;
  return G__10672;
  })()
  ;
  G__10671 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__10671__0.call(this);
  case 1:
  return G__10671__1.call(this,x);
  case 2:
  return G__10671__2.call(this,x,y);
  case 3:
  return G__10671__3.call(this,x,y,z);
  default:
  var G__10675 = null;
  if (arguments.length > 3) {
  var G__10676__i = 0, G__10676__a = new Array(arguments.length -  3);
  while (G__10676__i < G__10676__a.length) {G__10676__a[G__10676__i] = arguments[G__10676__i + 3]; ++G__10676__i;}
  G__10675 = new cljs.core.IndexedSeq(G__10676__a,0);
  }
  return G__10671__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__10675);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10671.cljs$lang$maxFixedArity = 3;
  G__10671.cljs$lang$applyTo = G__10671__4.cljs$lang$applyTo;
  G__10671.cljs$core$IFn$_invoke$arity$0 = G__10671__0;
  G__10671.cljs$core$IFn$_invoke$arity$1 = G__10671__1;
  G__10671.cljs$core$IFn$_invoke$arity$2 = G__10671__2;
  G__10671.cljs$core$IFn$_invoke$arity$3 = G__10671__3;
  G__10671.cljs$core$IFn$_invoke$arity$variadic = G__10671__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10671;
  })()
  });
  var comp__3 = (function (f,g,h){
  return (function() {
  var G__10677 = null;
  var G__10677__0 = (function (){
  var G__10655 = (function (){var G__10656 = (function (){return (h.cljs$core$IFn$_invoke$arity$0 ? h.cljs$core$IFn$_invoke$arity$0() : h.call(null));
  })();
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__10656) : g.call(null,G__10656));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10655) : f.call(null,G__10655));
  });
  var G__10677__1 = (function (x){
  var G__10657 = (function (){var G__10658 = (function (){var G__10659 = x;
  return (h.cljs$core$IFn$_invoke$arity$1 ? h.cljs$core$IFn$_invoke$arity$1(G__10659) : h.call(null,G__10659));
  })();
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__10658) : g.call(null,G__10658));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10657) : f.call(null,G__10657));
  });
  var G__10677__2 = (function (x,y){
  var G__10660 = (function (){var G__10661 = (function (){var G__10662 = x;
  var G__10663 = y;
  return (h.cljs$core$IFn$_invoke$arity$2 ? h.cljs$core$IFn$_invoke$arity$2(G__10662,G__10663) : h.call(null,G__10662,G__10663));
  })();
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__10661) : g.call(null,G__10661));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10660) : f.call(null,G__10660));
  });
  var G__10677__3 = (function (x,y,z){
  var G__10664 = (function (){var G__10665 = (function (){var G__10666 = x;
  var G__10667 = y;
  var G__10668 = z;
  return (h.cljs$core$IFn$_invoke$arity$3 ? h.cljs$core$IFn$_invoke$arity$3(G__10666,G__10667,G__10668) : h.call(null,G__10666,G__10667,G__10668));
  })();
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__10665) : g.call(null,G__10665));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10664) : f.call(null,G__10664));
  });
  var G__10677__4 = (function() { 
  var G__10678__delegate = function (x,y,z,args){
  var G__10669 = (function (){var G__10670 = cljs.core.apply.cljs$core$IFn$_invoke$arity$5(h,x,y,z,args);
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__10670) : g.call(null,G__10670));
  })();
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10669) : f.call(null,G__10669));
  };
  var G__10678 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__10679__i = 0, G__10679__a = new Array(arguments.length -  3);
  while (G__10679__i < G__10679__a.length) {G__10679__a[G__10679__i] = arguments[G__10679__i + 3]; ++G__10679__i;}
    args = new cljs.core.IndexedSeq(G__10679__a,0);
  } 
  return G__10678__delegate.call(this,x,y,z,args);};
  G__10678.cljs$lang$maxFixedArity = 3;
  G__10678.cljs$lang$applyTo = (function (arglist__10680){
  var x = cljs.core.first(arglist__10680);
  arglist__10680 = cljs.core.next(arglist__10680);
  var y = cljs.core.first(arglist__10680);
  arglist__10680 = cljs.core.next(arglist__10680);
  var z = cljs.core.first(arglist__10680);
  var args = cljs.core.rest(arglist__10680);
  return G__10678__delegate(x,y,z,args);
  });
  G__10678.cljs$core$IFn$_invoke$arity$variadic = G__10678__delegate;
  return G__10678;
  })()
  ;
  G__10677 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__10677__0.call(this);
  case 1:
  return G__10677__1.call(this,x);
  case 2:
  return G__10677__2.call(this,x,y);
  case 3:
  return G__10677__3.call(this,x,y,z);
  default:
  var G__10681 = null;
  if (arguments.length > 3) {
  var G__10682__i = 0, G__10682__a = new Array(arguments.length -  3);
  while (G__10682__i < G__10682__a.length) {G__10682__a[G__10682__i] = arguments[G__10682__i + 3]; ++G__10682__i;}
  G__10681 = new cljs.core.IndexedSeq(G__10682__a,0);
  }
  return G__10677__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__10681);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10677.cljs$lang$maxFixedArity = 3;
  G__10677.cljs$lang$applyTo = G__10677__4.cljs$lang$applyTo;
  G__10677.cljs$core$IFn$_invoke$arity$0 = G__10677__0;
  G__10677.cljs$core$IFn$_invoke$arity$1 = G__10677__1;
  G__10677.cljs$core$IFn$_invoke$arity$2 = G__10677__2;
  G__10677.cljs$core$IFn$_invoke$arity$3 = G__10677__3;
  G__10677.cljs$core$IFn$_invoke$arity$variadic = G__10677__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10677;
  })()
  });
  var comp__4 = (function() { 
  var G__10683__delegate = function (f1,f2,f3,fs){
  var fs__$1 = cljs.core.reverse(cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(f1,f2,f3,fs));
  return ((function (fs__$1){
  return (function() { 
  var G__10684__delegate = function (args){
  var ret = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.first(fs__$1),args);
  var fs__$2 = cljs.core.next(fs__$1);
  while(true){
  if(fs__$2){
  var G__10685 = cljs.core.first(fs__$2).call(null,ret);
  var G__10686 = cljs.core.next(fs__$2);
  ret = G__10685;
  fs__$2 = G__10686;
  continue;
  } else {
  return ret;
  }
  break;
  }
  };
  var G__10684 = function (var_args){
  var args = null;
  if (arguments.length > 0) {
  var G__10687__i = 0, G__10687__a = new Array(arguments.length -  0);
  while (G__10687__i < G__10687__a.length) {G__10687__a[G__10687__i] = arguments[G__10687__i + 0]; ++G__10687__i;}
    args = new cljs.core.IndexedSeq(G__10687__a,0);
  } 
  return G__10684__delegate.call(this,args);};
  G__10684.cljs$lang$maxFixedArity = 0;
  G__10684.cljs$lang$applyTo = (function (arglist__10688){
  var args = cljs.core.seq(arglist__10688);
  return G__10684__delegate(args);
  });
  G__10684.cljs$core$IFn$_invoke$arity$variadic = G__10684__delegate;
  return G__10684;
  })()
  ;
  ;})(fs__$1))
  };
  var G__10683 = function (f1,f2,f3,var_args){
  var fs = null;
  if (arguments.length > 3) {
  var G__10689__i = 0, G__10689__a = new Array(arguments.length -  3);
  while (G__10689__i < G__10689__a.length) {G__10689__a[G__10689__i] = arguments[G__10689__i + 3]; ++G__10689__i;}
    fs = new cljs.core.IndexedSeq(G__10689__a,0);
  } 
  return G__10683__delegate.call(this,f1,f2,f3,fs);};
  G__10683.cljs$lang$maxFixedArity = 3;
  G__10683.cljs$lang$applyTo = (function (arglist__10690){
  var f1 = cljs.core.first(arglist__10690);
  arglist__10690 = cljs.core.next(arglist__10690);
  var f2 = cljs.core.first(arglist__10690);
  arglist__10690 = cljs.core.next(arglist__10690);
  var f3 = cljs.core.first(arglist__10690);
  var fs = cljs.core.rest(arglist__10690);
  return G__10683__delegate(f1,f2,f3,fs);
  });
  G__10683.cljs$core$IFn$_invoke$arity$variadic = G__10683__delegate;
  return G__10683;
  })()
  ;
  comp = function(f1,f2,f3,var_args){
  var fs = var_args;
  switch(arguments.length){
  case 0:
  return comp__0.call(this);
  case 1:
  return comp__1.call(this,f1);
  case 2:
  return comp__2.call(this,f1,f2);
  case 3:
  return comp__3.call(this,f1,f2,f3);
  default:
  var G__10691 = null;
  if (arguments.length > 3) {
  var G__10692__i = 0, G__10692__a = new Array(arguments.length -  3);
  while (G__10692__i < G__10692__a.length) {G__10692__a[G__10692__i] = arguments[G__10692__i + 3]; ++G__10692__i;}
  G__10691 = new cljs.core.IndexedSeq(G__10692__a,0);
  }
  return comp__4.cljs$core$IFn$_invoke$arity$variadic(f1,f2,f3, G__10691);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  comp.cljs$lang$maxFixedArity = 3;
  comp.cljs$lang$applyTo = comp__4.cljs$lang$applyTo;
  comp.cljs$core$IFn$_invoke$arity$0 = comp__0;
  comp.cljs$core$IFn$_invoke$arity$1 = comp__1;
  comp.cljs$core$IFn$_invoke$arity$2 = comp__2;
  comp.cljs$core$IFn$_invoke$arity$3 = comp__3;
  comp.cljs$core$IFn$_invoke$arity$variadic = comp__4.cljs$core$IFn$_invoke$arity$variadic;
  return comp;
  })()
  ;
  /**
  * Takes a function f and fewer than the normal arguments to f, and
  * returns a fn that takes a variable number of additional args. When
  * called, the returned function calls f with args + additional args.
  * @param {...*} var_args
  */
  cljs.core.partial = (function() {
  var partial = null;
  var partial__1 = (function (f){
  return f;
  });
  var partial__2 = (function (f,arg1){
  return (function() {
  var G__10777 = null;
  var G__10777__0 = (function (){
  var G__10735 = arg1;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10735) : f.call(null,G__10735));
  });
  var G__10777__1 = (function (x){
  var G__10736 = arg1;
  var G__10737 = x;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10736,G__10737) : f.call(null,G__10736,G__10737));
  });
  var G__10777__2 = (function (x,y){
  var G__10738 = arg1;
  var G__10739 = x;
  var G__10740 = y;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10738,G__10739,G__10740) : f.call(null,G__10738,G__10739,G__10740));
  });
  var G__10777__3 = (function (x,y,z){
  var G__10741 = arg1;
  var G__10742 = x;
  var G__10743 = y;
  var G__10744 = z;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10741,G__10742,G__10743,G__10744) : f.call(null,G__10741,G__10742,G__10743,G__10744));
  });
  var G__10777__4 = (function() { 
  var G__10778__delegate = function (x,y,z,args){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,arg1,x,y,z,cljs.core.array_seq([args], 0));
  };
  var G__10778 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__10779__i = 0, G__10779__a = new Array(arguments.length -  3);
  while (G__10779__i < G__10779__a.length) {G__10779__a[G__10779__i] = arguments[G__10779__i + 3]; ++G__10779__i;}
    args = new cljs.core.IndexedSeq(G__10779__a,0);
  } 
  return G__10778__delegate.call(this,x,y,z,args);};
  G__10778.cljs$lang$maxFixedArity = 3;
  G__10778.cljs$lang$applyTo = (function (arglist__10780){
  var x = cljs.core.first(arglist__10780);
  arglist__10780 = cljs.core.next(arglist__10780);
  var y = cljs.core.first(arglist__10780);
  arglist__10780 = cljs.core.next(arglist__10780);
  var z = cljs.core.first(arglist__10780);
  var args = cljs.core.rest(arglist__10780);
  return G__10778__delegate(x,y,z,args);
  });
  G__10778.cljs$core$IFn$_invoke$arity$variadic = G__10778__delegate;
  return G__10778;
  })()
  ;
  G__10777 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__10777__0.call(this);
  case 1:
  return G__10777__1.call(this,x);
  case 2:
  return G__10777__2.call(this,x,y);
  case 3:
  return G__10777__3.call(this,x,y,z);
  default:
  var G__10781 = null;
  if (arguments.length > 3) {
  var G__10782__i = 0, G__10782__a = new Array(arguments.length -  3);
  while (G__10782__i < G__10782__a.length) {G__10782__a[G__10782__i] = arguments[G__10782__i + 3]; ++G__10782__i;}
  G__10781 = new cljs.core.IndexedSeq(G__10782__a,0);
  }
  return G__10777__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__10781);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10777.cljs$lang$maxFixedArity = 3;
  G__10777.cljs$lang$applyTo = G__10777__4.cljs$lang$applyTo;
  G__10777.cljs$core$IFn$_invoke$arity$0 = G__10777__0;
  G__10777.cljs$core$IFn$_invoke$arity$1 = G__10777__1;
  G__10777.cljs$core$IFn$_invoke$arity$2 = G__10777__2;
  G__10777.cljs$core$IFn$_invoke$arity$3 = G__10777__3;
  G__10777.cljs$core$IFn$_invoke$arity$variadic = G__10777__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10777;
  })()
  });
  var partial__3 = (function (f,arg1,arg2){
  return (function() {
  var G__10783 = null;
  var G__10783__0 = (function (){
  var G__10745 = arg1;
  var G__10746 = arg2;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10745,G__10746) : f.call(null,G__10745,G__10746));
  });
  var G__10783__1 = (function (x){
  var G__10747 = arg1;
  var G__10748 = arg2;
  var G__10749 = x;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10747,G__10748,G__10749) : f.call(null,G__10747,G__10748,G__10749));
  });
  var G__10783__2 = (function (x,y){
  var G__10750 = arg1;
  var G__10751 = arg2;
  var G__10752 = x;
  var G__10753 = y;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10750,G__10751,G__10752,G__10753) : f.call(null,G__10750,G__10751,G__10752,G__10753));
  });
  var G__10783__3 = (function (x,y,z){
  var G__10754 = arg1;
  var G__10755 = arg2;
  var G__10756 = x;
  var G__10757 = y;
  var G__10758 = z;
  return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(G__10754,G__10755,G__10756,G__10757,G__10758) : f.call(null,G__10754,G__10755,G__10756,G__10757,G__10758));
  });
  var G__10783__4 = (function() { 
  var G__10784__delegate = function (x,y,z,args){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,arg1,arg2,x,y,cljs.core.array_seq([z,args], 0));
  };
  var G__10784 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__10785__i = 0, G__10785__a = new Array(arguments.length -  3);
  while (G__10785__i < G__10785__a.length) {G__10785__a[G__10785__i] = arguments[G__10785__i + 3]; ++G__10785__i;}
    args = new cljs.core.IndexedSeq(G__10785__a,0);
  } 
  return G__10784__delegate.call(this,x,y,z,args);};
  G__10784.cljs$lang$maxFixedArity = 3;
  G__10784.cljs$lang$applyTo = (function (arglist__10786){
  var x = cljs.core.first(arglist__10786);
  arglist__10786 = cljs.core.next(arglist__10786);
  var y = cljs.core.first(arglist__10786);
  arglist__10786 = cljs.core.next(arglist__10786);
  var z = cljs.core.first(arglist__10786);
  var args = cljs.core.rest(arglist__10786);
  return G__10784__delegate(x,y,z,args);
  });
  G__10784.cljs$core$IFn$_invoke$arity$variadic = G__10784__delegate;
  return G__10784;
  })()
  ;
  G__10783 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__10783__0.call(this);
  case 1:
  return G__10783__1.call(this,x);
  case 2:
  return G__10783__2.call(this,x,y);
  case 3:
  return G__10783__3.call(this,x,y,z);
  default:
  var G__10787 = null;
  if (arguments.length > 3) {
  var G__10788__i = 0, G__10788__a = new Array(arguments.length -  3);
  while (G__10788__i < G__10788__a.length) {G__10788__a[G__10788__i] = arguments[G__10788__i + 3]; ++G__10788__i;}
  G__10787 = new cljs.core.IndexedSeq(G__10788__a,0);
  }
  return G__10783__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__10787);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10783.cljs$lang$maxFixedArity = 3;
  G__10783.cljs$lang$applyTo = G__10783__4.cljs$lang$applyTo;
  G__10783.cljs$core$IFn$_invoke$arity$0 = G__10783__0;
  G__10783.cljs$core$IFn$_invoke$arity$1 = G__10783__1;
  G__10783.cljs$core$IFn$_invoke$arity$2 = G__10783__2;
  G__10783.cljs$core$IFn$_invoke$arity$3 = G__10783__3;
  G__10783.cljs$core$IFn$_invoke$arity$variadic = G__10783__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10783;
  })()
  });
  var partial__4 = (function (f,arg1,arg2,arg3){
  return (function() {
  var G__10789 = null;
  var G__10789__0 = (function (){
  var G__10759 = arg1;
  var G__10760 = arg2;
  var G__10761 = arg3;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10759,G__10760,G__10761) : f.call(null,G__10759,G__10760,G__10761));
  });
  var G__10789__1 = (function (x){
  var G__10762 = arg1;
  var G__10763 = arg2;
  var G__10764 = arg3;
  var G__10765 = x;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10762,G__10763,G__10764,G__10765) : f.call(null,G__10762,G__10763,G__10764,G__10765));
  });
  var G__10789__2 = (function (x,y){
  var G__10766 = arg1;
  var G__10767 = arg2;
  var G__10768 = arg3;
  var G__10769 = x;
  var G__10770 = y;
  return (f.cljs$core$IFn$_invoke$arity$5 ? f.cljs$core$IFn$_invoke$arity$5(G__10766,G__10767,G__10768,G__10769,G__10770) : f.call(null,G__10766,G__10767,G__10768,G__10769,G__10770));
  });
  var G__10789__3 = (function (x,y,z){
  var G__10771 = arg1;
  var G__10772 = arg2;
  var G__10773 = arg3;
  var G__10774 = x;
  var G__10775 = y;
  var G__10776 = z;
  return (f.cljs$core$IFn$_invoke$arity$6 ? f.cljs$core$IFn$_invoke$arity$6(G__10771,G__10772,G__10773,G__10774,G__10775,G__10776) : f.call(null,G__10771,G__10772,G__10773,G__10774,G__10775,G__10776));
  });
  var G__10789__4 = (function() { 
  var G__10790__delegate = function (x,y,z,args){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,arg1,arg2,arg3,x,cljs.core.array_seq([y,z,args], 0));
  };
  var G__10790 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__10791__i = 0, G__10791__a = new Array(arguments.length -  3);
  while (G__10791__i < G__10791__a.length) {G__10791__a[G__10791__i] = arguments[G__10791__i + 3]; ++G__10791__i;}
    args = new cljs.core.IndexedSeq(G__10791__a,0);
  } 
  return G__10790__delegate.call(this,x,y,z,args);};
  G__10790.cljs$lang$maxFixedArity = 3;
  G__10790.cljs$lang$applyTo = (function (arglist__10792){
  var x = cljs.core.first(arglist__10792);
  arglist__10792 = cljs.core.next(arglist__10792);
  var y = cljs.core.first(arglist__10792);
  arglist__10792 = cljs.core.next(arglist__10792);
  var z = cljs.core.first(arglist__10792);
  var args = cljs.core.rest(arglist__10792);
  return G__10790__delegate(x,y,z,args);
  });
  G__10790.cljs$core$IFn$_invoke$arity$variadic = G__10790__delegate;
  return G__10790;
  })()
  ;
  G__10789 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__10789__0.call(this);
  case 1:
  return G__10789__1.call(this,x);
  case 2:
  return G__10789__2.call(this,x,y);
  case 3:
  return G__10789__3.call(this,x,y,z);
  default:
  var G__10793 = null;
  if (arguments.length > 3) {
  var G__10794__i = 0, G__10794__a = new Array(arguments.length -  3);
  while (G__10794__i < G__10794__a.length) {G__10794__a[G__10794__i] = arguments[G__10794__i + 3]; ++G__10794__i;}
  G__10793 = new cljs.core.IndexedSeq(G__10794__a,0);
  }
  return G__10789__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__10793);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10789.cljs$lang$maxFixedArity = 3;
  G__10789.cljs$lang$applyTo = G__10789__4.cljs$lang$applyTo;
  G__10789.cljs$core$IFn$_invoke$arity$0 = G__10789__0;
  G__10789.cljs$core$IFn$_invoke$arity$1 = G__10789__1;
  G__10789.cljs$core$IFn$_invoke$arity$2 = G__10789__2;
  G__10789.cljs$core$IFn$_invoke$arity$3 = G__10789__3;
  G__10789.cljs$core$IFn$_invoke$arity$variadic = G__10789__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10789;
  })()
  });
  var partial__5 = (function() { 
  var G__10795__delegate = function (f,arg1,arg2,arg3,more){
  return (function() { 
  var G__10796__delegate = function (args){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,arg1,arg2,arg3,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(more,args));
  };
  var G__10796 = function (var_args){
  var args = null;
  if (arguments.length > 0) {
  var G__10797__i = 0, G__10797__a = new Array(arguments.length -  0);
  while (G__10797__i < G__10797__a.length) {G__10797__a[G__10797__i] = arguments[G__10797__i + 0]; ++G__10797__i;}
    args = new cljs.core.IndexedSeq(G__10797__a,0);
  } 
  return G__10796__delegate.call(this,args);};
  G__10796.cljs$lang$maxFixedArity = 0;
  G__10796.cljs$lang$applyTo = (function (arglist__10798){
  var args = cljs.core.seq(arglist__10798);
  return G__10796__delegate(args);
  });
  G__10796.cljs$core$IFn$_invoke$arity$variadic = G__10796__delegate;
  return G__10796;
  })()
  ;
  };
  var G__10795 = function (f,arg1,arg2,arg3,var_args){
  var more = null;
  if (arguments.length > 4) {
  var G__10799__i = 0, G__10799__a = new Array(arguments.length -  4);
  while (G__10799__i < G__10799__a.length) {G__10799__a[G__10799__i] = arguments[G__10799__i + 4]; ++G__10799__i;}
    more = new cljs.core.IndexedSeq(G__10799__a,0);
  } 
  return G__10795__delegate.call(this,f,arg1,arg2,arg3,more);};
  G__10795.cljs$lang$maxFixedArity = 4;
  G__10795.cljs$lang$applyTo = (function (arglist__10800){
  var f = cljs.core.first(arglist__10800);
  arglist__10800 = cljs.core.next(arglist__10800);
  var arg1 = cljs.core.first(arglist__10800);
  arglist__10800 = cljs.core.next(arglist__10800);
  var arg2 = cljs.core.first(arglist__10800);
  arglist__10800 = cljs.core.next(arglist__10800);
  var arg3 = cljs.core.first(arglist__10800);
  var more = cljs.core.rest(arglist__10800);
  return G__10795__delegate(f,arg1,arg2,arg3,more);
  });
  G__10795.cljs$core$IFn$_invoke$arity$variadic = G__10795__delegate;
  return G__10795;
  })()
  ;
  partial = function(f,arg1,arg2,arg3,var_args){
  var more = var_args;
  switch(arguments.length){
  case 1:
  return partial__1.call(this,f);
  case 2:
  return partial__2.call(this,f,arg1);
  case 3:
  return partial__3.call(this,f,arg1,arg2);
  case 4:
  return partial__4.call(this,f,arg1,arg2,arg3);
  default:
  var G__10801 = null;
  if (arguments.length > 4) {
  var G__10802__i = 0, G__10802__a = new Array(arguments.length -  4);
  while (G__10802__i < G__10802__a.length) {G__10802__a[G__10802__i] = arguments[G__10802__i + 4]; ++G__10802__i;}
  G__10801 = new cljs.core.IndexedSeq(G__10802__a,0);
  }
  return partial__5.cljs$core$IFn$_invoke$arity$variadic(f,arg1,arg2,arg3, G__10801);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  partial.cljs$lang$maxFixedArity = 4;
  partial.cljs$lang$applyTo = partial__5.cljs$lang$applyTo;
  partial.cljs$core$IFn$_invoke$arity$1 = partial__1;
  partial.cljs$core$IFn$_invoke$arity$2 = partial__2;
  partial.cljs$core$IFn$_invoke$arity$3 = partial__3;
  partial.cljs$core$IFn$_invoke$arity$4 = partial__4;
  partial.cljs$core$IFn$_invoke$arity$variadic = partial__5.cljs$core$IFn$_invoke$arity$variadic;
  return partial;
  })()
  ;
  /**
  * Takes a function f, and returns a function that calls f, replacing
  * a nil first argument to f with the supplied value x. Higher arity
  * versions can replace arguments in the second and third
  * positions (y, z). Note that the function f can take any number of
  * arguments, not just the one(s) being nil-patched.
  */
  cljs.core.fnil = (function() {
  var fnil = null;
  var fnil__2 = (function (f,x){
  return (function() {
  var G__10835 = null;
  var G__10835__1 = (function (a){
  var G__10819 = (((a == null))?x:a);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10819) : f.call(null,G__10819));
  });
  var G__10835__2 = (function (a,b){
  var G__10820 = (((a == null))?x:a);
  var G__10821 = b;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10820,G__10821) : f.call(null,G__10820,G__10821));
  });
  var G__10835__3 = (function (a,b,c){
  var G__10822 = (((a == null))?x:a);
  var G__10823 = b;
  var G__10824 = c;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10822,G__10823,G__10824) : f.call(null,G__10822,G__10823,G__10824));
  });
  var G__10835__4 = (function() { 
  var G__10836__delegate = function (a,b,c,ds){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,(((a == null))?x:a),b,c,ds);
  };
  var G__10836 = function (a,b,c,var_args){
  var ds = null;
  if (arguments.length > 3) {
  var G__10837__i = 0, G__10837__a = new Array(arguments.length -  3);
  while (G__10837__i < G__10837__a.length) {G__10837__a[G__10837__i] = arguments[G__10837__i + 3]; ++G__10837__i;}
    ds = new cljs.core.IndexedSeq(G__10837__a,0);
  } 
  return G__10836__delegate.call(this,a,b,c,ds);};
  G__10836.cljs$lang$maxFixedArity = 3;
  G__10836.cljs$lang$applyTo = (function (arglist__10838){
  var a = cljs.core.first(arglist__10838);
  arglist__10838 = cljs.core.next(arglist__10838);
  var b = cljs.core.first(arglist__10838);
  arglist__10838 = cljs.core.next(arglist__10838);
  var c = cljs.core.first(arglist__10838);
  var ds = cljs.core.rest(arglist__10838);
  return G__10836__delegate(a,b,c,ds);
  });
  G__10836.cljs$core$IFn$_invoke$arity$variadic = G__10836__delegate;
  return G__10836;
  })()
  ;
  G__10835 = function(a,b,c,var_args){
  var ds = var_args;
  switch(arguments.length){
  case 1:
  return G__10835__1.call(this,a);
  case 2:
  return G__10835__2.call(this,a,b);
  case 3:
  return G__10835__3.call(this,a,b,c);
  default:
  var G__10839 = null;
  if (arguments.length > 3) {
  var G__10840__i = 0, G__10840__a = new Array(arguments.length -  3);
  while (G__10840__i < G__10840__a.length) {G__10840__a[G__10840__i] = arguments[G__10840__i + 3]; ++G__10840__i;}
  G__10839 = new cljs.core.IndexedSeq(G__10840__a,0);
  }
  return G__10835__4.cljs$core$IFn$_invoke$arity$variadic(a,b,c, G__10839);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10835.cljs$lang$maxFixedArity = 3;
  G__10835.cljs$lang$applyTo = G__10835__4.cljs$lang$applyTo;
  G__10835.cljs$core$IFn$_invoke$arity$1 = G__10835__1;
  G__10835.cljs$core$IFn$_invoke$arity$2 = G__10835__2;
  G__10835.cljs$core$IFn$_invoke$arity$3 = G__10835__3;
  G__10835.cljs$core$IFn$_invoke$arity$variadic = G__10835__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10835;
  })()
  });
  var fnil__3 = (function (f,x,y){
  return (function() {
  var G__10841 = null;
  var G__10841__2 = (function (a,b){
  var G__10825 = (((a == null))?x:a);
  var G__10826 = (((b == null))?y:b);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10825,G__10826) : f.call(null,G__10825,G__10826));
  });
  var G__10841__3 = (function (a,b,c){
  var G__10827 = (((a == null))?x:a);
  var G__10828 = (((b == null))?y:b);
  var G__10829 = c;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10827,G__10828,G__10829) : f.call(null,G__10827,G__10828,G__10829));
  });
  var G__10841__4 = (function() { 
  var G__10842__delegate = function (a,b,c,ds){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,(((a == null))?x:a),(((b == null))?y:b),c,ds);
  };
  var G__10842 = function (a,b,c,var_args){
  var ds = null;
  if (arguments.length > 3) {
  var G__10843__i = 0, G__10843__a = new Array(arguments.length -  3);
  while (G__10843__i < G__10843__a.length) {G__10843__a[G__10843__i] = arguments[G__10843__i + 3]; ++G__10843__i;}
    ds = new cljs.core.IndexedSeq(G__10843__a,0);
  } 
  return G__10842__delegate.call(this,a,b,c,ds);};
  G__10842.cljs$lang$maxFixedArity = 3;
  G__10842.cljs$lang$applyTo = (function (arglist__10844){
  var a = cljs.core.first(arglist__10844);
  arglist__10844 = cljs.core.next(arglist__10844);
  var b = cljs.core.first(arglist__10844);
  arglist__10844 = cljs.core.next(arglist__10844);
  var c = cljs.core.first(arglist__10844);
  var ds = cljs.core.rest(arglist__10844);
  return G__10842__delegate(a,b,c,ds);
  });
  G__10842.cljs$core$IFn$_invoke$arity$variadic = G__10842__delegate;
  return G__10842;
  })()
  ;
  G__10841 = function(a,b,c,var_args){
  var ds = var_args;
  switch(arguments.length){
  case 2:
  return G__10841__2.call(this,a,b);
  case 3:
  return G__10841__3.call(this,a,b,c);
  default:
  var G__10845 = null;
  if (arguments.length > 3) {
  var G__10846__i = 0, G__10846__a = new Array(arguments.length -  3);
  while (G__10846__i < G__10846__a.length) {G__10846__a[G__10846__i] = arguments[G__10846__i + 3]; ++G__10846__i;}
  G__10845 = new cljs.core.IndexedSeq(G__10846__a,0);
  }
  return G__10841__4.cljs$core$IFn$_invoke$arity$variadic(a,b,c, G__10845);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10841.cljs$lang$maxFixedArity = 3;
  G__10841.cljs$lang$applyTo = G__10841__4.cljs$lang$applyTo;
  G__10841.cljs$core$IFn$_invoke$arity$2 = G__10841__2;
  G__10841.cljs$core$IFn$_invoke$arity$3 = G__10841__3;
  G__10841.cljs$core$IFn$_invoke$arity$variadic = G__10841__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10841;
  })()
  });
  var fnil__4 = (function (f,x,y,z){
  return (function() {
  var G__10847 = null;
  var G__10847__2 = (function (a,b){
  var G__10830 = (((a == null))?x:a);
  var G__10831 = (((b == null))?y:b);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10830,G__10831) : f.call(null,G__10830,G__10831));
  });
  var G__10847__3 = (function (a,b,c){
  var G__10832 = (((a == null))?x:a);
  var G__10833 = (((b == null))?y:b);
  var G__10834 = (((c == null))?z:c);
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10832,G__10833,G__10834) : f.call(null,G__10832,G__10833,G__10834));
  });
  var G__10847__4 = (function() { 
  var G__10848__delegate = function (a,b,c,ds){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,(((a == null))?x:a),(((b == null))?y:b),(((c == null))?z:c),ds);
  };
  var G__10848 = function (a,b,c,var_args){
  var ds = null;
  if (arguments.length > 3) {
  var G__10849__i = 0, G__10849__a = new Array(arguments.length -  3);
  while (G__10849__i < G__10849__a.length) {G__10849__a[G__10849__i] = arguments[G__10849__i + 3]; ++G__10849__i;}
    ds = new cljs.core.IndexedSeq(G__10849__a,0);
  } 
  return G__10848__delegate.call(this,a,b,c,ds);};
  G__10848.cljs$lang$maxFixedArity = 3;
  G__10848.cljs$lang$applyTo = (function (arglist__10850){
  var a = cljs.core.first(arglist__10850);
  arglist__10850 = cljs.core.next(arglist__10850);
  var b = cljs.core.first(arglist__10850);
  arglist__10850 = cljs.core.next(arglist__10850);
  var c = cljs.core.first(arglist__10850);
  var ds = cljs.core.rest(arglist__10850);
  return G__10848__delegate(a,b,c,ds);
  });
  G__10848.cljs$core$IFn$_invoke$arity$variadic = G__10848__delegate;
  return G__10848;
  })()
  ;
  G__10847 = function(a,b,c,var_args){
  var ds = var_args;
  switch(arguments.length){
  case 2:
  return G__10847__2.call(this,a,b);
  case 3:
  return G__10847__3.call(this,a,b,c);
  default:
  var G__10851 = null;
  if (arguments.length > 3) {
  var G__10852__i = 0, G__10852__a = new Array(arguments.length -  3);
  while (G__10852__i < G__10852__a.length) {G__10852__a[G__10852__i] = arguments[G__10852__i + 3]; ++G__10852__i;}
  G__10851 = new cljs.core.IndexedSeq(G__10852__a,0);
  }
  return G__10847__4.cljs$core$IFn$_invoke$arity$variadic(a,b,c, G__10851);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10847.cljs$lang$maxFixedArity = 3;
  G__10847.cljs$lang$applyTo = G__10847__4.cljs$lang$applyTo;
  G__10847.cljs$core$IFn$_invoke$arity$2 = G__10847__2;
  G__10847.cljs$core$IFn$_invoke$arity$3 = G__10847__3;
  G__10847.cljs$core$IFn$_invoke$arity$variadic = G__10847__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__10847;
  })()
  });
  fnil = function(f,x,y,z){
  switch(arguments.length){
  case 2:
  return fnil__2.call(this,f,x);
  case 3:
  return fnil__3.call(this,f,x,y);
  case 4:
  return fnil__4.call(this,f,x,y,z);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  fnil.cljs$core$IFn$_invoke$arity$2 = fnil__2;
  fnil.cljs$core$IFn$_invoke$arity$3 = fnil__3;
  fnil.cljs$core$IFn$_invoke$arity$4 = fnil__4;
  return fnil;
  })()
  ;
  /**
  * Returns a lazy sequence consisting of the result of applying f to 0
  * and the first item of coll, followed by applying f to 1 and the second
  * item in coll, etc, until coll is exhausted. Thus function f should
  * accept 2 arguments, index and item.
  */
  cljs.core.map_indexed = (function() {
  var map_indexed = null;
  var map_indexed__1 = (function (f){
  return (function (rf){
  var i = (function (){var G__10883 = (-1);
  return (cljs.core.volatile_BANG_.cljs$core$IFn$_invoke$arity$1 ? cljs.core.volatile_BANG_.cljs$core$IFn$_invoke$arity$1(G__10883) : cljs.core.volatile_BANG_.call(null,G__10883));
  })();
  return ((function (i){
  return (function() {
  var G__10913 = null;
  var G__10913__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__10913__1 = (function (result){
  var G__10884 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__10884) : rf.call(null,G__10884));
  });
  var G__10913__2 = (function (result,input){
  var G__10885 = result;
  var G__10886 = (function (){var G__10887 = cljs.core._vreset_BANG_(i,(cljs.core._deref(i) + (1)));
  var G__10888 = input;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10887,G__10888) : f.call(null,G__10887,G__10888));
  })();
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__10885,G__10886) : rf.call(null,G__10885,G__10886));
  });
  G__10913 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__10913__0.call(this);
  case 1:
  return G__10913__1.call(this,result);
  case 2:
  return G__10913__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10913.cljs$core$IFn$_invoke$arity$0 = G__10913__0;
  G__10913.cljs$core$IFn$_invoke$arity$1 = G__10913__1;
  G__10913.cljs$core$IFn$_invoke$arity$2 = G__10913__2;
  return G__10913;
  })()
  ;})(i))
  });
  });
  var map_indexed__2 = (function (f,coll){
  var mapi = (function mapi(idx,coll__$1){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll__$1);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(s)){
  var c = cljs.core.chunk_first(s);
  var size = cljs.core.count(c);
  var b = cljs.core.chunk_buffer(size);
  var n__4695__auto___10914 = size;
  var i_10915 = (0);
  while(true){
  if((i_10915 < n__4695__auto___10914)){
  cljs.core.chunk_append(b,(function (){var G__10909 = (idx + i_10915);
  var G__10910 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_10915);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10909,G__10910) : f.call(null,G__10909,G__10910));
  })());
  
  var G__10916 = (i_10915 + (1));
  i_10915 = G__10916;
  continue;
  } else {
  }
  break;
  }
  
  return cljs.core.chunk_cons(cljs.core.chunk(b),mapi((idx + size),cljs.core.chunk_rest(s)));
  } else {
  return cljs.core.cons((function (){var G__10911 = idx;
  var G__10912 = cljs.core.first(s);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10911,G__10912) : f.call(null,G__10911,G__10912));
  })(),mapi((idx + (1)),cljs.core.rest(s)));
  }
  } else {
  return null;
  }
  }),null,null));
  });
  return mapi((0),coll);
  });
  map_indexed = function(f,coll){
  switch(arguments.length){
  case 1:
  return map_indexed__1.call(this,f);
  case 2:
  return map_indexed__2.call(this,f,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  map_indexed.cljs$core$IFn$_invoke$arity$1 = map_indexed__1;
  map_indexed.cljs$core$IFn$_invoke$arity$2 = map_indexed__2;
  return map_indexed;
  })()
  ;
  /**
  * Returns a lazy sequence of the non-nil results of (f item). Note,
  * this means false return values will be included.  f must be free of
  * side-effects.  Returns a transducer when no collection is provided.
  */
  cljs.core.keep = (function() {
  var keep = null;
  var keep__1 = (function (f){
  return (function (rf){
  return (function() {
  var G__10935 = null;
  var G__10935__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__10935__1 = (function (result){
  var G__10929 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__10929) : rf.call(null,G__10929));
  });
  var G__10935__2 = (function (result,input){
  var v = (function (){var G__10930 = input;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10930) : f.call(null,G__10930));
  })();
  if((v == null)){
  return result;
  } else {
  var G__10931 = result;
  var G__10932 = v;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__10931,G__10932) : rf.call(null,G__10931,G__10932));
  }
  });
  G__10935 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__10935__0.call(this);
  case 1:
  return G__10935__1.call(this,result);
  case 2:
  return G__10935__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__10935.cljs$core$IFn$_invoke$arity$0 = G__10935__0;
  G__10935.cljs$core$IFn$_invoke$arity$1 = G__10935__1;
  G__10935.cljs$core$IFn$_invoke$arity$2 = G__10935__2;
  return G__10935;
  })()
  });
  });
  var keep__2 = (function (f,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(s)){
  var c = cljs.core.chunk_first(s);
  var size = cljs.core.count(c);
  var b = cljs.core.chunk_buffer(size);
  var n__4695__auto___10936 = size;
  var i_10937 = (0);
  while(true){
  if((i_10937 < n__4695__auto___10936)){
  var x_10938 = (function (){var G__10933 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_10937);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10933) : f.call(null,G__10933));
  })();
  if((x_10938 == null)){
  } else {
  cljs.core.chunk_append(b,x_10938);
  }
  
  var G__10939 = (i_10937 + (1));
  i_10937 = G__10939;
  continue;
  } else {
  }
  break;
  }
  
  return cljs.core.chunk_cons(cljs.core.chunk(b),keep.cljs$core$IFn$_invoke$arity$2(f,cljs.core.chunk_rest(s)));
  } else {
  var x = (function (){var G__10934 = cljs.core.first(s);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10934) : f.call(null,G__10934));
  })();
  if((x == null)){
  return keep.cljs$core$IFn$_invoke$arity$2(f,cljs.core.rest(s));
  } else {
  return cljs.core.cons(x,keep.cljs$core$IFn$_invoke$arity$2(f,cljs.core.rest(s)));
  }
  }
  } else {
  return null;
  }
  }),null,null));
  });
  keep = function(f,coll){
  switch(arguments.length){
  case 1:
  return keep__1.call(this,f);
  case 2:
  return keep__2.call(this,f,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  keep.cljs$core$IFn$_invoke$arity$1 = keep__1;
  keep.cljs$core$IFn$_invoke$arity$2 = keep__2;
  return keep;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.Atom = (function (state,meta,validator,watches){
  this.state = state;
  this.meta = meta;
  this.validator = validator;
  this.watches = watches;
  this.cljs$lang$protocol_mask$partition0$ = 6455296;
  this.cljs$lang$protocol_mask$partition1$ = 16386;
  })
  cljs.core.Atom.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  var G__10940 = this$__$1;
  return goog.getUid(G__10940);
  });
  
  cljs.core.Atom.prototype.cljs$core$IWatchable$_notify_watches$arity$3 = (function (this$,oldval,newval){
  var self__ = this;
  var this$__$1 = this;
  var seq__10941 = cljs.core.seq(self__.watches);
  var chunk__10942 = null;
  var count__10943 = (0);
  var i__10944 = (0);
  while(true){
  if((i__10944 < count__10943)){
  var vec__10945 = chunk__10942.cljs$core$IIndexed$_nth$arity$2(null,i__10944);
  var key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10945,(0),null);
  var f = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10945,(1),null);
  var G__10946_10955 = key;
  var G__10947_10956 = this$__$1;
  var G__10948_10957 = oldval;
  var G__10949_10958 = newval;
  (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10946_10955,G__10947_10956,G__10948_10957,G__10949_10958) : f.call(null,G__10946_10955,G__10947_10956,G__10948_10957,G__10949_10958));
  
  var G__10959 = seq__10941;
  var G__10960 = chunk__10942;
  var G__10961 = count__10943;
  var G__10962 = (i__10944 + (1));
  seq__10941 = G__10959;
  chunk__10942 = G__10960;
  count__10943 = G__10961;
  i__10944 = G__10962;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__10941);
  if(temp__4126__auto__){
  var seq__10941__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__10941__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__10941__$1);
  var G__10963 = cljs.core.chunk_rest(seq__10941__$1);
  var G__10964 = c__4595__auto__;
  var G__10965 = cljs.core.count(c__4595__auto__);
  var G__10966 = (0);
  seq__10941 = G__10963;
  chunk__10942 = G__10964;
  count__10943 = G__10965;
  i__10944 = G__10966;
  continue;
  } else {
  var vec__10950 = cljs.core.first(seq__10941__$1);
  var key = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10950,(0),null);
  var f = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__10950,(1),null);
  var G__10951_10967 = key;
  var G__10952_10968 = this$__$1;
  var G__10953_10969 = oldval;
  var G__10954_10970 = newval;
  (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__10951_10967,G__10952_10968,G__10953_10969,G__10954_10970) : f.call(null,G__10951_10967,G__10952_10968,G__10953_10969,G__10954_10970));
  
  var G__10971 = cljs.core.next(seq__10941__$1);
  var G__10972 = null;
  var G__10973 = (0);
  var G__10974 = (0);
  seq__10941 = G__10971;
  chunk__10942 = G__10972;
  count__10943 = G__10973;
  i__10944 = G__10974;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  
  cljs.core.Atom.prototype.cljs$core$IWatchable$_add_watch$arity$3 = (function (this$,key,f){
  var self__ = this;
  var this$__$1 = this;
  this$__$1.watches = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.watches,key,f);
  
  return this$__$1;
  });
  
  cljs.core.Atom.prototype.cljs$core$IWatchable$_remove_watch$arity$2 = (function (this$,key){
  var self__ = this;
  var this$__$1 = this;
  return this$__$1.watches = cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.watches,key);
  });
  
  cljs.core.Atom.prototype.cljs$core$IMeta$_meta$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.meta;
  });
  
  cljs.core.Atom.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.state;
  });
  
  cljs.core.Atom.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (o,other){
  var self__ = this;
  var o__$1 = this;
  return (o__$1 === other);
  });
  
  cljs.core.Atom.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.Atom.cljs$lang$type = true;
  
  cljs.core.Atom.cljs$lang$ctorStr = "cljs.core/Atom";
  
  cljs.core.Atom.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Atom");
  });
  
  cljs.core.__GT_Atom = (function __GT_Atom(state,meta,validator,watches){
  return (new cljs.core.Atom(state,meta,validator,watches));
  });
  
  /**
  * Creates and returns an Atom with an initial value of x and zero or
  * more options (in any order):
  * 
  * :meta metadata-map
  * 
  * :validator validate-fn
  * 
  * If metadata-map is supplied, it will be come the metadata on the
  * atom. validate-fn must be nil or a side-effect-free fn of one
  * argument, which will be passed the intended new state on any state
  * change. If the new state is unacceptable, the validate-fn should
  * return false or throw an Error.  If either of these error conditions
  * occur, then the value of the atom will not change.
  * @param {...*} var_args
  */
  cljs.core.atom = (function() {
  var atom = null;
  var atom__1 = (function (x){
  return (new cljs.core.Atom(x,null,null,null));
  });
  var atom__2 = (function() { 
  var G__10978__delegate = function (x,p__10975){
  var map__10977 = p__10975;
  var map__10977__$1 = ((cljs.core.seq_QMARK_(map__10977))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__10977):map__10977);
  var validator = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__10977__$1,new cljs.core.Keyword(null,"validator","validator",-1966190681));
  var meta = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__10977__$1,new cljs.core.Keyword(null,"meta","meta",1499536964));
  return (new cljs.core.Atom(x,meta,validator,null));
  };
  var G__10978 = function (x,var_args){
  var p__10975 = null;
  if (arguments.length > 1) {
  var G__10979__i = 0, G__10979__a = new Array(arguments.length -  1);
  while (G__10979__i < G__10979__a.length) {G__10979__a[G__10979__i] = arguments[G__10979__i + 1]; ++G__10979__i;}
    p__10975 = new cljs.core.IndexedSeq(G__10979__a,0);
  } 
  return G__10978__delegate.call(this,x,p__10975);};
  G__10978.cljs$lang$maxFixedArity = 1;
  G__10978.cljs$lang$applyTo = (function (arglist__10980){
  var x = cljs.core.first(arglist__10980);
  var p__10975 = cljs.core.rest(arglist__10980);
  return G__10978__delegate(x,p__10975);
  });
  G__10978.cljs$core$IFn$_invoke$arity$variadic = G__10978__delegate;
  return G__10978;
  })()
  ;
  atom = function(x,var_args){
  var p__10975 = var_args;
  switch(arguments.length){
  case 1:
  return atom__1.call(this,x);
  default:
  var G__10981 = null;
  if (arguments.length > 1) {
  var G__10982__i = 0, G__10982__a = new Array(arguments.length -  1);
  while (G__10982__i < G__10982__a.length) {G__10982__a[G__10982__i] = arguments[G__10982__i + 1]; ++G__10982__i;}
  G__10981 = new cljs.core.IndexedSeq(G__10982__a,0);
  }
  return atom__2.cljs$core$IFn$_invoke$arity$variadic(x, G__10981);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  atom.cljs$lang$maxFixedArity = 1;
  atom.cljs$lang$applyTo = atom__2.cljs$lang$applyTo;
  atom.cljs$core$IFn$_invoke$arity$1 = atom__1;
  atom.cljs$core$IFn$_invoke$arity$variadic = atom__2.cljs$core$IFn$_invoke$arity$variadic;
  return atom;
  })()
  ;
  /**
  * Sets the value of atom to newval without regard for the
  * current value. Returns newval.
  */
  cljs.core.reset_BANG_ = (function reset_BANG_(a,new_value){
  if((a instanceof cljs.core.Atom)){
  var validate = a.validator;
  if((validate == null)){
  } else {
  if(cljs.core.truth_((function (){var G__10985 = new_value;
  return (validate.cljs$core$IFn$_invoke$arity$1 ? validate.cljs$core$IFn$_invoke$arity$1(G__10985) : validate.call(null,G__10985));
  })())){
  } else {
  throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str("Validator rejected reference state"),cljs.core.str("\n"),cljs.core.str((function (){var G__10986 = cljs.core.list(new cljs.core.Symbol(null,"validate","validate",1439230700,null),new cljs.core.Symbol(null,"new-value","new-value",-1567397401,null));
  return (cljs.core.pr_str.cljs$core$IFn$_invoke$arity$1 ? cljs.core.pr_str.cljs$core$IFn$_invoke$arity$1(G__10986) : cljs.core.pr_str.call(null,G__10986));
  })())].join('')));
  }
  }
  
  var old_value = a.state;
  a.state = new_value;
  
  if((a.watches == null)){
  } else {
  cljs.core._notify_watches(a,old_value,new_value);
  }
  
  return new_value;
  } else {
  return cljs.core._reset_BANG_(a,new_value);
  }
  });
  /**
  * Atomically swaps the value of atom to be:
  * (apply f current-value-of-atom args). Note that f may be called
  * multiple times, and thus should be free of side effects.  Returns
  * the value that was swapped in.
  * @param {...*} var_args
  */
  cljs.core.swap_BANG_ = (function() {
  var swap_BANG_ = null;
  var swap_BANG___2 = (function (a,f){
  if((a instanceof cljs.core.Atom)){
  return cljs.core.reset_BANG_(a,(function (){var G__10993 = a.state;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__10993) : f.call(null,G__10993));
  })());
  } else {
  return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$2(a,f);
  }
  });
  var swap_BANG___3 = (function (a,f,x){
  if((a instanceof cljs.core.Atom)){
  return cljs.core.reset_BANG_(a,(function (){var G__10994 = a.state;
  var G__10995 = x;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__10994,G__10995) : f.call(null,G__10994,G__10995));
  })());
  } else {
  return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$3(a,f,x);
  }
  });
  var swap_BANG___4 = (function (a,f,x,y){
  if((a instanceof cljs.core.Atom)){
  return cljs.core.reset_BANG_(a,(function (){var G__10996 = a.state;
  var G__10997 = x;
  var G__10998 = y;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__10996,G__10997,G__10998) : f.call(null,G__10996,G__10997,G__10998));
  })());
  } else {
  return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$4(a,f,x,y);
  }
  });
  var swap_BANG___5 = (function() { 
  var G__10999__delegate = function (a,f,x,y,more){
  if((a instanceof cljs.core.Atom)){
  return cljs.core.reset_BANG_(a,cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,a.state,x,y,more));
  } else {
  return cljs.core._swap_BANG_.cljs$core$IFn$_invoke$arity$5(a,f,x,y,more);
  }
  };
  var G__10999 = function (a,f,x,y,var_args){
  var more = null;
  if (arguments.length > 4) {
  var G__11000__i = 0, G__11000__a = new Array(arguments.length -  4);
  while (G__11000__i < G__11000__a.length) {G__11000__a[G__11000__i] = arguments[G__11000__i + 4]; ++G__11000__i;}
    more = new cljs.core.IndexedSeq(G__11000__a,0);
  } 
  return G__10999__delegate.call(this,a,f,x,y,more);};
  G__10999.cljs$lang$maxFixedArity = 4;
  G__10999.cljs$lang$applyTo = (function (arglist__11001){
  var a = cljs.core.first(arglist__11001);
  arglist__11001 = cljs.core.next(arglist__11001);
  var f = cljs.core.first(arglist__11001);
  arglist__11001 = cljs.core.next(arglist__11001);
  var x = cljs.core.first(arglist__11001);
  arglist__11001 = cljs.core.next(arglist__11001);
  var y = cljs.core.first(arglist__11001);
  var more = cljs.core.rest(arglist__11001);
  return G__10999__delegate(a,f,x,y,more);
  });
  G__10999.cljs$core$IFn$_invoke$arity$variadic = G__10999__delegate;
  return G__10999;
  })()
  ;
  swap_BANG_ = function(a,f,x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return swap_BANG___2.call(this,a,f);
  case 3:
  return swap_BANG___3.call(this,a,f,x);
  case 4:
  return swap_BANG___4.call(this,a,f,x,y);
  default:
  var G__11002 = null;
  if (arguments.length > 4) {
  var G__11003__i = 0, G__11003__a = new Array(arguments.length -  4);
  while (G__11003__i < G__11003__a.length) {G__11003__a[G__11003__i] = arguments[G__11003__i + 4]; ++G__11003__i;}
  G__11002 = new cljs.core.IndexedSeq(G__11003__a,0);
  }
  return swap_BANG___5.cljs$core$IFn$_invoke$arity$variadic(a,f,x,y, G__11002);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  swap_BANG_.cljs$lang$maxFixedArity = 4;
  swap_BANG_.cljs$lang$applyTo = swap_BANG___5.cljs$lang$applyTo;
  swap_BANG_.cljs$core$IFn$_invoke$arity$2 = swap_BANG___2;
  swap_BANG_.cljs$core$IFn$_invoke$arity$3 = swap_BANG___3;
  swap_BANG_.cljs$core$IFn$_invoke$arity$4 = swap_BANG___4;
  swap_BANG_.cljs$core$IFn$_invoke$arity$variadic = swap_BANG___5.cljs$core$IFn$_invoke$arity$variadic;
  return swap_BANG_;
  })()
  ;
  /**
  * Atomically sets the value of atom to newval if and only if the
  * current value of the atom is equal to oldval. Returns true if
  * set happened, else false.
  */
  cljs.core.compare_and_set_BANG_ = (function compare_and_set_BANG_(a,oldval,newval){
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(a.cljs$core$IDeref$_deref$arity$1(null),oldval)){
  cljs.core.reset_BANG_(a,newval);
  
  return true;
  } else {
  return false;
  }
  });
  /**
  * Sets the validator-fn for an atom. validator-fn must be nil or a
  * side-effect-free fn of one argument, which will be passed the intended
  * new state on any state change. If the new state is unacceptable, the
  * validator-fn should return false or throw an Error. If the current state
  * is not acceptable to the new validator, an Error will be thrown and the
  * validator will not be changed.
  */
  cljs.core.set_validator_BANG_ = (function set_validator_BANG_(iref,val){
  return iref.validator = val;
  });
  /**
  * Gets the validator-fn for a var/ref/agent/atom.
  */
  cljs.core.get_validator = (function get_validator(iref){
  return iref.validator;
  });
  
  /**
  * @constructor
  */
  cljs.core.Volatile = (function (state){
  this.state = state;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32768;
  })
  cljs.core.Volatile.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return self__.state;
  });
  
  cljs.core.Volatile.prototype.cljs$core$IVolatile$ = true;
  
  cljs.core.Volatile.prototype.cljs$core$IVolatile$_vreset_BANG_$arity$2 = (function (_,new_state){
  var self__ = this;
  var ___$1 = this;
  return self__.state = new_state;
  });
  
  cljs.core.Volatile.cljs$lang$type = true;
  
  cljs.core.Volatile.cljs$lang$ctorStr = "cljs.core/Volatile";
  
  cljs.core.Volatile.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Volatile");
  });
  
  cljs.core.__GT_Volatile = (function __GT_Volatile(state){
  return (new cljs.core.Volatile(state));
  });
  
  /**
  * Creates and returns a Volatile with an initial value of val.
  */
  cljs.core.volatile_BANG_ = (function volatile_BANG_(val){
  return (new cljs.core.Volatile(val));
  });
  /**
  * Returns true if x is a volatile.
  */
  cljs.core.volatile_QMARK_ = (function volatile_QMARK_(x){
  return (x instanceof cljs.core.Volatile);
  });
  /**
  * Sets the value of volatile to newval without regard for the
  * current value. Returns newval.
  */
  cljs.core.vreset_BANG_ = (function vreset_BANG_(vol,newval){
  return cljs.core._vreset_BANG_(vol,newval);
  });
  /**
  * Returns a lazy sequence of the non-nil results of (f index item). Note,
  * this means false return values will be included.  f must be free of
  * side-effects.  Returns a stateful transducer when no collection is
  * provided.
  */
  cljs.core.keep_indexed = (function() {
  var keep_indexed = null;
  var keep_indexed__1 = (function (f){
  return (function (rf){
  var ia = cljs.core.volatile_BANG_((-1));
  return ((function (ia){
  return (function() {
  var G__11070 = null;
  var G__11070__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__11070__1 = (function (result){
  var G__11037 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__11037) : rf.call(null,G__11037));
  });
  var G__11070__2 = (function (result,input){
  var i = ia.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(ia.cljs$core$IDeref$_deref$arity$1(null) + (1)));
  var v = (function (){var G__11038 = i;
  var G__11039 = input;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11038,G__11039) : f.call(null,G__11038,G__11039));
  })();
  if((v == null)){
  return result;
  } else {
  var G__11040 = result;
  var G__11041 = v;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11040,G__11041) : rf.call(null,G__11040,G__11041));
  }
  });
  G__11070 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__11070__0.call(this);
  case 1:
  return G__11070__1.call(this,result);
  case 2:
  return G__11070__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__11070.cljs$core$IFn$_invoke$arity$0 = G__11070__0;
  G__11070.cljs$core$IFn$_invoke$arity$1 = G__11070__1;
  G__11070.cljs$core$IFn$_invoke$arity$2 = G__11070__2;
  return G__11070;
  })()
  ;})(ia))
  });
  });
  var keep_indexed__2 = (function (f,coll){
  var keepi = (function keepi(idx,coll__$1){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll__$1);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(s)){
  var c = cljs.core.chunk_first(s);
  var size = cljs.core.count(c);
  var b = cljs.core.chunk_buffer(size);
  var n__4695__auto___11071 = size;
  var i_11072 = (0);
  while(true){
  if((i_11072 < n__4695__auto___11071)){
  var x_11073 = (function (){var G__11066 = (idx + i_11072);
  var G__11067 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11072);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11066,G__11067) : f.call(null,G__11066,G__11067));
  })();
  if((x_11073 == null)){
  } else {
  cljs.core.chunk_append(b,x_11073);
  }
  
  var G__11074 = (i_11072 + (1));
  i_11072 = G__11074;
  continue;
  } else {
  }
  break;
  }
  
  return cljs.core.chunk_cons(cljs.core.chunk(b),keepi((idx + size),cljs.core.chunk_rest(s)));
  } else {
  var x = (function (){var G__11068 = idx;
  var G__11069 = cljs.core.first(s);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11068,G__11069) : f.call(null,G__11068,G__11069));
  })();
  if((x == null)){
  return keepi((idx + (1)),cljs.core.rest(s));
  } else {
  return cljs.core.cons(x,keepi((idx + (1)),cljs.core.rest(s)));
  }
  }
  } else {
  return null;
  }
  }),null,null));
  });
  return keepi((0),coll);
  });
  keep_indexed = function(f,coll){
  switch(arguments.length){
  case 1:
  return keep_indexed__1.call(this,f);
  case 2:
  return keep_indexed__2.call(this,f,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  keep_indexed.cljs$core$IFn$_invoke$arity$1 = keep_indexed__1;
  keep_indexed.cljs$core$IFn$_invoke$arity$2 = keep_indexed__2;
  return keep_indexed;
  })()
  ;
  /**
  * Takes a set of predicates and returns a function f that returns true if all of its
  * composing predicates return a logical true value against all of its arguments, else it returns
  * false. Note that f is short-circuiting in that it will stop execution on the first
  * argument that triggers a logical false result against the original predicates.
  * @param {...*} var_args
  */
  cljs.core.every_pred = (function() {
  var every_pred = null;
  var every_pred__1 = (function (p){
  return (function() {
  var ep1 = null;
  var ep1__0 = (function (){
  return true;
  });
  var ep1__1 = (function (x){
  return cljs.core.boolean$((function (){var G__11288 = x;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11288) : p.call(null,G__11288));
  })());
  });
  var ep1__2 = (function (x,y){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11290 = x;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11290) : p.call(null,G__11290));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var G__11291 = y;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11291) : p.call(null,G__11291));
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep1__3 = (function (x,y,z){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11293 = x;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11293) : p.call(null,G__11293));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11295 = y;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11295) : p.call(null,G__11295));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var G__11296 = z;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11296) : p.call(null,G__11296));
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep1__4 = (function() { 
  var G__11465__delegate = function (x,y,z,args){
  return cljs.core.boolean$((ep1.cljs$core$IFn$_invoke$arity$3(x,y,z)) && (cljs.core.every_QMARK_(p,args)));
  };
  var G__11465 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11466__i = 0, G__11466__a = new Array(arguments.length -  3);
  while (G__11466__i < G__11466__a.length) {G__11466__a[G__11466__i] = arguments[G__11466__i + 3]; ++G__11466__i;}
    args = new cljs.core.IndexedSeq(G__11466__a,0);
  } 
  return G__11465__delegate.call(this,x,y,z,args);};
  G__11465.cljs$lang$maxFixedArity = 3;
  G__11465.cljs$lang$applyTo = (function (arglist__11467){
  var x = cljs.core.first(arglist__11467);
  arglist__11467 = cljs.core.next(arglist__11467);
  var y = cljs.core.first(arglist__11467);
  arglist__11467 = cljs.core.next(arglist__11467);
  var z = cljs.core.first(arglist__11467);
  var args = cljs.core.rest(arglist__11467);
  return G__11465__delegate(x,y,z,args);
  });
  G__11465.cljs$core$IFn$_invoke$arity$variadic = G__11465__delegate;
  return G__11465;
  })()
  ;
  ep1 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return ep1__0.call(this);
  case 1:
  return ep1__1.call(this,x);
  case 2:
  return ep1__2.call(this,x,y);
  case 3:
  return ep1__3.call(this,x,y,z);
  default:
  var G__11468 = null;
  if (arguments.length > 3) {
  var G__11469__i = 0, G__11469__a = new Array(arguments.length -  3);
  while (G__11469__i < G__11469__a.length) {G__11469__a[G__11469__i] = arguments[G__11469__i + 3]; ++G__11469__i;}
  G__11468 = new cljs.core.IndexedSeq(G__11469__a,0);
  }
  return ep1__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11468);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  ep1.cljs$lang$maxFixedArity = 3;
  ep1.cljs$lang$applyTo = ep1__4.cljs$lang$applyTo;
  ep1.cljs$core$IFn$_invoke$arity$0 = ep1__0;
  ep1.cljs$core$IFn$_invoke$arity$1 = ep1__1;
  ep1.cljs$core$IFn$_invoke$arity$2 = ep1__2;
  ep1.cljs$core$IFn$_invoke$arity$3 = ep1__3;
  ep1.cljs$core$IFn$_invoke$arity$variadic = ep1__4.cljs$core$IFn$_invoke$arity$variadic;
  return ep1;
  })()
  });
  var every_pred__2 = (function (p1,p2){
  return (function() {
  var ep2 = null;
  var ep2__0 = (function (){
  return true;
  });
  var ep2__1 = (function (x){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11328 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11328) : p1.call(null,G__11328));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var G__11329 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11329) : p2.call(null,G__11329));
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep2__2 = (function (x,y){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11331 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11331) : p1.call(null,G__11331));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11333 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11333) : p1.call(null,G__11333));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var and__3796__auto____$2 = (function (){var G__11335 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11335) : p2.call(null,G__11335));
  })();
  if(cljs.core.truth_(and__3796__auto____$2)){
  var G__11336 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11336) : p2.call(null,G__11336));
  } else {
  return and__3796__auto____$2;
  }
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep2__3 = (function (x,y,z){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11338 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11338) : p1.call(null,G__11338));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11340 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11340) : p1.call(null,G__11340));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var and__3796__auto____$2 = (function (){var G__11342 = z;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11342) : p1.call(null,G__11342));
  })();
  if(cljs.core.truth_(and__3796__auto____$2)){
  var and__3796__auto____$3 = (function (){var G__11344 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11344) : p2.call(null,G__11344));
  })();
  if(cljs.core.truth_(and__3796__auto____$3)){
  var and__3796__auto____$4 = (function (){var G__11346 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11346) : p2.call(null,G__11346));
  })();
  if(cljs.core.truth_(and__3796__auto____$4)){
  var G__11347 = z;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11347) : p2.call(null,G__11347));
  } else {
  return and__3796__auto____$4;
  }
  } else {
  return and__3796__auto____$3;
  }
  } else {
  return and__3796__auto____$2;
  }
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep2__4 = (function() { 
  var G__11470__delegate = function (x,y,z,args){
  return cljs.core.boolean$((ep2.cljs$core$IFn$_invoke$arity$3(x,y,z)) && (cljs.core.every_QMARK_((function (p1__11075_SHARP_){
  var and__3796__auto__ = (function (){var G__11352 = p1__11075_SHARP_;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11352) : p1.call(null,G__11352));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var G__11353 = p1__11075_SHARP_;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11353) : p2.call(null,G__11353));
  } else {
  return and__3796__auto__;
  }
  }),args)));
  };
  var G__11470 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11471__i = 0, G__11471__a = new Array(arguments.length -  3);
  while (G__11471__i < G__11471__a.length) {G__11471__a[G__11471__i] = arguments[G__11471__i + 3]; ++G__11471__i;}
    args = new cljs.core.IndexedSeq(G__11471__a,0);
  } 
  return G__11470__delegate.call(this,x,y,z,args);};
  G__11470.cljs$lang$maxFixedArity = 3;
  G__11470.cljs$lang$applyTo = (function (arglist__11472){
  var x = cljs.core.first(arglist__11472);
  arglist__11472 = cljs.core.next(arglist__11472);
  var y = cljs.core.first(arglist__11472);
  arglist__11472 = cljs.core.next(arglist__11472);
  var z = cljs.core.first(arglist__11472);
  var args = cljs.core.rest(arglist__11472);
  return G__11470__delegate(x,y,z,args);
  });
  G__11470.cljs$core$IFn$_invoke$arity$variadic = G__11470__delegate;
  return G__11470;
  })()
  ;
  ep2 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return ep2__0.call(this);
  case 1:
  return ep2__1.call(this,x);
  case 2:
  return ep2__2.call(this,x,y);
  case 3:
  return ep2__3.call(this,x,y,z);
  default:
  var G__11473 = null;
  if (arguments.length > 3) {
  var G__11474__i = 0, G__11474__a = new Array(arguments.length -  3);
  while (G__11474__i < G__11474__a.length) {G__11474__a[G__11474__i] = arguments[G__11474__i + 3]; ++G__11474__i;}
  G__11473 = new cljs.core.IndexedSeq(G__11474__a,0);
  }
  return ep2__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11473);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  ep2.cljs$lang$maxFixedArity = 3;
  ep2.cljs$lang$applyTo = ep2__4.cljs$lang$applyTo;
  ep2.cljs$core$IFn$_invoke$arity$0 = ep2__0;
  ep2.cljs$core$IFn$_invoke$arity$1 = ep2__1;
  ep2.cljs$core$IFn$_invoke$arity$2 = ep2__2;
  ep2.cljs$core$IFn$_invoke$arity$3 = ep2__3;
  ep2.cljs$core$IFn$_invoke$arity$variadic = ep2__4.cljs$core$IFn$_invoke$arity$variadic;
  return ep2;
  })()
  });
  var every_pred__3 = (function (p1,p2,p3){
  return (function() {
  var ep3 = null;
  var ep3__0 = (function (){
  return true;
  });
  var ep3__1 = (function (x){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11399 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11399) : p1.call(null,G__11399));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11401 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11401) : p2.call(null,G__11401));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var G__11402 = x;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11402) : p3.call(null,G__11402));
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep3__2 = (function (x,y){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11404 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11404) : p1.call(null,G__11404));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11406 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11406) : p2.call(null,G__11406));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var and__3796__auto____$2 = (function (){var G__11408 = x;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11408) : p3.call(null,G__11408));
  })();
  if(cljs.core.truth_(and__3796__auto____$2)){
  var and__3796__auto____$3 = (function (){var G__11410 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11410) : p1.call(null,G__11410));
  })();
  if(cljs.core.truth_(and__3796__auto____$3)){
  var and__3796__auto____$4 = (function (){var G__11412 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11412) : p2.call(null,G__11412));
  })();
  if(cljs.core.truth_(and__3796__auto____$4)){
  var G__11413 = y;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11413) : p3.call(null,G__11413));
  } else {
  return and__3796__auto____$4;
  }
  } else {
  return and__3796__auto____$3;
  }
  } else {
  return and__3796__auto____$2;
  }
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep3__3 = (function (x,y,z){
  return cljs.core.boolean$((function (){var and__3796__auto__ = (function (){var G__11415 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11415) : p1.call(null,G__11415));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11417 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11417) : p2.call(null,G__11417));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var and__3796__auto____$2 = (function (){var G__11419 = x;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11419) : p3.call(null,G__11419));
  })();
  if(cljs.core.truth_(and__3796__auto____$2)){
  var and__3796__auto____$3 = (function (){var G__11421 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11421) : p1.call(null,G__11421));
  })();
  if(cljs.core.truth_(and__3796__auto____$3)){
  var and__3796__auto____$4 = (function (){var G__11423 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11423) : p2.call(null,G__11423));
  })();
  if(cljs.core.truth_(and__3796__auto____$4)){
  var and__3796__auto____$5 = (function (){var G__11425 = y;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11425) : p3.call(null,G__11425));
  })();
  if(cljs.core.truth_(and__3796__auto____$5)){
  var and__3796__auto____$6 = (function (){var G__11427 = z;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11427) : p1.call(null,G__11427));
  })();
  if(cljs.core.truth_(and__3796__auto____$6)){
  var and__3796__auto____$7 = (function (){var G__11429 = z;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11429) : p2.call(null,G__11429));
  })();
  if(cljs.core.truth_(and__3796__auto____$7)){
  var G__11430 = z;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11430) : p3.call(null,G__11430));
  } else {
  return and__3796__auto____$7;
  }
  } else {
  return and__3796__auto____$6;
  }
  } else {
  return and__3796__auto____$5;
  }
  } else {
  return and__3796__auto____$4;
  }
  } else {
  return and__3796__auto____$3;
  }
  } else {
  return and__3796__auto____$2;
  }
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })());
  });
  var ep3__4 = (function() { 
  var G__11475__delegate = function (x,y,z,args){
  return cljs.core.boolean$((ep3.cljs$core$IFn$_invoke$arity$3(x,y,z)) && (cljs.core.every_QMARK_((function (p1__11076_SHARP_){
  var and__3796__auto__ = (function (){var G__11437 = p1__11076_SHARP_;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11437) : p1.call(null,G__11437));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11439 = p1__11076_SHARP_;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11439) : p2.call(null,G__11439));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var G__11440 = p1__11076_SHARP_;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11440) : p3.call(null,G__11440));
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  }),args)));
  };
  var G__11475 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11476__i = 0, G__11476__a = new Array(arguments.length -  3);
  while (G__11476__i < G__11476__a.length) {G__11476__a[G__11476__i] = arguments[G__11476__i + 3]; ++G__11476__i;}
    args = new cljs.core.IndexedSeq(G__11476__a,0);
  } 
  return G__11475__delegate.call(this,x,y,z,args);};
  G__11475.cljs$lang$maxFixedArity = 3;
  G__11475.cljs$lang$applyTo = (function (arglist__11477){
  var x = cljs.core.first(arglist__11477);
  arglist__11477 = cljs.core.next(arglist__11477);
  var y = cljs.core.first(arglist__11477);
  arglist__11477 = cljs.core.next(arglist__11477);
  var z = cljs.core.first(arglist__11477);
  var args = cljs.core.rest(arglist__11477);
  return G__11475__delegate(x,y,z,args);
  });
  G__11475.cljs$core$IFn$_invoke$arity$variadic = G__11475__delegate;
  return G__11475;
  })()
  ;
  ep3 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return ep3__0.call(this);
  case 1:
  return ep3__1.call(this,x);
  case 2:
  return ep3__2.call(this,x,y);
  case 3:
  return ep3__3.call(this,x,y,z);
  default:
  var G__11478 = null;
  if (arguments.length > 3) {
  var G__11479__i = 0, G__11479__a = new Array(arguments.length -  3);
  while (G__11479__i < G__11479__a.length) {G__11479__a[G__11479__i] = arguments[G__11479__i + 3]; ++G__11479__i;}
  G__11478 = new cljs.core.IndexedSeq(G__11479__a,0);
  }
  return ep3__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11478);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  ep3.cljs$lang$maxFixedArity = 3;
  ep3.cljs$lang$applyTo = ep3__4.cljs$lang$applyTo;
  ep3.cljs$core$IFn$_invoke$arity$0 = ep3__0;
  ep3.cljs$core$IFn$_invoke$arity$1 = ep3__1;
  ep3.cljs$core$IFn$_invoke$arity$2 = ep3__2;
  ep3.cljs$core$IFn$_invoke$arity$3 = ep3__3;
  ep3.cljs$core$IFn$_invoke$arity$variadic = ep3__4.cljs$core$IFn$_invoke$arity$variadic;
  return ep3;
  })()
  });
  var every_pred__4 = (function() { 
  var G__11480__delegate = function (p1,p2,p3,ps){
  var ps__$1 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(p1,p2,p3,ps);
  return ((function (ps__$1){
  return (function() {
  var epn = null;
  var epn__0 = (function (){
  return true;
  });
  var epn__1 = (function (x){
  return cljs.core.every_QMARK_(((function (ps__$1){
  return (function (p1__11077_SHARP_){
  var G__11456 = x;
  return (p1__11077_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11077_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11456) : p1__11077_SHARP_.call(null,G__11456));
  });})(ps__$1))
  ,ps__$1);
  });
  var epn__2 = (function (x,y){
  return cljs.core.every_QMARK_(((function (ps__$1){
  return (function (p1__11078_SHARP_){
  var and__3796__auto__ = (function (){var G__11458 = x;
  return (p1__11078_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11078_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11458) : p1__11078_SHARP_.call(null,G__11458));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var G__11459 = y;
  return (p1__11078_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11078_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11459) : p1__11078_SHARP_.call(null,G__11459));
  } else {
  return and__3796__auto__;
  }
  });})(ps__$1))
  ,ps__$1);
  });
  var epn__3 = (function (x,y,z){
  return cljs.core.every_QMARK_(((function (ps__$1){
  return (function (p1__11079_SHARP_){
  var and__3796__auto__ = (function (){var G__11461 = x;
  return (p1__11079_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11079_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11461) : p1__11079_SHARP_.call(null,G__11461));
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__11463 = y;
  return (p1__11079_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11079_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11463) : p1__11079_SHARP_.call(null,G__11463));
  })();
  if(cljs.core.truth_(and__3796__auto____$1)){
  var G__11464 = z;
  return (p1__11079_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11079_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11464) : p1__11079_SHARP_.call(null,G__11464));
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  });})(ps__$1))
  ,ps__$1);
  });
  var epn__4 = (function() { 
  var G__11481__delegate = function (x,y,z,args){
  return cljs.core.boolean$((epn.cljs$core$IFn$_invoke$arity$3(x,y,z)) && (cljs.core.every_QMARK_(((function (ps__$1){
  return (function (p1__11080_SHARP_){
  return cljs.core.every_QMARK_(p1__11080_SHARP_,args);
  });})(ps__$1))
  ,ps__$1)));
  };
  var G__11481 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11482__i = 0, G__11482__a = new Array(arguments.length -  3);
  while (G__11482__i < G__11482__a.length) {G__11482__a[G__11482__i] = arguments[G__11482__i + 3]; ++G__11482__i;}
    args = new cljs.core.IndexedSeq(G__11482__a,0);
  } 
  return G__11481__delegate.call(this,x,y,z,args);};
  G__11481.cljs$lang$maxFixedArity = 3;
  G__11481.cljs$lang$applyTo = (function (arglist__11483){
  var x = cljs.core.first(arglist__11483);
  arglist__11483 = cljs.core.next(arglist__11483);
  var y = cljs.core.first(arglist__11483);
  arglist__11483 = cljs.core.next(arglist__11483);
  var z = cljs.core.first(arglist__11483);
  var args = cljs.core.rest(arglist__11483);
  return G__11481__delegate(x,y,z,args);
  });
  G__11481.cljs$core$IFn$_invoke$arity$variadic = G__11481__delegate;
  return G__11481;
  })()
  ;
  epn = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return epn__0.call(this);
  case 1:
  return epn__1.call(this,x);
  case 2:
  return epn__2.call(this,x,y);
  case 3:
  return epn__3.call(this,x,y,z);
  default:
  var G__11484 = null;
  if (arguments.length > 3) {
  var G__11485__i = 0, G__11485__a = new Array(arguments.length -  3);
  while (G__11485__i < G__11485__a.length) {G__11485__a[G__11485__i] = arguments[G__11485__i + 3]; ++G__11485__i;}
  G__11484 = new cljs.core.IndexedSeq(G__11485__a,0);
  }
  return epn__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11484);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  epn.cljs$lang$maxFixedArity = 3;
  epn.cljs$lang$applyTo = epn__4.cljs$lang$applyTo;
  epn.cljs$core$IFn$_invoke$arity$0 = epn__0;
  epn.cljs$core$IFn$_invoke$arity$1 = epn__1;
  epn.cljs$core$IFn$_invoke$arity$2 = epn__2;
  epn.cljs$core$IFn$_invoke$arity$3 = epn__3;
  epn.cljs$core$IFn$_invoke$arity$variadic = epn__4.cljs$core$IFn$_invoke$arity$variadic;
  return epn;
  })()
  ;})(ps__$1))
  };
  var G__11480 = function (p1,p2,p3,var_args){
  var ps = null;
  if (arguments.length > 3) {
  var G__11486__i = 0, G__11486__a = new Array(arguments.length -  3);
  while (G__11486__i < G__11486__a.length) {G__11486__a[G__11486__i] = arguments[G__11486__i + 3]; ++G__11486__i;}
    ps = new cljs.core.IndexedSeq(G__11486__a,0);
  } 
  return G__11480__delegate.call(this,p1,p2,p3,ps);};
  G__11480.cljs$lang$maxFixedArity = 3;
  G__11480.cljs$lang$applyTo = (function (arglist__11487){
  var p1 = cljs.core.first(arglist__11487);
  arglist__11487 = cljs.core.next(arglist__11487);
  var p2 = cljs.core.first(arglist__11487);
  arglist__11487 = cljs.core.next(arglist__11487);
  var p3 = cljs.core.first(arglist__11487);
  var ps = cljs.core.rest(arglist__11487);
  return G__11480__delegate(p1,p2,p3,ps);
  });
  G__11480.cljs$core$IFn$_invoke$arity$variadic = G__11480__delegate;
  return G__11480;
  })()
  ;
  every_pred = function(p1,p2,p3,var_args){
  var ps = var_args;
  switch(arguments.length){
  case 1:
  return every_pred__1.call(this,p1);
  case 2:
  return every_pred__2.call(this,p1,p2);
  case 3:
  return every_pred__3.call(this,p1,p2,p3);
  default:
  var G__11488 = null;
  if (arguments.length > 3) {
  var G__11489__i = 0, G__11489__a = new Array(arguments.length -  3);
  while (G__11489__i < G__11489__a.length) {G__11489__a[G__11489__i] = arguments[G__11489__i + 3]; ++G__11489__i;}
  G__11488 = new cljs.core.IndexedSeq(G__11489__a,0);
  }
  return every_pred__4.cljs$core$IFn$_invoke$arity$variadic(p1,p2,p3, G__11488);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  every_pred.cljs$lang$maxFixedArity = 3;
  every_pred.cljs$lang$applyTo = every_pred__4.cljs$lang$applyTo;
  every_pred.cljs$core$IFn$_invoke$arity$1 = every_pred__1;
  every_pred.cljs$core$IFn$_invoke$arity$2 = every_pred__2;
  every_pred.cljs$core$IFn$_invoke$arity$3 = every_pred__3;
  every_pred.cljs$core$IFn$_invoke$arity$variadic = every_pred__4.cljs$core$IFn$_invoke$arity$variadic;
  return every_pred;
  })()
  ;
  /**
  * Takes a set of predicates and returns a function f that returns the first logical true value
  * returned by one of its composing predicates against any of its arguments, else it returns
  * logical false. Note that f is short-circuiting in that it will stop execution on the first
  * argument that triggers a logical true result against the original predicates.
  * @param {...*} var_args
  */
  cljs.core.some_fn = (function() {
  var some_fn = null;
  var some_fn__1 = (function (p){
  return (function() {
  var sp1 = null;
  var sp1__0 = (function (){
  return null;
  });
  var sp1__1 = (function (x){
  var G__11695 = x;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11695) : p.call(null,G__11695));
  });
  var sp1__2 = (function (x,y){
  var or__3808__auto__ = (function (){var G__11697 = x;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11697) : p.call(null,G__11697));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var G__11698 = y;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11698) : p.call(null,G__11698));
  }
  });
  var sp1__3 = (function (x,y,z){
  var or__3808__auto__ = (function (){var G__11700 = x;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11700) : p.call(null,G__11700));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11702 = y;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11702) : p.call(null,G__11702));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var G__11703 = z;
  return (p.cljs$core$IFn$_invoke$arity$1 ? p.cljs$core$IFn$_invoke$arity$1(G__11703) : p.call(null,G__11703));
  }
  }
  });
  var sp1__4 = (function() { 
  var G__11864__delegate = function (x,y,z,args){
  var or__3808__auto__ = sp1.cljs$core$IFn$_invoke$arity$3(x,y,z);
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.some(p,args);
  }
  };
  var G__11864 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11865__i = 0, G__11865__a = new Array(arguments.length -  3);
  while (G__11865__i < G__11865__a.length) {G__11865__a[G__11865__i] = arguments[G__11865__i + 3]; ++G__11865__i;}
    args = new cljs.core.IndexedSeq(G__11865__a,0);
  } 
  return G__11864__delegate.call(this,x,y,z,args);};
  G__11864.cljs$lang$maxFixedArity = 3;
  G__11864.cljs$lang$applyTo = (function (arglist__11866){
  var x = cljs.core.first(arglist__11866);
  arglist__11866 = cljs.core.next(arglist__11866);
  var y = cljs.core.first(arglist__11866);
  arglist__11866 = cljs.core.next(arglist__11866);
  var z = cljs.core.first(arglist__11866);
  var args = cljs.core.rest(arglist__11866);
  return G__11864__delegate(x,y,z,args);
  });
  G__11864.cljs$core$IFn$_invoke$arity$variadic = G__11864__delegate;
  return G__11864;
  })()
  ;
  sp1 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return sp1__0.call(this);
  case 1:
  return sp1__1.call(this,x);
  case 2:
  return sp1__2.call(this,x,y);
  case 3:
  return sp1__3.call(this,x,y,z);
  default:
  var G__11867 = null;
  if (arguments.length > 3) {
  var G__11868__i = 0, G__11868__a = new Array(arguments.length -  3);
  while (G__11868__i < G__11868__a.length) {G__11868__a[G__11868__i] = arguments[G__11868__i + 3]; ++G__11868__i;}
  G__11867 = new cljs.core.IndexedSeq(G__11868__a,0);
  }
  return sp1__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11867);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  sp1.cljs$lang$maxFixedArity = 3;
  sp1.cljs$lang$applyTo = sp1__4.cljs$lang$applyTo;
  sp1.cljs$core$IFn$_invoke$arity$0 = sp1__0;
  sp1.cljs$core$IFn$_invoke$arity$1 = sp1__1;
  sp1.cljs$core$IFn$_invoke$arity$2 = sp1__2;
  sp1.cljs$core$IFn$_invoke$arity$3 = sp1__3;
  sp1.cljs$core$IFn$_invoke$arity$variadic = sp1__4.cljs$core$IFn$_invoke$arity$variadic;
  return sp1;
  })()
  });
  var some_fn__2 = (function (p1,p2){
  return (function() {
  var sp2 = null;
  var sp2__0 = (function (){
  return null;
  });
  var sp2__1 = (function (x){
  var or__3808__auto__ = (function (){var G__11735 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11735) : p1.call(null,G__11735));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var G__11736 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11736) : p2.call(null,G__11736));
  }
  });
  var sp2__2 = (function (x,y){
  var or__3808__auto__ = (function (){var G__11738 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11738) : p1.call(null,G__11738));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11740 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11740) : p1.call(null,G__11740));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var or__3808__auto____$2 = (function (){var G__11742 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11742) : p2.call(null,G__11742));
  })();
  if(cljs.core.truth_(or__3808__auto____$2)){
  return or__3808__auto____$2;
  } else {
  var G__11743 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11743) : p2.call(null,G__11743));
  }
  }
  }
  });
  var sp2__3 = (function (x,y,z){
  var or__3808__auto__ = (function (){var G__11745 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11745) : p1.call(null,G__11745));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11747 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11747) : p1.call(null,G__11747));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var or__3808__auto____$2 = (function (){var G__11749 = z;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11749) : p1.call(null,G__11749));
  })();
  if(cljs.core.truth_(or__3808__auto____$2)){
  return or__3808__auto____$2;
  } else {
  var or__3808__auto____$3 = (function (){var G__11751 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11751) : p2.call(null,G__11751));
  })();
  if(cljs.core.truth_(or__3808__auto____$3)){
  return or__3808__auto____$3;
  } else {
  var or__3808__auto____$4 = (function (){var G__11753 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11753) : p2.call(null,G__11753));
  })();
  if(cljs.core.truth_(or__3808__auto____$4)){
  return or__3808__auto____$4;
  } else {
  var G__11754 = z;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11754) : p2.call(null,G__11754));
  }
  }
  }
  }
  }
  });
  var sp2__4 = (function() { 
  var G__11869__delegate = function (x,y,z,args){
  var or__3808__auto__ = sp2.cljs$core$IFn$_invoke$arity$3(x,y,z);
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.some(((function (or__3808__auto__){
  return (function (p1__11490_SHARP_){
  var or__3808__auto____$1 = (function (){var G__11756 = p1__11490_SHARP_;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11756) : p1.call(null,G__11756));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var G__11757 = p1__11490_SHARP_;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11757) : p2.call(null,G__11757));
  }
  });})(or__3808__auto__))
  ,args);
  }
  };
  var G__11869 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11870__i = 0, G__11870__a = new Array(arguments.length -  3);
  while (G__11870__i < G__11870__a.length) {G__11870__a[G__11870__i] = arguments[G__11870__i + 3]; ++G__11870__i;}
    args = new cljs.core.IndexedSeq(G__11870__a,0);
  } 
  return G__11869__delegate.call(this,x,y,z,args);};
  G__11869.cljs$lang$maxFixedArity = 3;
  G__11869.cljs$lang$applyTo = (function (arglist__11871){
  var x = cljs.core.first(arglist__11871);
  arglist__11871 = cljs.core.next(arglist__11871);
  var y = cljs.core.first(arglist__11871);
  arglist__11871 = cljs.core.next(arglist__11871);
  var z = cljs.core.first(arglist__11871);
  var args = cljs.core.rest(arglist__11871);
  return G__11869__delegate(x,y,z,args);
  });
  G__11869.cljs$core$IFn$_invoke$arity$variadic = G__11869__delegate;
  return G__11869;
  })()
  ;
  sp2 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return sp2__0.call(this);
  case 1:
  return sp2__1.call(this,x);
  case 2:
  return sp2__2.call(this,x,y);
  case 3:
  return sp2__3.call(this,x,y,z);
  default:
  var G__11872 = null;
  if (arguments.length > 3) {
  var G__11873__i = 0, G__11873__a = new Array(arguments.length -  3);
  while (G__11873__i < G__11873__a.length) {G__11873__a[G__11873__i] = arguments[G__11873__i + 3]; ++G__11873__i;}
  G__11872 = new cljs.core.IndexedSeq(G__11873__a,0);
  }
  return sp2__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11872);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  sp2.cljs$lang$maxFixedArity = 3;
  sp2.cljs$lang$applyTo = sp2__4.cljs$lang$applyTo;
  sp2.cljs$core$IFn$_invoke$arity$0 = sp2__0;
  sp2.cljs$core$IFn$_invoke$arity$1 = sp2__1;
  sp2.cljs$core$IFn$_invoke$arity$2 = sp2__2;
  sp2.cljs$core$IFn$_invoke$arity$3 = sp2__3;
  sp2.cljs$core$IFn$_invoke$arity$variadic = sp2__4.cljs$core$IFn$_invoke$arity$variadic;
  return sp2;
  })()
  });
  var some_fn__3 = (function (p1,p2,p3){
  return (function() {
  var sp3 = null;
  var sp3__0 = (function (){
  return null;
  });
  var sp3__1 = (function (x){
  var or__3808__auto__ = (function (){var G__11803 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11803) : p1.call(null,G__11803));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11805 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11805) : p2.call(null,G__11805));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var G__11806 = x;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11806) : p3.call(null,G__11806));
  }
  }
  });
  var sp3__2 = (function (x,y){
  var or__3808__auto__ = (function (){var G__11808 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11808) : p1.call(null,G__11808));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11810 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11810) : p2.call(null,G__11810));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var or__3808__auto____$2 = (function (){var G__11812 = x;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11812) : p3.call(null,G__11812));
  })();
  if(cljs.core.truth_(or__3808__auto____$2)){
  return or__3808__auto____$2;
  } else {
  var or__3808__auto____$3 = (function (){var G__11814 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11814) : p1.call(null,G__11814));
  })();
  if(cljs.core.truth_(or__3808__auto____$3)){
  return or__3808__auto____$3;
  } else {
  var or__3808__auto____$4 = (function (){var G__11816 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11816) : p2.call(null,G__11816));
  })();
  if(cljs.core.truth_(or__3808__auto____$4)){
  return or__3808__auto____$4;
  } else {
  var G__11817 = y;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11817) : p3.call(null,G__11817));
  }
  }
  }
  }
  }
  });
  var sp3__3 = (function (x,y,z){
  var or__3808__auto__ = (function (){var G__11819 = x;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11819) : p1.call(null,G__11819));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11821 = x;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11821) : p2.call(null,G__11821));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var or__3808__auto____$2 = (function (){var G__11823 = x;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11823) : p3.call(null,G__11823));
  })();
  if(cljs.core.truth_(or__3808__auto____$2)){
  return or__3808__auto____$2;
  } else {
  var or__3808__auto____$3 = (function (){var G__11825 = y;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11825) : p1.call(null,G__11825));
  })();
  if(cljs.core.truth_(or__3808__auto____$3)){
  return or__3808__auto____$3;
  } else {
  var or__3808__auto____$4 = (function (){var G__11827 = y;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11827) : p2.call(null,G__11827));
  })();
  if(cljs.core.truth_(or__3808__auto____$4)){
  return or__3808__auto____$4;
  } else {
  var or__3808__auto____$5 = (function (){var G__11829 = y;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11829) : p3.call(null,G__11829));
  })();
  if(cljs.core.truth_(or__3808__auto____$5)){
  return or__3808__auto____$5;
  } else {
  var or__3808__auto____$6 = (function (){var G__11831 = z;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11831) : p1.call(null,G__11831));
  })();
  if(cljs.core.truth_(or__3808__auto____$6)){
  return or__3808__auto____$6;
  } else {
  var or__3808__auto____$7 = (function (){var G__11833 = z;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11833) : p2.call(null,G__11833));
  })();
  if(cljs.core.truth_(or__3808__auto____$7)){
  return or__3808__auto____$7;
  } else {
  var G__11834 = z;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11834) : p3.call(null,G__11834));
  }
  }
  }
  }
  }
  }
  }
  }
  });
  var sp3__4 = (function() { 
  var G__11874__delegate = function (x,y,z,args){
  var or__3808__auto__ = sp3.cljs$core$IFn$_invoke$arity$3(x,y,z);
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.some(((function (or__3808__auto__){
  return (function (p1__11491_SHARP_){
  var or__3808__auto____$1 = (function (){var G__11836 = p1__11491_SHARP_;
  return (p1.cljs$core$IFn$_invoke$arity$1 ? p1.cljs$core$IFn$_invoke$arity$1(G__11836) : p1.call(null,G__11836));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var or__3808__auto____$2 = (function (){var G__11838 = p1__11491_SHARP_;
  return (p2.cljs$core$IFn$_invoke$arity$1 ? p2.cljs$core$IFn$_invoke$arity$1(G__11838) : p2.call(null,G__11838));
  })();
  if(cljs.core.truth_(or__3808__auto____$2)){
  return or__3808__auto____$2;
  } else {
  var G__11839 = p1__11491_SHARP_;
  return (p3.cljs$core$IFn$_invoke$arity$1 ? p3.cljs$core$IFn$_invoke$arity$1(G__11839) : p3.call(null,G__11839));
  }
  }
  });})(or__3808__auto__))
  ,args);
  }
  };
  var G__11874 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11875__i = 0, G__11875__a = new Array(arguments.length -  3);
  while (G__11875__i < G__11875__a.length) {G__11875__a[G__11875__i] = arguments[G__11875__i + 3]; ++G__11875__i;}
    args = new cljs.core.IndexedSeq(G__11875__a,0);
  } 
  return G__11874__delegate.call(this,x,y,z,args);};
  G__11874.cljs$lang$maxFixedArity = 3;
  G__11874.cljs$lang$applyTo = (function (arglist__11876){
  var x = cljs.core.first(arglist__11876);
  arglist__11876 = cljs.core.next(arglist__11876);
  var y = cljs.core.first(arglist__11876);
  arglist__11876 = cljs.core.next(arglist__11876);
  var z = cljs.core.first(arglist__11876);
  var args = cljs.core.rest(arglist__11876);
  return G__11874__delegate(x,y,z,args);
  });
  G__11874.cljs$core$IFn$_invoke$arity$variadic = G__11874__delegate;
  return G__11874;
  })()
  ;
  sp3 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return sp3__0.call(this);
  case 1:
  return sp3__1.call(this,x);
  case 2:
  return sp3__2.call(this,x,y);
  case 3:
  return sp3__3.call(this,x,y,z);
  default:
  var G__11877 = null;
  if (arguments.length > 3) {
  var G__11878__i = 0, G__11878__a = new Array(arguments.length -  3);
  while (G__11878__i < G__11878__a.length) {G__11878__a[G__11878__i] = arguments[G__11878__i + 3]; ++G__11878__i;}
  G__11877 = new cljs.core.IndexedSeq(G__11878__a,0);
  }
  return sp3__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11877);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  sp3.cljs$lang$maxFixedArity = 3;
  sp3.cljs$lang$applyTo = sp3__4.cljs$lang$applyTo;
  sp3.cljs$core$IFn$_invoke$arity$0 = sp3__0;
  sp3.cljs$core$IFn$_invoke$arity$1 = sp3__1;
  sp3.cljs$core$IFn$_invoke$arity$2 = sp3__2;
  sp3.cljs$core$IFn$_invoke$arity$3 = sp3__3;
  sp3.cljs$core$IFn$_invoke$arity$variadic = sp3__4.cljs$core$IFn$_invoke$arity$variadic;
  return sp3;
  })()
  });
  var some_fn__4 = (function() { 
  var G__11879__delegate = function (p1,p2,p3,ps){
  var ps__$1 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(p1,p2,p3,ps);
  return ((function (ps__$1){
  return (function() {
  var spn = null;
  var spn__0 = (function (){
  return null;
  });
  var spn__1 = (function (x){
  return cljs.core.some(((function (ps__$1){
  return (function (p1__11492_SHARP_){
  var G__11855 = x;
  return (p1__11492_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11492_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11855) : p1__11492_SHARP_.call(null,G__11855));
  });})(ps__$1))
  ,ps__$1);
  });
  var spn__2 = (function (x,y){
  return cljs.core.some(((function (ps__$1){
  return (function (p1__11493_SHARP_){
  var or__3808__auto__ = (function (){var G__11857 = x;
  return (p1__11493_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11493_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11857) : p1__11493_SHARP_.call(null,G__11857));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var G__11858 = y;
  return (p1__11493_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11493_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11858) : p1__11493_SHARP_.call(null,G__11858));
  }
  });})(ps__$1))
  ,ps__$1);
  });
  var spn__3 = (function (x,y,z){
  return cljs.core.some(((function (ps__$1){
  return (function (p1__11494_SHARP_){
  var or__3808__auto__ = (function (){var G__11860 = x;
  return (p1__11494_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11494_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11860) : p1__11494_SHARP_.call(null,G__11860));
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var G__11862 = y;
  return (p1__11494_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11494_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11862) : p1__11494_SHARP_.call(null,G__11862));
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var G__11863 = z;
  return (p1__11494_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p1__11494_SHARP_.cljs$core$IFn$_invoke$arity$1(G__11863) : p1__11494_SHARP_.call(null,G__11863));
  }
  }
  });})(ps__$1))
  ,ps__$1);
  });
  var spn__4 = (function() { 
  var G__11880__delegate = function (x,y,z,args){
  var or__3808__auto__ = spn.cljs$core$IFn$_invoke$arity$3(x,y,z);
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.some(((function (or__3808__auto__,ps__$1){
  return (function (p1__11495_SHARP_){
  return cljs.core.some(p1__11495_SHARP_,args);
  });})(or__3808__auto__,ps__$1))
  ,ps__$1);
  }
  };
  var G__11880 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__11881__i = 0, G__11881__a = new Array(arguments.length -  3);
  while (G__11881__i < G__11881__a.length) {G__11881__a[G__11881__i] = arguments[G__11881__i + 3]; ++G__11881__i;}
    args = new cljs.core.IndexedSeq(G__11881__a,0);
  } 
  return G__11880__delegate.call(this,x,y,z,args);};
  G__11880.cljs$lang$maxFixedArity = 3;
  G__11880.cljs$lang$applyTo = (function (arglist__11882){
  var x = cljs.core.first(arglist__11882);
  arglist__11882 = cljs.core.next(arglist__11882);
  var y = cljs.core.first(arglist__11882);
  arglist__11882 = cljs.core.next(arglist__11882);
  var z = cljs.core.first(arglist__11882);
  var args = cljs.core.rest(arglist__11882);
  return G__11880__delegate(x,y,z,args);
  });
  G__11880.cljs$core$IFn$_invoke$arity$variadic = G__11880__delegate;
  return G__11880;
  })()
  ;
  spn = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return spn__0.call(this);
  case 1:
  return spn__1.call(this,x);
  case 2:
  return spn__2.call(this,x,y);
  case 3:
  return spn__3.call(this,x,y,z);
  default:
  var G__11883 = null;
  if (arguments.length > 3) {
  var G__11884__i = 0, G__11884__a = new Array(arguments.length -  3);
  while (G__11884__i < G__11884__a.length) {G__11884__a[G__11884__i] = arguments[G__11884__i + 3]; ++G__11884__i;}
  G__11883 = new cljs.core.IndexedSeq(G__11884__a,0);
  }
  return spn__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__11883);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  spn.cljs$lang$maxFixedArity = 3;
  spn.cljs$lang$applyTo = spn__4.cljs$lang$applyTo;
  spn.cljs$core$IFn$_invoke$arity$0 = spn__0;
  spn.cljs$core$IFn$_invoke$arity$1 = spn__1;
  spn.cljs$core$IFn$_invoke$arity$2 = spn__2;
  spn.cljs$core$IFn$_invoke$arity$3 = spn__3;
  spn.cljs$core$IFn$_invoke$arity$variadic = spn__4.cljs$core$IFn$_invoke$arity$variadic;
  return spn;
  })()
  ;})(ps__$1))
  };
  var G__11879 = function (p1,p2,p3,var_args){
  var ps = null;
  if (arguments.length > 3) {
  var G__11885__i = 0, G__11885__a = new Array(arguments.length -  3);
  while (G__11885__i < G__11885__a.length) {G__11885__a[G__11885__i] = arguments[G__11885__i + 3]; ++G__11885__i;}
    ps = new cljs.core.IndexedSeq(G__11885__a,0);
  } 
  return G__11879__delegate.call(this,p1,p2,p3,ps);};
  G__11879.cljs$lang$maxFixedArity = 3;
  G__11879.cljs$lang$applyTo = (function (arglist__11886){
  var p1 = cljs.core.first(arglist__11886);
  arglist__11886 = cljs.core.next(arglist__11886);
  var p2 = cljs.core.first(arglist__11886);
  arglist__11886 = cljs.core.next(arglist__11886);
  var p3 = cljs.core.first(arglist__11886);
  var ps = cljs.core.rest(arglist__11886);
  return G__11879__delegate(p1,p2,p3,ps);
  });
  G__11879.cljs$core$IFn$_invoke$arity$variadic = G__11879__delegate;
  return G__11879;
  })()
  ;
  some_fn = function(p1,p2,p3,var_args){
  var ps = var_args;
  switch(arguments.length){
  case 1:
  return some_fn__1.call(this,p1);
  case 2:
  return some_fn__2.call(this,p1,p2);
  case 3:
  return some_fn__3.call(this,p1,p2,p3);
  default:
  var G__11887 = null;
  if (arguments.length > 3) {
  var G__11888__i = 0, G__11888__a = new Array(arguments.length -  3);
  while (G__11888__i < G__11888__a.length) {G__11888__a[G__11888__i] = arguments[G__11888__i + 3]; ++G__11888__i;}
  G__11887 = new cljs.core.IndexedSeq(G__11888__a,0);
  }
  return some_fn__4.cljs$core$IFn$_invoke$arity$variadic(p1,p2,p3, G__11887);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  some_fn.cljs$lang$maxFixedArity = 3;
  some_fn.cljs$lang$applyTo = some_fn__4.cljs$lang$applyTo;
  some_fn.cljs$core$IFn$_invoke$arity$1 = some_fn__1;
  some_fn.cljs$core$IFn$_invoke$arity$2 = some_fn__2;
  some_fn.cljs$core$IFn$_invoke$arity$3 = some_fn__3;
  some_fn.cljs$core$IFn$_invoke$arity$variadic = some_fn__4.cljs$core$IFn$_invoke$arity$variadic;
  return some_fn;
  })()
  ;
  /**
  * Returns a lazy sequence consisting of the result of applying f to
  * the set of first items of each coll, followed by applying f to the
  * set of second items in each coll, until any one of the colls is
  * exhausted.  Any remaining items in other colls are ignored. Function
  * f should accept number-of-colls arguments. Returns a transducer when
  * no collection is provided.
  * @param {...*} var_args
  */
  cljs.core.map = (function() {
  var map = null;
  var map__1 = (function (f){
  return (function (rf){
  return (function() {
  var G__11943 = null;
  var G__11943__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__11943__1 = (function (result){
  var G__11929 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__11929) : rf.call(null,G__11929));
  });
  var G__11943__2 = (function (result,input){
  var G__11930 = result;
  var G__11931 = (function (){var G__11932 = input;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11932) : f.call(null,G__11932));
  })();
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11930,G__11931) : rf.call(null,G__11930,G__11931));
  });
  var G__11943__3 = (function() { 
  var G__11944__delegate = function (result,input,inputs){
  var G__11933 = result;
  var G__11934 = cljs.core.apply.cljs$core$IFn$_invoke$arity$3(f,input,inputs);
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11933,G__11934) : rf.call(null,G__11933,G__11934));
  };
  var G__11944 = function (result,input,var_args){
  var inputs = null;
  if (arguments.length > 2) {
  var G__11945__i = 0, G__11945__a = new Array(arguments.length -  2);
  while (G__11945__i < G__11945__a.length) {G__11945__a[G__11945__i] = arguments[G__11945__i + 2]; ++G__11945__i;}
    inputs = new cljs.core.IndexedSeq(G__11945__a,0);
  } 
  return G__11944__delegate.call(this,result,input,inputs);};
  G__11944.cljs$lang$maxFixedArity = 2;
  G__11944.cljs$lang$applyTo = (function (arglist__11946){
  var result = cljs.core.first(arglist__11946);
  arglist__11946 = cljs.core.next(arglist__11946);
  var input = cljs.core.first(arglist__11946);
  var inputs = cljs.core.rest(arglist__11946);
  return G__11944__delegate(result,input,inputs);
  });
  G__11944.cljs$core$IFn$_invoke$arity$variadic = G__11944__delegate;
  return G__11944;
  })()
  ;
  G__11943 = function(result,input,var_args){
  var inputs = var_args;
  switch(arguments.length){
  case 0:
  return G__11943__0.call(this);
  case 1:
  return G__11943__1.call(this,result);
  case 2:
  return G__11943__2.call(this,result,input);
  default:
  var G__11947 = null;
  if (arguments.length > 2) {
  var G__11948__i = 0, G__11948__a = new Array(arguments.length -  2);
  while (G__11948__i < G__11948__a.length) {G__11948__a[G__11948__i] = arguments[G__11948__i + 2]; ++G__11948__i;}
  G__11947 = new cljs.core.IndexedSeq(G__11948__a,0);
  }
  return G__11943__3.cljs$core$IFn$_invoke$arity$variadic(result,input, G__11947);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__11943.cljs$lang$maxFixedArity = 2;
  G__11943.cljs$lang$applyTo = G__11943__3.cljs$lang$applyTo;
  G__11943.cljs$core$IFn$_invoke$arity$0 = G__11943__0;
  G__11943.cljs$core$IFn$_invoke$arity$1 = G__11943__1;
  G__11943.cljs$core$IFn$_invoke$arity$2 = G__11943__2;
  G__11943.cljs$core$IFn$_invoke$arity$variadic = G__11943__3.cljs$core$IFn$_invoke$arity$variadic;
  return G__11943;
  })()
  });
  });
  var map__2 = (function (f,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(s)){
  var c = cljs.core.chunk_first(s);
  var size = cljs.core.count(c);
  var b = cljs.core.chunk_buffer(size);
  var n__4695__auto___11949 = size;
  var i_11950 = (0);
  while(true){
  if((i_11950 < n__4695__auto___11949)){
  cljs.core.chunk_append(b,(function (){var G__11935 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_11950);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11935) : f.call(null,G__11935));
  })());
  
  var G__11951 = (i_11950 + (1));
  i_11950 = G__11951;
  continue;
  } else {
  }
  break;
  }
  
  return cljs.core.chunk_cons(cljs.core.chunk(b),map.cljs$core$IFn$_invoke$arity$2(f,cljs.core.chunk_rest(s)));
  } else {
  return cljs.core.cons((function (){var G__11936 = cljs.core.first(s);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__11936) : f.call(null,G__11936));
  })(),map.cljs$core$IFn$_invoke$arity$2(f,cljs.core.rest(s)));
  }
  } else {
  return null;
  }
  }),null,null));
  });
  var map__3 = (function (f,c1,c2){
  return (new cljs.core.LazySeq(null,(function (){
  var s1 = cljs.core.seq(c1);
  var s2 = cljs.core.seq(c2);
  if((s1) && (s2)){
  return cljs.core.cons((function (){var G__11937 = cljs.core.first(s1);
  var G__11938 = cljs.core.first(s2);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__11937,G__11938) : f.call(null,G__11937,G__11938));
  })(),map.cljs$core$IFn$_invoke$arity$3(f,cljs.core.rest(s1),cljs.core.rest(s2)));
  } else {
  return null;
  }
  }),null,null));
  });
  var map__4 = (function (f,c1,c2,c3){
  return (new cljs.core.LazySeq(null,(function (){
  var s1 = cljs.core.seq(c1);
  var s2 = cljs.core.seq(c2);
  var s3 = cljs.core.seq(c3);
  if((s1) && (s2) && (s3)){
  return cljs.core.cons((function (){var G__11939 = cljs.core.first(s1);
  var G__11940 = cljs.core.first(s2);
  var G__11941 = cljs.core.first(s3);
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__11939,G__11940,G__11941) : f.call(null,G__11939,G__11940,G__11941));
  })(),map.cljs$core$IFn$_invoke$arity$4(f,cljs.core.rest(s1),cljs.core.rest(s2),cljs.core.rest(s3)));
  } else {
  return null;
  }
  }),null,null));
  });
  var map__5 = (function() { 
  var G__11952__delegate = function (f,c1,c2,c3,colls){
  var step = (function step(cs){
  return (new cljs.core.LazySeq(null,(function (){
  var ss = map.cljs$core$IFn$_invoke$arity$2(cljs.core.seq,cs);
  if(cljs.core.every_QMARK_(cljs.core.identity,ss)){
  return cljs.core.cons(map.cljs$core$IFn$_invoke$arity$2(cljs.core.first,ss),step(map.cljs$core$IFn$_invoke$arity$2(cljs.core.rest,ss)));
  } else {
  return null;
  }
  }),null,null));
  });
  return map.cljs$core$IFn$_invoke$arity$2(((function (step){
  return (function (p1__11889_SHARP_){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,p1__11889_SHARP_);
  });})(step))
  ,step(cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(colls,c3,cljs.core.array_seq([c2,c1], 0))));
  };
  var G__11952 = function (f,c1,c2,c3,var_args){
  var colls = null;
  if (arguments.length > 4) {
  var G__11953__i = 0, G__11953__a = new Array(arguments.length -  4);
  while (G__11953__i < G__11953__a.length) {G__11953__a[G__11953__i] = arguments[G__11953__i + 4]; ++G__11953__i;}
    colls = new cljs.core.IndexedSeq(G__11953__a,0);
  } 
  return G__11952__delegate.call(this,f,c1,c2,c3,colls);};
  G__11952.cljs$lang$maxFixedArity = 4;
  G__11952.cljs$lang$applyTo = (function (arglist__11954){
  var f = cljs.core.first(arglist__11954);
  arglist__11954 = cljs.core.next(arglist__11954);
  var c1 = cljs.core.first(arglist__11954);
  arglist__11954 = cljs.core.next(arglist__11954);
  var c2 = cljs.core.first(arglist__11954);
  arglist__11954 = cljs.core.next(arglist__11954);
  var c3 = cljs.core.first(arglist__11954);
  var colls = cljs.core.rest(arglist__11954);
  return G__11952__delegate(f,c1,c2,c3,colls);
  });
  G__11952.cljs$core$IFn$_invoke$arity$variadic = G__11952__delegate;
  return G__11952;
  })()
  ;
  map = function(f,c1,c2,c3,var_args){
  var colls = var_args;
  switch(arguments.length){
  case 1:
  return map__1.call(this,f);
  case 2:
  return map__2.call(this,f,c1);
  case 3:
  return map__3.call(this,f,c1,c2);
  case 4:
  return map__4.call(this,f,c1,c2,c3);
  default:
  var G__11955 = null;
  if (arguments.length > 4) {
  var G__11956__i = 0, G__11956__a = new Array(arguments.length -  4);
  while (G__11956__i < G__11956__a.length) {G__11956__a[G__11956__i] = arguments[G__11956__i + 4]; ++G__11956__i;}
  G__11955 = new cljs.core.IndexedSeq(G__11956__a,0);
  }
  return map__5.cljs$core$IFn$_invoke$arity$variadic(f,c1,c2,c3, G__11955);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  map.cljs$lang$maxFixedArity = 4;
  map.cljs$lang$applyTo = map__5.cljs$lang$applyTo;
  map.cljs$core$IFn$_invoke$arity$1 = map__1;
  map.cljs$core$IFn$_invoke$arity$2 = map__2;
  map.cljs$core$IFn$_invoke$arity$3 = map__3;
  map.cljs$core$IFn$_invoke$arity$4 = map__4;
  map.cljs$core$IFn$_invoke$arity$variadic = map__5.cljs$core$IFn$_invoke$arity$variadic;
  return map;
  })()
  ;
  /**
  * Returns a lazy sequence of the first n items in coll, or all items if
  * there are fewer than n.  Returns a stateful transducer when
  * no collection is provided.
  */
  cljs.core.take = (function() {
  var take = null;
  var take__1 = (function (n){
  return (function (rf){
  var na = cljs.core.volatile_BANG_(n);
  return ((function (na){
  return (function() {
  var G__11965 = null;
  var G__11965__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__11965__1 = (function (result){
  var G__11962 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__11962) : rf.call(null,G__11962));
  });
  var G__11965__2 = (function (result,input){
  var n__$1 = cljs.core.deref(na);
  var nn = na.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(na.cljs$core$IDeref$_deref$arity$1(null) - (1)));
  var result__$1 = (((n__$1 > (0)))?(function (){var G__11963 = result;
  var G__11964 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11963,G__11964) : rf.call(null,G__11963,G__11964));
  })():result);
  if(!((nn > (0)))){
  return cljs.core.ensure_reduced(result__$1);
  } else {
  return result__$1;
  }
  });
  G__11965 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__11965__0.call(this);
  case 1:
  return G__11965__1.call(this,result);
  case 2:
  return G__11965__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__11965.cljs$core$IFn$_invoke$arity$0 = G__11965__0;
  G__11965.cljs$core$IFn$_invoke$arity$1 = G__11965__1;
  G__11965.cljs$core$IFn$_invoke$arity$2 = G__11965__2;
  return G__11965;
  })()
  ;})(na))
  });
  });
  var take__2 = (function (n,coll){
  return (new cljs.core.LazySeq(null,(function (){
  if((n > (0))){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  return cljs.core.cons(cljs.core.first(s),take.cljs$core$IFn$_invoke$arity$2((n - (1)),cljs.core.rest(s)));
  } else {
  return null;
  }
  } else {
  return null;
  }
  }),null,null));
  });
  take = function(n,coll){
  switch(arguments.length){
  case 1:
  return take__1.call(this,n);
  case 2:
  return take__2.call(this,n,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  take.cljs$core$IFn$_invoke$arity$1 = take__1;
  take.cljs$core$IFn$_invoke$arity$2 = take__2;
  return take;
  })()
  ;
  /**
  * Returns a lazy sequence of all but the first n items in coll.
  * Returns a stateful transducer when no collection is provided.
  */
  cljs.core.drop = (function() {
  var drop = null;
  var drop__1 = (function (n){
  return (function (rf){
  var na = cljs.core.volatile_BANG_(n);
  return ((function (na){
  return (function() {
  var G__11972 = null;
  var G__11972__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__11972__1 = (function (result){
  var G__11969 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__11969) : rf.call(null,G__11969));
  });
  var G__11972__2 = (function (result,input){
  var n__$1 = cljs.core.deref(na);
  na.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(na.cljs$core$IDeref$_deref$arity$1(null) - (1)));
  
  if((n__$1 > (0))){
  return result;
  } else {
  var G__11970 = result;
  var G__11971 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11970,G__11971) : rf.call(null,G__11970,G__11971));
  }
  });
  G__11972 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__11972__0.call(this);
  case 1:
  return G__11972__1.call(this,result);
  case 2:
  return G__11972__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__11972.cljs$core$IFn$_invoke$arity$0 = G__11972__0;
  G__11972.cljs$core$IFn$_invoke$arity$1 = G__11972__1;
  G__11972.cljs$core$IFn$_invoke$arity$2 = G__11972__2;
  return G__11972;
  })()
  ;})(na))
  });
  });
  var drop__2 = (function (n,coll){
  var step = (function (n__$1,coll__$1){
  while(true){
  var s = cljs.core.seq(coll__$1);
  if(((n__$1 > (0))) && (s)){
  var G__11973 = (n__$1 - (1));
  var G__11974 = cljs.core.rest(s);
  n__$1 = G__11973;
  coll__$1 = G__11974;
  continue;
  } else {
  return s;
  }
  break;
  }
  });
  return (new cljs.core.LazySeq(null,((function (step){
  return (function (){
  return step(n,coll);
  });})(step))
  ,null,null));
  });
  drop = function(n,coll){
  switch(arguments.length){
  case 1:
  return drop__1.call(this,n);
  case 2:
  return drop__2.call(this,n,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  drop.cljs$core$IFn$_invoke$arity$1 = drop__1;
  drop.cljs$core$IFn$_invoke$arity$2 = drop__2;
  return drop;
  })()
  ;
  /**
  * Return a lazy sequence of all but the last n (default 1) items in coll
  */
  cljs.core.drop_last = (function() {
  var drop_last = null;
  var drop_last__1 = (function (s){
  return drop_last.cljs$core$IFn$_invoke$arity$2((1),s);
  });
  var drop_last__2 = (function (n,s){
  return cljs.core.map.cljs$core$IFn$_invoke$arity$3((function (x,_){
  return x;
  }),s,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,s));
  });
  drop_last = function(n,s){
  switch(arguments.length){
  case 1:
  return drop_last__1.call(this,n);
  case 2:
  return drop_last__2.call(this,n,s);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  drop_last.cljs$core$IFn$_invoke$arity$1 = drop_last__1;
  drop_last.cljs$core$IFn$_invoke$arity$2 = drop_last__2;
  return drop_last;
  })()
  ;
  /**
  * Returns a seq of the last n items in coll.  Depending on the type
  * of coll may be no better than linear time.  For vectors, see also subvec.
  */
  cljs.core.take_last = (function take_last(n,coll){
  var s = cljs.core.seq(coll);
  var lead = cljs.core.seq(cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,coll));
  while(true){
  if(lead){
  var G__11977 = cljs.core.next(s);
  var G__11978 = cljs.core.next(lead);
  s = G__11977;
  lead = G__11978;
  continue;
  } else {
  return s;
  }
  break;
  }
  });
  /**
  * Returns a lazy sequence of the items in coll starting from the
  * first item for which (pred item) returns logical false.  Returns a
  * stateful transducer when no collection is provided.
  */
  cljs.core.drop_while = (function() {
  var drop_while = null;
  var drop_while__1 = (function (pred){
  return (function (rf){
  var da = cljs.core.volatile_BANG_(true);
  return ((function (da){
  return (function() {
  var G__11991 = null;
  var G__11991__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__11991__1 = (function (result){
  var G__11985 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__11985) : rf.call(null,G__11985));
  });
  var G__11991__2 = (function (result,input){
  var drop_QMARK_ = cljs.core.deref(da);
  if(cljs.core.truth_((function (){var and__3796__auto__ = drop_QMARK_;
  if(cljs.core.truth_(and__3796__auto__)){
  var G__11986 = input;
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__11986) : pred.call(null,G__11986));
  } else {
  return and__3796__auto__;
  }
  })())){
  return result;
  } else {
  cljs.core.vreset_BANG_(da,null);
  
  var G__11987 = result;
  var G__11988 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__11987,G__11988) : rf.call(null,G__11987,G__11988));
  }
  });
  G__11991 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__11991__0.call(this);
  case 1:
  return G__11991__1.call(this,result);
  case 2:
  return G__11991__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__11991.cljs$core$IFn$_invoke$arity$0 = G__11991__0;
  G__11991.cljs$core$IFn$_invoke$arity$1 = G__11991__1;
  G__11991.cljs$core$IFn$_invoke$arity$2 = G__11991__2;
  return G__11991;
  })()
  ;})(da))
  });
  });
  var drop_while__2 = (function (pred,coll){
  var step = (function (pred__$1,coll__$1){
  while(true){
  var s = cljs.core.seq(coll__$1);
  if(cljs.core.truth_((function (){var and__3796__auto__ = s;
  if(and__3796__auto__){
  var G__11990 = cljs.core.first(s);
  return (pred__$1.cljs$core$IFn$_invoke$arity$1 ? pred__$1.cljs$core$IFn$_invoke$arity$1(G__11990) : pred__$1.call(null,G__11990));
  } else {
  return and__3796__auto__;
  }
  })())){
  var G__11992 = pred__$1;
  var G__11993 = cljs.core.rest(s);
  pred__$1 = G__11992;
  coll__$1 = G__11993;
  continue;
  } else {
  return s;
  }
  break;
  }
  });
  return (new cljs.core.LazySeq(null,((function (step){
  return (function (){
  return step(pred,coll);
  });})(step))
  ,null,null));
  });
  drop_while = function(pred,coll){
  switch(arguments.length){
  case 1:
  return drop_while__1.call(this,pred);
  case 2:
  return drop_while__2.call(this,pred,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  drop_while.cljs$core$IFn$_invoke$arity$1 = drop_while__1;
  drop_while.cljs$core$IFn$_invoke$arity$2 = drop_while__2;
  return drop_while;
  })()
  ;
  /**
  * Returns a lazy (infinite!) sequence of repetitions of the items in coll.
  */
  cljs.core.cycle = (function cycle(coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(s,cycle(s));
  } else {
  return null;
  }
  }),null,null));
  });
  /**
  * Returns a vector of [(take n coll) (drop n coll)]
  */
  cljs.core.split_at = (function split_at(n,coll){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,coll),cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,coll)], null);
  });
  /**
  * Returns a lazy (infinite!, or length n if supplied) sequence of xs.
  */
  cljs.core.repeat = (function() {
  var repeat = null;
  var repeat__1 = (function (x){
  return (new cljs.core.LazySeq(null,(function (){
  return cljs.core.cons(x,repeat.cljs$core$IFn$_invoke$arity$1(x));
  }),null,null));
  });
  var repeat__2 = (function (n,x){
  return cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,repeat.cljs$core$IFn$_invoke$arity$1(x));
  });
  repeat = function(n,x){
  switch(arguments.length){
  case 1:
  return repeat__1.call(this,n);
  case 2:
  return repeat__2.call(this,n,x);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  repeat.cljs$core$IFn$_invoke$arity$1 = repeat__1;
  repeat.cljs$core$IFn$_invoke$arity$2 = repeat__2;
  return repeat;
  })()
  ;
  /**
  * Returns a lazy seq of n xs.
  */
  cljs.core.replicate = (function replicate(n,x){
  return cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.repeat.cljs$core$IFn$_invoke$arity$1(x));
  });
  /**
  * Takes a function of no args, presumably with side effects, and
  * returns an infinite (or length n if supplied) lazy sequence of calls
  * to it
  */
  cljs.core.repeatedly = (function() {
  var repeatedly = null;
  var repeatedly__1 = (function (f){
  return (new cljs.core.LazySeq(null,(function (){
  return cljs.core.cons((function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })(),repeatedly.cljs$core$IFn$_invoke$arity$1(f));
  }),null,null));
  });
  var repeatedly__2 = (function (n,f){
  return cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,repeatedly.cljs$core$IFn$_invoke$arity$1(f));
  });
  repeatedly = function(n,f){
  switch(arguments.length){
  case 1:
  return repeatedly__1.call(this,n);
  case 2:
  return repeatedly__2.call(this,n,f);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  repeatedly.cljs$core$IFn$_invoke$arity$1 = repeatedly__1;
  repeatedly.cljs$core$IFn$_invoke$arity$2 = repeatedly__2;
  return repeatedly;
  })()
  ;
  /**
  * Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects
  */
  cljs.core.iterate = (function iterate(f,x){
  return cljs.core.cons(x,(new cljs.core.LazySeq(null,(function (){
  return iterate(f,(function (){var G__12002 = x;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12002) : f.call(null,G__12002));
  })());
  }),null,null)));
  });
  /**
  * Returns a lazy seq of the first item in each coll, then the second etc.
  * @param {...*} var_args
  */
  cljs.core.interleave = (function() {
  var interleave = null;
  var interleave__2 = (function (c1,c2){
  return (new cljs.core.LazySeq(null,(function (){
  var s1 = cljs.core.seq(c1);
  var s2 = cljs.core.seq(c2);
  if((s1) && (s2)){
  return cljs.core.cons(cljs.core.first(s1),cljs.core.cons(cljs.core.first(s2),interleave.cljs$core$IFn$_invoke$arity$2(cljs.core.rest(s1),cljs.core.rest(s2))));
  } else {
  return null;
  }
  }),null,null));
  });
  var interleave__3 = (function() { 
  var G__12005__delegate = function (c1,c2,colls){
  return (new cljs.core.LazySeq(null,(function (){
  var ss = cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.seq,cljs.core.conj.cljs$core$IFn$_invoke$arity$variadic(colls,c2,cljs.core.array_seq([c1], 0)));
  if(cljs.core.every_QMARK_(cljs.core.identity,ss)){
  return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.first,ss),cljs.core.apply.cljs$core$IFn$_invoke$arity$2(interleave,cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.rest,ss)));
  } else {
  return null;
  }
  }),null,null));
  };
  var G__12005 = function (c1,c2,var_args){
  var colls = null;
  if (arguments.length > 2) {
  var G__12006__i = 0, G__12006__a = new Array(arguments.length -  2);
  while (G__12006__i < G__12006__a.length) {G__12006__a[G__12006__i] = arguments[G__12006__i + 2]; ++G__12006__i;}
    colls = new cljs.core.IndexedSeq(G__12006__a,0);
  } 
  return G__12005__delegate.call(this,c1,c2,colls);};
  G__12005.cljs$lang$maxFixedArity = 2;
  G__12005.cljs$lang$applyTo = (function (arglist__12007){
  var c1 = cljs.core.first(arglist__12007);
  arglist__12007 = cljs.core.next(arglist__12007);
  var c2 = cljs.core.first(arglist__12007);
  var colls = cljs.core.rest(arglist__12007);
  return G__12005__delegate(c1,c2,colls);
  });
  G__12005.cljs$core$IFn$_invoke$arity$variadic = G__12005__delegate;
  return G__12005;
  })()
  ;
  interleave = function(c1,c2,var_args){
  var colls = var_args;
  switch(arguments.length){
  case 2:
  return interleave__2.call(this,c1,c2);
  default:
  var G__12008 = null;
  if (arguments.length > 2) {
  var G__12009__i = 0, G__12009__a = new Array(arguments.length -  2);
  while (G__12009__i < G__12009__a.length) {G__12009__a[G__12009__i] = arguments[G__12009__i + 2]; ++G__12009__i;}
  G__12008 = new cljs.core.IndexedSeq(G__12009__a,0);
  }
  return interleave__3.cljs$core$IFn$_invoke$arity$variadic(c1,c2, G__12008);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  interleave.cljs$lang$maxFixedArity = 2;
  interleave.cljs$lang$applyTo = interleave__3.cljs$lang$applyTo;
  interleave.cljs$core$IFn$_invoke$arity$2 = interleave__2;
  interleave.cljs$core$IFn$_invoke$arity$variadic = interleave__3.cljs$core$IFn$_invoke$arity$variadic;
  return interleave;
  })()
  ;
  /**
  * Returns a lazy seq of the elements of coll separated by sep
  */
  cljs.core.interpose = (function() {
  var interpose = null;
  var interpose__1 = (function (sep){
  return (function (rf){
  var started = cljs.core.volatile_BANG_(false);
  return ((function (started){
  return (function() {
  var G__12024 = null;
  var G__12024__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12024__1 = (function (result){
  var G__12017 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12017) : rf.call(null,G__12017));
  });
  var G__12024__2 = (function (result,input){
  if(cljs.core.truth_(cljs.core.deref(started))){
  var sepr = (function (){var G__12018 = result;
  var G__12019 = sep;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12018,G__12019) : rf.call(null,G__12018,G__12019));
  })();
  if(cljs.core.reduced_QMARK_(sepr)){
  return sepr;
  } else {
  var G__12020 = sepr;
  var G__12021 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12020,G__12021) : rf.call(null,G__12020,G__12021));
  }
  } else {
  cljs.core.vreset_BANG_(started,true);
  
  var G__12022 = result;
  var G__12023 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12022,G__12023) : rf.call(null,G__12022,G__12023));
  }
  });
  G__12024 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12024__0.call(this);
  case 1:
  return G__12024__1.call(this,result);
  case 2:
  return G__12024__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12024.cljs$core$IFn$_invoke$arity$0 = G__12024__0;
  G__12024.cljs$core$IFn$_invoke$arity$1 = G__12024__1;
  G__12024.cljs$core$IFn$_invoke$arity$2 = G__12024__2;
  return G__12024;
  })()
  ;})(started))
  });
  });
  var interpose__2 = (function (sep,coll){
  return cljs.core.drop.cljs$core$IFn$_invoke$arity$2((1),cljs.core.interleave.cljs$core$IFn$_invoke$arity$2(cljs.core.repeat.cljs$core$IFn$_invoke$arity$1(sep),coll));
  });
  interpose = function(sep,coll){
  switch(arguments.length){
  case 1:
  return interpose__1.call(this,sep);
  case 2:
  return interpose__2.call(this,sep,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  interpose.cljs$core$IFn$_invoke$arity$1 = interpose__1;
  interpose.cljs$core$IFn$_invoke$arity$2 = interpose__2;
  return interpose;
  })()
  ;
  /**
  * Take a collection of collections, and return a lazy seq
  * of items from the inner collection
  */
  cljs.core.flatten1 = (function flatten1(colls){
  var cat = (function cat(coll,colls__$1){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4124__auto__ = cljs.core.seq(coll);
  if(temp__4124__auto__){
  var coll__$1 = temp__4124__auto__;
  return cljs.core.cons(cljs.core.first(coll__$1),cat(cljs.core.rest(coll__$1),colls__$1));
  } else {
  if(cljs.core.seq(colls__$1)){
  return cat(cljs.core.first(colls__$1),cljs.core.rest(colls__$1));
  } else {
  return null;
  }
  }
  }),null,null));
  });
  return cat(null,colls);
  });
  /**
  * Returns the result of applying concat to the result of applying map
  * to f and colls.  Thus function f should return a collection. Returns
  * a transducer when no collections are provided
  * @param {...*} var_args
  */
  cljs.core.mapcat = (function() {
  var mapcat = null;
  var mapcat__1 = (function (f){
  return cljs.core.comp.cljs$core$IFn$_invoke$arity$2(cljs.core.map.cljs$core$IFn$_invoke$arity$1(f),cljs.core.cat);
  });
  var mapcat__2 = (function() { 
  var G__12033__delegate = function (f,colls){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.concat,cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.map,f,colls));
  };
  var G__12033 = function (f,var_args){
  var colls = null;
  if (arguments.length > 1) {
  var G__12034__i = 0, G__12034__a = new Array(arguments.length -  1);
  while (G__12034__i < G__12034__a.length) {G__12034__a[G__12034__i] = arguments[G__12034__i + 1]; ++G__12034__i;}
    colls = new cljs.core.IndexedSeq(G__12034__a,0);
  } 
  return G__12033__delegate.call(this,f,colls);};
  G__12033.cljs$lang$maxFixedArity = 1;
  G__12033.cljs$lang$applyTo = (function (arglist__12035){
  var f = cljs.core.first(arglist__12035);
  var colls = cljs.core.rest(arglist__12035);
  return G__12033__delegate(f,colls);
  });
  G__12033.cljs$core$IFn$_invoke$arity$variadic = G__12033__delegate;
  return G__12033;
  })()
  ;
  mapcat = function(f,var_args){
  var colls = var_args;
  switch(arguments.length){
  case 1:
  return mapcat__1.call(this,f);
  default:
  var G__12036 = null;
  if (arguments.length > 1) {
  var G__12037__i = 0, G__12037__a = new Array(arguments.length -  1);
  while (G__12037__i < G__12037__a.length) {G__12037__a[G__12037__i] = arguments[G__12037__i + 1]; ++G__12037__i;}
  G__12036 = new cljs.core.IndexedSeq(G__12037__a,0);
  }
  return mapcat__2.cljs$core$IFn$_invoke$arity$variadic(f, G__12036);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  mapcat.cljs$lang$maxFixedArity = 1;
  mapcat.cljs$lang$applyTo = mapcat__2.cljs$lang$applyTo;
  mapcat.cljs$core$IFn$_invoke$arity$1 = mapcat__1;
  mapcat.cljs$core$IFn$_invoke$arity$variadic = mapcat__2.cljs$core$IFn$_invoke$arity$variadic;
  return mapcat;
  })()
  ;
  /**
  * Returns a lazy sequence of the items in coll for which
  * (pred item) returns true. pred must be free of side-effects.
  * Returns a transducer when no collection is provided.
  */
  cljs.core.filter = (function() {
  var filter = null;
  var filter__1 = (function (pred){
  return (function (rf){
  return (function() {
  var G__12056 = null;
  var G__12056__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12056__1 = (function (result){
  var G__12050 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12050) : rf.call(null,G__12050));
  });
  var G__12056__2 = (function (result,input){
  if(cljs.core.truth_((function (){var G__12051 = input;
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12051) : pred.call(null,G__12051));
  })())){
  var G__12052 = result;
  var G__12053 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12052,G__12053) : rf.call(null,G__12052,G__12053));
  } else {
  return result;
  }
  });
  G__12056 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12056__0.call(this);
  case 1:
  return G__12056__1.call(this,result);
  case 2:
  return G__12056__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12056.cljs$core$IFn$_invoke$arity$0 = G__12056__0;
  G__12056.cljs$core$IFn$_invoke$arity$1 = G__12056__1;
  G__12056.cljs$core$IFn$_invoke$arity$2 = G__12056__2;
  return G__12056;
  })()
  });
  });
  var filter__2 = (function (pred,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(s)){
  var c = cljs.core.chunk_first(s);
  var size = cljs.core.count(c);
  var b = cljs.core.chunk_buffer(size);
  var n__4695__auto___12057 = size;
  var i_12058 = (0);
  while(true){
  if((i_12058 < n__4695__auto___12057)){
  if(cljs.core.truth_((function (){var G__12054 = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_12058);
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12054) : pred.call(null,G__12054));
  })())){
  cljs.core.chunk_append(b,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c,i_12058));
  } else {
  }
  
  var G__12059 = (i_12058 + (1));
  i_12058 = G__12059;
  continue;
  } else {
  }
  break;
  }
  
  return cljs.core.chunk_cons(cljs.core.chunk(b),filter.cljs$core$IFn$_invoke$arity$2(pred,cljs.core.chunk_rest(s)));
  } else {
  var f = cljs.core.first(s);
  var r = cljs.core.rest(s);
  if(cljs.core.truth_((function (){var G__12055 = f;
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12055) : pred.call(null,G__12055));
  })())){
  return cljs.core.cons(f,filter.cljs$core$IFn$_invoke$arity$2(pred,r));
  } else {
  return filter.cljs$core$IFn$_invoke$arity$2(pred,r);
  }
  }
  } else {
  return null;
  }
  }),null,null));
  });
  filter = function(pred,coll){
  switch(arguments.length){
  case 1:
  return filter__1.call(this,pred);
  case 2:
  return filter__2.call(this,pred,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  filter.cljs$core$IFn$_invoke$arity$1 = filter__1;
  filter.cljs$core$IFn$_invoke$arity$2 = filter__2;
  return filter;
  })()
  ;
  /**
  * Returns a lazy sequence of the items in coll for which
  * (pred item) returns false. pred must be free of side-effects.
  * Returns a transducer when no collection is provided.
  */
  cljs.core.remove = (function() {
  var remove = null;
  var remove__1 = (function (pred){
  return cljs.core.filter.cljs$core$IFn$_invoke$arity$1(cljs.core.complement(pred));
  });
  var remove__2 = (function (pred,coll){
  return cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.complement(pred),coll);
  });
  remove = function(pred,coll){
  switch(arguments.length){
  case 1:
  return remove__1.call(this,pred);
  case 2:
  return remove__2.call(this,pred,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  remove.cljs$core$IFn$_invoke$arity$1 = remove__1;
  remove.cljs$core$IFn$_invoke$arity$2 = remove__2;
  return remove;
  })()
  ;
  /**
  * Returns a lazy sequence of the nodes in a tree, via a depth-first walk.
  * branch? must be a fn of one arg that returns true if passed a node
  * that can have children (but may not).  children must be a fn of one
  * arg that returns a sequence of the children. Will only be called on
  * nodes for which branch? returns true. Root is the root node of the
  * tree.
  */
  cljs.core.tree_seq = (function tree_seq(branch_QMARK_,children,root){
  var walk = (function walk(node){
  return (new cljs.core.LazySeq(null,(function (){
  return cljs.core.cons(node,(cljs.core.truth_((function (){var G__12066 = node;
  return (branch_QMARK_.cljs$core$IFn$_invoke$arity$1 ? branch_QMARK_.cljs$core$IFn$_invoke$arity$1(G__12066) : branch_QMARK_.call(null,G__12066));
  })())?cljs.core.mapcat.cljs$core$IFn$_invoke$arity$variadic(walk,cljs.core.array_seq([(function (){var G__12067 = node;
  return (children.cljs$core$IFn$_invoke$arity$1 ? children.cljs$core$IFn$_invoke$arity$1(G__12067) : children.call(null,G__12067));
  })()], 0)):null));
  }),null,null));
  });
  return walk(root);
  });
  /**
  * Takes any nested combination of sequential things (lists, vectors,
  * etc.) and returns their contents as a single, flat sequence.
  * (flatten nil) returns nil.
  */
  cljs.core.flatten = (function flatten(x){
  return cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (p1__12068_SHARP_){
  return !(cljs.core.sequential_QMARK_(p1__12068_SHARP_));
  }),cljs.core.rest(cljs.core.tree_seq(cljs.core.sequential_QMARK_,cljs.core.seq,x)));
  });
  /**
  * Returns a new coll consisting of to-coll with all of the items of
  * from-coll conjoined. A transducer may be supplied.
  */
  cljs.core.into = (function() {
  var into = null;
  var into__2 = (function (to,from){
  if(!((to == null))){
  if((function (){var G__12071 = to;
  if(G__12071){
  var bit__4482__auto__ = (G__12071.cljs$lang$protocol_mask$partition1$ & (4));
  if((bit__4482__auto__) || (G__12071.cljs$core$IEditableCollection$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return cljs.core.with_meta(cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj_BANG_,cljs.core.transient$(to),from)),cljs.core.meta(to));
  } else {
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,to,from);
  }
  } else {
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj,cljs.core.List.EMPTY,from);
  }
  });
  var into__3 = (function (to,xform,from){
  if((function (){var G__12072 = to;
  if(G__12072){
  var bit__4482__auto__ = (G__12072.cljs$lang$protocol_mask$partition1$ & (4));
  if((bit__4482__auto__) || (G__12072.cljs$core$IEditableCollection$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return cljs.core.with_meta(cljs.core.persistent_BANG_(cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(xform,cljs.core.conj_BANG_,cljs.core.transient$(to),from)),cljs.core.meta(to));
  } else {
  return cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(xform,cljs.core.conj,to,from);
  }
  });
  into = function(to,xform,from){
  switch(arguments.length){
  case 2:
  return into__2.call(this,to,xform);
  case 3:
  return into__3.call(this,to,xform,from);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  into.cljs$core$IFn$_invoke$arity$2 = into__2;
  into.cljs$core$IFn$_invoke$arity$3 = into__3;
  return into;
  })()
  ;
  /**
  * Returns a vector consisting of the result of applying f to the
  * set of first items of each coll, followed by applying f to the set
  * of second items in each coll, until any one of the colls is
  * exhausted.  Any remaining items in other colls are ignored. Function
  * f should accept number-of-colls arguments.
  * @param {...*} var_args
  */
  cljs.core.mapv = (function() {
  var mapv = null;
  var mapv__2 = (function (f,coll){
  return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (v,o){
  return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(v,(function (){var G__12074 = o;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12074) : f.call(null,G__12074));
  })());
  }),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),coll));
  });
  var mapv__3 = (function (f,c1,c2){
  return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$3(f,c1,c2));
  });
  var mapv__4 = (function (f,c1,c2,c3){
  return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.map.cljs$core$IFn$_invoke$arity$4(f,c1,c2,c3));
  });
  var mapv__5 = (function() { 
  var G__12075__delegate = function (f,c1,c2,c3,colls){
  return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentVector.EMPTY,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(cljs.core.map,f,c1,c2,c3,cljs.core.array_seq([colls], 0)));
  };
  var G__12075 = function (f,c1,c2,c3,var_args){
  var colls = null;
  if (arguments.length > 4) {
  var G__12076__i = 0, G__12076__a = new Array(arguments.length -  4);
  while (G__12076__i < G__12076__a.length) {G__12076__a[G__12076__i] = arguments[G__12076__i + 4]; ++G__12076__i;}
    colls = new cljs.core.IndexedSeq(G__12076__a,0);
  } 
  return G__12075__delegate.call(this,f,c1,c2,c3,colls);};
  G__12075.cljs$lang$maxFixedArity = 4;
  G__12075.cljs$lang$applyTo = (function (arglist__12077){
  var f = cljs.core.first(arglist__12077);
  arglist__12077 = cljs.core.next(arglist__12077);
  var c1 = cljs.core.first(arglist__12077);
  arglist__12077 = cljs.core.next(arglist__12077);
  var c2 = cljs.core.first(arglist__12077);
  arglist__12077 = cljs.core.next(arglist__12077);
  var c3 = cljs.core.first(arglist__12077);
  var colls = cljs.core.rest(arglist__12077);
  return G__12075__delegate(f,c1,c2,c3,colls);
  });
  G__12075.cljs$core$IFn$_invoke$arity$variadic = G__12075__delegate;
  return G__12075;
  })()
  ;
  mapv = function(f,c1,c2,c3,var_args){
  var colls = var_args;
  switch(arguments.length){
  case 2:
  return mapv__2.call(this,f,c1);
  case 3:
  return mapv__3.call(this,f,c1,c2);
  case 4:
  return mapv__4.call(this,f,c1,c2,c3);
  default:
  var G__12078 = null;
  if (arguments.length > 4) {
  var G__12079__i = 0, G__12079__a = new Array(arguments.length -  4);
  while (G__12079__i < G__12079__a.length) {G__12079__a[G__12079__i] = arguments[G__12079__i + 4]; ++G__12079__i;}
  G__12078 = new cljs.core.IndexedSeq(G__12079__a,0);
  }
  return mapv__5.cljs$core$IFn$_invoke$arity$variadic(f,c1,c2,c3, G__12078);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  mapv.cljs$lang$maxFixedArity = 4;
  mapv.cljs$lang$applyTo = mapv__5.cljs$lang$applyTo;
  mapv.cljs$core$IFn$_invoke$arity$2 = mapv__2;
  mapv.cljs$core$IFn$_invoke$arity$3 = mapv__3;
  mapv.cljs$core$IFn$_invoke$arity$4 = mapv__4;
  mapv.cljs$core$IFn$_invoke$arity$variadic = mapv__5.cljs$core$IFn$_invoke$arity$variadic;
  return mapv;
  })()
  ;
  /**
  * Returns a vector of the items in coll for which
  * (pred item) returns true. pred must be free of side-effects.
  */
  cljs.core.filterv = (function filterv(pred,coll){
  return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (v,o){
  if(cljs.core.truth_((function (){var G__12081 = o;
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12081) : pred.call(null,G__12081));
  })())){
  return cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(v,o);
  } else {
  return v;
  }
  }),cljs.core.transient$(cljs.core.PersistentVector.EMPTY),coll));
  });
  /**
  * Returns a lazy sequence of lists of n items each, at offsets step
  * apart. If step is not supplied, defaults to n, i.e. the partitions
  * do not overlap. If a pad collection is supplied, use its elements as
  * necessary to complete last partition up to n items. In case there are
  * not enough padding elements, return a partition with less than n items.
  */
  cljs.core.partition = (function() {
  var partition = null;
  var partition__2 = (function (n,coll){
  return partition.cljs$core$IFn$_invoke$arity$3(n,n,coll);
  });
  var partition__3 = (function (n,step,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  var p = cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,s);
  if((n === cljs.core.count(p))){
  return cljs.core.cons(p,partition.cljs$core$IFn$_invoke$arity$3(n,step,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(step,s)));
  } else {
  return null;
  }
  } else {
  return null;
  }
  }),null,null));
  });
  var partition__4 = (function (n,step,pad,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  var p = cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,s);
  if((n === cljs.core.count(p))){
  return cljs.core.cons(p,partition.cljs$core$IFn$_invoke$arity$4(n,step,pad,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(step,s)));
  } else {
  return cljs.core._conj(cljs.core.List.EMPTY,cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.concat.cljs$core$IFn$_invoke$arity$2(p,pad)));
  }
  } else {
  return null;
  }
  }),null,null));
  });
  partition = function(n,step,pad,coll){
  switch(arguments.length){
  case 2:
  return partition__2.call(this,n,step);
  case 3:
  return partition__3.call(this,n,step,pad);
  case 4:
  return partition__4.call(this,n,step,pad,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  partition.cljs$core$IFn$_invoke$arity$2 = partition__2;
  partition.cljs$core$IFn$_invoke$arity$3 = partition__3;
  partition.cljs$core$IFn$_invoke$arity$4 = partition__4;
  return partition;
  })()
  ;
  /**
  * Returns the value in a nested associative structure,
  * where ks is a sequence of keys. Returns nil if the key is not present,
  * or the not-found value if supplied.
  */
  cljs.core.get_in = (function() {
  var get_in = null;
  var get_in__2 = (function (m,ks){
  return get_in.cljs$core$IFn$_invoke$arity$3(m,ks,null);
  });
  var get_in__3 = (function (m,ks,not_found){
  var sentinel = cljs.core.lookup_sentinel;
  var m__$1 = m;
  var ks__$1 = cljs.core.seq(ks);
  while(true){
  if(ks__$1){
  if(!((function (){var G__12096 = m__$1;
  if(G__12096){
  var bit__4489__auto__ = (G__12096.cljs$lang$protocol_mask$partition0$ & (256));
  if((bit__4489__auto__) || (G__12096.cljs$core$ILookup$)){
  return true;
  } else {
  if((!G__12096.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.ILookup,G__12096);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.ILookup,G__12096);
  }
  })())){
  return not_found;
  } else {
  var m__$2 = cljs.core.get.cljs$core$IFn$_invoke$arity$3(m__$1,cljs.core.first(ks__$1),sentinel);
  if((sentinel === m__$2)){
  return not_found;
  } else {
  var G__12097 = sentinel;
  var G__12098 = m__$2;
  var G__12099 = cljs.core.next(ks__$1);
  sentinel = G__12097;
  m__$1 = G__12098;
  ks__$1 = G__12099;
  continue;
  }
  }
  } else {
  return m__$1;
  }
  break;
  }
  });
  get_in = function(m,ks,not_found){
  switch(arguments.length){
  case 2:
  return get_in__2.call(this,m,ks);
  case 3:
  return get_in__3.call(this,m,ks,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  get_in.cljs$core$IFn$_invoke$arity$2 = get_in__2;
  get_in.cljs$core$IFn$_invoke$arity$3 = get_in__3;
  return get_in;
  })()
  ;
  /**
  * Associates a value in a nested associative structure, where ks is a
  * sequence of keys and v is the new value and returns a new nested structure.
  * If any levels do not exist, hash-maps will be created.
  */
  cljs.core.assoc_in = (function assoc_in(m,p__12100,v){
  var vec__12105 = p__12100;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12105,(0),null);
  var ks = cljs.core.nthnext(vec__12105,(1));
  if(ks){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,assoc_in(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,v));
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,v);
  }
  });
  /**
  * 'Updates' a value in a nested associative structure, where ks is a
  * sequence of keys and f is a function that will take the old value
  * and any supplied args and return the new value, and returns a new
  * nested structure.  If any levels do not exist, hash-maps will be
  * created.
  * @param {...*} var_args
  */
  cljs.core.update_in = (function() {
  var update_in = null;
  var update_in__3 = (function (m,p__12106,f){
  var vec__12144 = p__12106;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12144,(0),null);
  var ks = cljs.core.nthnext(vec__12144,(1));
  if(ks){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,update_in.cljs$core$IFn$_invoke$arity$3(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f));
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12145 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12145) : f.call(null,G__12145));
  })());
  }
  });
  var update_in__4 = (function (m,p__12107,f,a){
  var vec__12146 = p__12107;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12146,(0),null);
  var ks = cljs.core.nthnext(vec__12146,(1));
  if(ks){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,update_in.cljs$core$IFn$_invoke$arity$4(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a));
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12147 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12148 = a;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12147,G__12148) : f.call(null,G__12147,G__12148));
  })());
  }
  });
  var update_in__5 = (function (m,p__12108,f,a,b){
  var vec__12149 = p__12108;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12149,(0),null);
  var ks = cljs.core.nthnext(vec__12149,(1));
  if(ks){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,update_in.cljs$core$IFn$_invoke$arity$5(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a,b));
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12150 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12151 = a;
  var G__12152 = b;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12150,G__12151,G__12152) : f.call(null,G__12150,G__12151,G__12152));
  })());
  }
  });
  var update_in__6 = (function (m,p__12109,f,a,b,c){
  var vec__12153 = p__12109;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12153,(0),null);
  var ks = cljs.core.nthnext(vec__12153,(1));
  if(ks){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,update_in.cljs$core$IFn$_invoke$arity$6(cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a,b,c));
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12154 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12155 = a;
  var G__12156 = b;
  var G__12157 = c;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__12154,G__12155,G__12156,G__12157) : f.call(null,G__12154,G__12155,G__12156,G__12157));
  })());
  }
  });
  var update_in__7 = (function() { 
  var G__12159__delegate = function (m,p__12110,f,a,b,c,args){
  var vec__12158 = p__12110;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12158,(0),null);
  var ks = cljs.core.nthnext(vec__12158,(1));
  if(ks){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(update_in,cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),ks,f,a,cljs.core.array_seq([b,c,args], 0)));
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),a,b,c,cljs.core.array_seq([args], 0)));
  }
  };
  var G__12159 = function (m,p__12110,f,a,b,c,var_args){
  var args = null;
  if (arguments.length > 6) {
  var G__12160__i = 0, G__12160__a = new Array(arguments.length -  6);
  while (G__12160__i < G__12160__a.length) {G__12160__a[G__12160__i] = arguments[G__12160__i + 6]; ++G__12160__i;}
    args = new cljs.core.IndexedSeq(G__12160__a,0);
  } 
  return G__12159__delegate.call(this,m,p__12110,f,a,b,c,args);};
  G__12159.cljs$lang$maxFixedArity = 6;
  G__12159.cljs$lang$applyTo = (function (arglist__12161){
  var m = cljs.core.first(arglist__12161);
  arglist__12161 = cljs.core.next(arglist__12161);
  var p__12110 = cljs.core.first(arglist__12161);
  arglist__12161 = cljs.core.next(arglist__12161);
  var f = cljs.core.first(arglist__12161);
  arglist__12161 = cljs.core.next(arglist__12161);
  var a = cljs.core.first(arglist__12161);
  arglist__12161 = cljs.core.next(arglist__12161);
  var b = cljs.core.first(arglist__12161);
  arglist__12161 = cljs.core.next(arglist__12161);
  var c = cljs.core.first(arglist__12161);
  var args = cljs.core.rest(arglist__12161);
  return G__12159__delegate(m,p__12110,f,a,b,c,args);
  });
  G__12159.cljs$core$IFn$_invoke$arity$variadic = G__12159__delegate;
  return G__12159;
  })()
  ;
  update_in = function(m,p__12110,f,a,b,c,var_args){
  var args = var_args;
  switch(arguments.length){
  case 3:
  return update_in__3.call(this,m,p__12110,f);
  case 4:
  return update_in__4.call(this,m,p__12110,f,a);
  case 5:
  return update_in__5.call(this,m,p__12110,f,a,b);
  case 6:
  return update_in__6.call(this,m,p__12110,f,a,b,c);
  default:
  var G__12162 = null;
  if (arguments.length > 6) {
  var G__12163__i = 0, G__12163__a = new Array(arguments.length -  6);
  while (G__12163__i < G__12163__a.length) {G__12163__a[G__12163__i] = arguments[G__12163__i + 6]; ++G__12163__i;}
  G__12162 = new cljs.core.IndexedSeq(G__12163__a,0);
  }
  return update_in__7.cljs$core$IFn$_invoke$arity$variadic(m,p__12110,f,a,b,c, G__12162);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  update_in.cljs$lang$maxFixedArity = 6;
  update_in.cljs$lang$applyTo = update_in__7.cljs$lang$applyTo;
  update_in.cljs$core$IFn$_invoke$arity$3 = update_in__3;
  update_in.cljs$core$IFn$_invoke$arity$4 = update_in__4;
  update_in.cljs$core$IFn$_invoke$arity$5 = update_in__5;
  update_in.cljs$core$IFn$_invoke$arity$6 = update_in__6;
  update_in.cljs$core$IFn$_invoke$arity$variadic = update_in__7.cljs$core$IFn$_invoke$arity$variadic;
  return update_in;
  })()
  ;
  /**
  * 'Updates' a value in an associative structure, where k is a
  * key and f is a function that will take the old value
  * and any supplied args and return the new value, and returns a new
  * structure.  If the key does not exist, nil is passed as the old value.
  * @param {...*} var_args
  */
  cljs.core.update = (function() {
  var update = null;
  var update__3 = (function (m,k,f){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12174 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12174) : f.call(null,G__12174));
  })());
  });
  var update__4 = (function (m,k,f,x){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12175 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12176 = x;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12175,G__12176) : f.call(null,G__12175,G__12176));
  })());
  });
  var update__5 = (function (m,k,f,x,y){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12177 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12178 = x;
  var G__12179 = y;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12177,G__12178,G__12179) : f.call(null,G__12177,G__12178,G__12179));
  })());
  });
  var update__6 = (function (m,k,f,x,y,z){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12180 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12181 = x;
  var G__12182 = y;
  var G__12183 = z;
  return (f.cljs$core$IFn$_invoke$arity$4 ? f.cljs$core$IFn$_invoke$arity$4(G__12180,G__12181,G__12182,G__12183) : f.call(null,G__12180,G__12181,G__12182,G__12183));
  })());
  });
  var update__7 = (function() { 
  var G__12184__delegate = function (m,k,f,x,y,z,more){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(f,cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k),x,y,z,cljs.core.array_seq([more], 0)));
  };
  var G__12184 = function (m,k,f,x,y,z,var_args){
  var more = null;
  if (arguments.length > 6) {
  var G__12185__i = 0, G__12185__a = new Array(arguments.length -  6);
  while (G__12185__i < G__12185__a.length) {G__12185__a[G__12185__i] = arguments[G__12185__i + 6]; ++G__12185__i;}
    more = new cljs.core.IndexedSeq(G__12185__a,0);
  } 
  return G__12184__delegate.call(this,m,k,f,x,y,z,more);};
  G__12184.cljs$lang$maxFixedArity = 6;
  G__12184.cljs$lang$applyTo = (function (arglist__12186){
  var m = cljs.core.first(arglist__12186);
  arglist__12186 = cljs.core.next(arglist__12186);
  var k = cljs.core.first(arglist__12186);
  arglist__12186 = cljs.core.next(arglist__12186);
  var f = cljs.core.first(arglist__12186);
  arglist__12186 = cljs.core.next(arglist__12186);
  var x = cljs.core.first(arglist__12186);
  arglist__12186 = cljs.core.next(arglist__12186);
  var y = cljs.core.first(arglist__12186);
  arglist__12186 = cljs.core.next(arglist__12186);
  var z = cljs.core.first(arglist__12186);
  var more = cljs.core.rest(arglist__12186);
  return G__12184__delegate(m,k,f,x,y,z,more);
  });
  G__12184.cljs$core$IFn$_invoke$arity$variadic = G__12184__delegate;
  return G__12184;
  })()
  ;
  update = function(m,k,f,x,y,z,var_args){
  var more = var_args;
  switch(arguments.length){
  case 3:
  return update__3.call(this,m,k,f);
  case 4:
  return update__4.call(this,m,k,f,x);
  case 5:
  return update__5.call(this,m,k,f,x,y);
  case 6:
  return update__6.call(this,m,k,f,x,y,z);
  default:
  var G__12187 = null;
  if (arguments.length > 6) {
  var G__12188__i = 0, G__12188__a = new Array(arguments.length -  6);
  while (G__12188__i < G__12188__a.length) {G__12188__a[G__12188__i] = arguments[G__12188__i + 6]; ++G__12188__i;}
  G__12187 = new cljs.core.IndexedSeq(G__12188__a,0);
  }
  return update__7.cljs$core$IFn$_invoke$arity$variadic(m,k,f,x,y,z, G__12187);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  update.cljs$lang$maxFixedArity = 6;
  update.cljs$lang$applyTo = update__7.cljs$lang$applyTo;
  update.cljs$core$IFn$_invoke$arity$3 = update__3;
  update.cljs$core$IFn$_invoke$arity$4 = update__4;
  update.cljs$core$IFn$_invoke$arity$5 = update__5;
  update.cljs$core$IFn$_invoke$arity$6 = update__6;
  update.cljs$core$IFn$_invoke$arity$variadic = update__7.cljs$core$IFn$_invoke$arity$variadic;
  return update;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.VectorNode = (function (edit,arr){
  this.edit = edit;
  this.arr = arr;
  })
  
  cljs.core.VectorNode.cljs$lang$type = true;
  
  cljs.core.VectorNode.cljs$lang$ctorStr = "cljs.core/VectorNode";
  
  cljs.core.VectorNode.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/VectorNode");
  });
  
  cljs.core.__GT_VectorNode = (function __GT_VectorNode(edit,arr){
  return (new cljs.core.VectorNode(edit,arr));
  });
  
  cljs.core.pv_fresh_node = (function pv_fresh_node(edit){
  return (new cljs.core.VectorNode(edit,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]));
  });
  cljs.core.pv_aget = (function pv_aget(node,idx){
  return (node.arr[idx]);
  });
  cljs.core.pv_aset = (function pv_aset(node,idx,val){
  return (node.arr[idx] = val);
  });
  cljs.core.pv_clone_node = (function pv_clone_node(node){
  return (new cljs.core.VectorNode(node.edit,cljs.core.aclone(node.arr)));
  });
  cljs.core.tail_off = (function tail_off(pv){
  var cnt = pv.cnt;
  if((cnt < (32))){
  return (0);
  } else {
  return (((cnt - (1)) >>> (5)) << (5));
  }
  });
  cljs.core.new_path = (function new_path(edit,level,node){
  var ll = level;
  var ret = node;
  while(true){
  if((ll === (0))){
  return ret;
  } else {
  var embed = ret;
  var r = cljs.core.pv_fresh_node(edit);
  var _ = cljs.core.pv_aset(r,(0),embed);
  var G__12189 = (ll - (5));
  var G__12190 = r;
  ll = G__12189;
  ret = G__12190;
  continue;
  }
  break;
  }
  });
  cljs.core.push_tail = (function push_tail(pv,level,parent,tailnode){
  var ret = cljs.core.pv_clone_node(parent);
  var subidx = (((pv.cnt - (1)) >>> level) & (31));
  if(((5) === level)){
  cljs.core.pv_aset(ret,subidx,tailnode);
  
  return ret;
  } else {
  var child = cljs.core.pv_aget(parent,subidx);
  if(!((child == null))){
  var node_to_insert = push_tail(pv,(level - (5)),child,tailnode);
  cljs.core.pv_aset(ret,subidx,node_to_insert);
  
  return ret;
  } else {
  var node_to_insert = cljs.core.new_path(null,(level - (5)),tailnode);
  cljs.core.pv_aset(ret,subidx,node_to_insert);
  
  return ret;
  }
  }
  });
  cljs.core.vector_index_out_of_bounds = (function vector_index_out_of_bounds(i,cnt){
  throw (new Error([cljs.core.str("No item "),cljs.core.str(i),cljs.core.str(" in vector of length "),cljs.core.str(cnt)].join('')));
  });
  cljs.core.first_array_for_longvec = (function first_array_for_longvec(pv){
  var node = pv.root;
  var level = pv.shift;
  while(true){
  if((level > (0))){
  var G__12195 = cljs.core.pv_aget(node,(0));
  var G__12196 = (level - (5));
  node = G__12195;
  level = G__12196;
  continue;
  } else {
  return node.arr;
  }
  break;
  }
  });
  cljs.core.unchecked_array_for = (function unchecked_array_for(pv,i){
  if((i >= cljs.core.tail_off(pv))){
  return pv.tail;
  } else {
  var node = pv.root;
  var level = pv.shift;
  while(true){
  if((level > (0))){
  var G__12197 = cljs.core.pv_aget(node,((i >>> level) & (31)));
  var G__12198 = (level - (5));
  node = G__12197;
  level = G__12198;
  continue;
  } else {
  return node.arr;
  }
  break;
  }
  }
  });
  cljs.core.array_for = (function array_for(pv,i){
  if((((0) <= i)) && ((i < pv.cnt))){
  return cljs.core.unchecked_array_for(pv,i);
  } else {
  return cljs.core.vector_index_out_of_bounds(i,pv.cnt);
  }
  });
  cljs.core.do_assoc = (function do_assoc(pv,level,node,i,val){
  var ret = cljs.core.pv_clone_node(node);
  if((level === (0))){
  cljs.core.pv_aset(ret,(i & (31)),val);
  
  return ret;
  } else {
  var subidx = ((i >>> level) & (31));
  cljs.core.pv_aset(ret,subidx,do_assoc(pv,(level - (5)),cljs.core.pv_aget(node,subidx),i,val));
  
  return ret;
  }
  });
  cljs.core.pop_tail = (function pop_tail(pv,level,node){
  var subidx = (((pv.cnt - (2)) >>> level) & (31));
  if((level > (5))){
  var new_child = pop_tail(pv,(level - (5)),cljs.core.pv_aget(node,subidx));
  if(((new_child == null)) && ((subidx === (0)))){
  return null;
  } else {
  var ret = cljs.core.pv_clone_node(node);
  cljs.core.pv_aset(ret,subidx,new_child);
  
  return ret;
  }
  } else {
  if((subidx === (0))){
  return null;
  } else {
  var ret = cljs.core.pv_clone_node(node);
  cljs.core.pv_aset(ret,subidx,null);
  
  return ret;
  
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.RangedIterator = (function (i,base,arr,v,start,end){
  this.i = i;
  this.base = base;
  this.arr = arr;
  this.v = v;
  this.start = start;
  this.end = end;
  })
  cljs.core.RangedIterator.prototype.hasNext = (function (){
  var self__ = this;
  var this$ = this;
  return (self__.i < self__.end);
  });
  
  cljs.core.RangedIterator.prototype.next = (function (){
  var self__ = this;
  var this$ = this;
  if(((self__.i - self__.base) === (32))){
  self__.arr = cljs.core.unchecked_array_for(self__.v,self__.i);
  
  self__.base = (self__.base + (32));
  } else {
  }
  
  var ret = (self__.arr[(self__.i & (31))]);
  self__.i = (self__.i + (1));
  
  return ret;
  });
  
  cljs.core.RangedIterator.cljs$lang$type = true;
  
  cljs.core.RangedIterator.cljs$lang$ctorStr = "cljs.core/RangedIterator";
  
  cljs.core.RangedIterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/RangedIterator");
  });
  
  cljs.core.__GT_RangedIterator = (function __GT_RangedIterator(i,base,arr,v,start,end){
  return (new cljs.core.RangedIterator(i,base,arr,v,start,end));
  });
  
  cljs.core.ranged_iterator = (function ranged_iterator(v,start,end){
  var i = start;
  return (new cljs.core.RangedIterator(i,(i - (i % (32))),(((start < cljs.core.count(v)))?cljs.core.unchecked_array_for(v,i):null),v,start,end));
  });
  
  
  
  
  
  
  
  /**
  * @constructor
  */
  cljs.core.PersistentVector = (function (meta,cnt,shift,root,tail,__hash){
  this.meta = meta;
  this.cnt = cnt;
  this.shift = shift;
  this.root = root;
  this.tail = tail;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 167668511;
  this.cljs$lang$protocol_mask$partition1$ = 8196;
  })
  cljs.core.PersistentVector.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentVector.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(typeof k === 'number'){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(coll__$1,k,not_found);
  } else {
  return not_found;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (v,f,init){
  var self__ = this;
  var v__$1 = this;
  var i = (0);
  var init__$1 = init;
  while(true){
  if((i < self__.cnt)){
  var arr = cljs.core.unchecked_array_for(v__$1,i);
  var len = arr.length;
  var init__$2 = (function (){var j = (0);
  var init__$2 = init__$1;
  while(true){
  if((j < len)){
  var init__$3 = (function (){var G__12208 = init__$2;
  var G__12209 = (j + i);
  var G__12210 = (arr[j]);
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12208,G__12209,G__12210) : f.call(null,G__12208,G__12209,G__12210));
  })();
  if(cljs.core.reduced_QMARK_(init__$3)){
  return init__$3;
  } else {
  var G__12221 = (j + (1));
  var G__12222 = init__$3;
  j = G__12221;
  init__$2 = G__12222;
  continue;
  }
  } else {
  return init__$2;
  }
  break;
  }
  })();
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12211 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12211) : cljs.core.deref.call(null,G__12211));
  } else {
  var G__12223 = (i + len);
  var G__12224 = init__$2;
  i = G__12223;
  init__$1 = G__12224;
  continue;
  }
  } else {
  return init__$1;
  }
  break;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
  var self__ = this;
  var coll__$1 = this;
  return (cljs.core.array_for(coll__$1,n)[(n & (31))]);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
  var self__ = this;
  var coll__$1 = this;
  if((((0) <= n)) && ((n < self__.cnt))){
  return (cljs.core.unchecked_array_for(coll__$1,n)[(n & (31))]);
  } else {
  return not_found;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (coll,n,val){
  var self__ = this;
  var coll__$1 = this;
  if((((0) <= n)) && ((n < self__.cnt))){
  if((cljs.core.tail_off(coll__$1) <= n)){
  var new_tail = cljs.core.aclone(self__.tail);
  (new_tail[(n & (31))] = val);
  
  return (new cljs.core.PersistentVector(self__.meta,self__.cnt,self__.shift,self__.root,new_tail,null));
  } else {
  return (new cljs.core.PersistentVector(self__.meta,self__.cnt,self__.shift,cljs.core.do_assoc(coll__$1,self__.shift,self__.root,n,val),self__.tail,null));
  }
  } else {
  if((n === self__.cnt)){
  return cljs.core._conj(coll__$1,val);
  } else {
  throw (new Error([cljs.core.str("Index "),cljs.core.str(n),cljs.core.str(" out of bounds  [0,"),cljs.core.str(self__.cnt),cljs.core.str("]")].join('')));
  
  }
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IIterable$ = true;
  
  cljs.core.PersistentVector.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core.ranged_iterator(this$__$1,(0),self__.cnt);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.PersistentVector(self__.meta,self__.cnt,self__.shift,self__.root,self__.tail,self__.__hash));
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.cnt;
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IMapEntry$_key$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll__$1,(0));
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IMapEntry$_val$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll__$1,(1));
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll__$1,(self__.cnt - (1)));
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt === (0))){
  throw (new Error("Can't pop empty vector"));
  } else {
  if(((1) === self__.cnt)){
  return cljs.core._with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
  } else {
  if(((1) < (self__.cnt - cljs.core.tail_off(coll__$1)))){
  return (new cljs.core.PersistentVector(self__.meta,(self__.cnt - (1)),self__.shift,self__.root,self__.tail.slice((0),(-1)),null));
  } else {
  var new_tail = cljs.core.unchecked_array_for(coll__$1,(self__.cnt - (2)));
  var nr = cljs.core.pop_tail(coll__$1,self__.shift,self__.root);
  var new_root = (((nr == null))?cljs.core.PersistentVector.EMPTY_NODE:nr);
  var cnt_1 = (self__.cnt - (1));
  if((((5) < self__.shift)) && ((cljs.core.pv_aget(new_root,(1)) == null))){
  return (new cljs.core.PersistentVector(self__.meta,cnt_1,(self__.shift - (5)),cljs.core.pv_aget(new_root,(0)),new_tail,null));
  } else {
  return (new cljs.core.PersistentVector(self__.meta,cnt_1,self__.shift,new_root,new_tail,null));
  }
  
  }
  }
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  return (new cljs.core.RSeq(coll__$1,(self__.cnt - (1)),null));
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  if((other instanceof cljs.core.PersistentVector)){
  if((self__.cnt === cljs.core.count(other))){
  var me_iter = cljs.core._iterator(coll__$1);
  var you_iter = cljs.core._iterator(other);
  while(true){
  if(cljs.core.truth_(me_iter.hasNext())){
  var x = me_iter.next();
  var y = you_iter.next();
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(x,y)){
  continue;
  } else {
  return false;
  }
  } else {
  return true;
  }
  break;
  }
  } else {
  return false;
  }
  } else {
  return cljs.core.equiv_sequential(coll__$1,other);
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.TransientVector(self__.cnt,self__.shift,(function (){var G__12212 = self__.root;
  return (cljs.core.tv_editable_root.cljs$core$IFn$_invoke$arity$1 ? cljs.core.tv_editable_root.cljs$core$IFn$_invoke$arity$1(G__12212) : cljs.core.tv_editable_root.call(null,G__12212));
  })(),(function (){var G__12213 = self__.tail;
  return (cljs.core.tv_editable_tail.cljs$core$IFn$_invoke$arity$1 ? cljs.core.tv_editable_tail.cljs$core$IFn$_invoke$arity$1(G__12213) : cljs.core.tv_editable_tail.call(null,G__12213));
  })()));
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (v,f){
  var self__ = this;
  var v__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(v__$1,f);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (v,f,init){
  var self__ = this;
  var v__$1 = this;
  var i = (0);
  var init__$1 = init;
  while(true){
  if((i < self__.cnt)){
  var arr = cljs.core.unchecked_array_for(v__$1,i);
  var len = arr.length;
  var init__$2 = (function (){var j = (0);
  var init__$2 = init__$1;
  while(true){
  if((j < len)){
  var init__$3 = (function (){var G__12214 = init__$2;
  var G__12215 = (arr[j]);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12214,G__12215) : f.call(null,G__12214,G__12215));
  })();
  if(cljs.core.reduced_QMARK_(init__$3)){
  return init__$3;
  } else {
  var G__12225 = (j + (1));
  var G__12226 = init__$3;
  j = G__12225;
  init__$2 = G__12226;
  continue;
  }
  } else {
  return init__$2;
  }
  break;
  }
  })();
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12216 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12216) : cljs.core.deref.call(null,G__12216));
  } else {
  var G__12227 = (i + len);
  var G__12228 = init__$2;
  i = G__12227;
  init__$1 = G__12228;
  continue;
  }
  } else {
  return init__$1;
  }
  break;
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
  var self__ = this;
  var coll__$1 = this;
  if(typeof k === 'number'){
  return cljs.core._assoc_n(coll__$1,k,v);
  } else {
  throw (new Error("Vector's key for assoc must be a number."));
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt === (0))){
  return null;
  } else {
  if((self__.cnt <= (32))){
  return (new cljs.core.IndexedSeq(self__.tail,(0)));
  } else {
  var G__12217 = coll__$1;
  var G__12218 = cljs.core.first_array_for_longvec(coll__$1);
  var G__12219 = (0);
  var G__12220 = (0);
  return (cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4 ? cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(G__12217,G__12218,G__12219,G__12220) : cljs.core.chunked_seq.call(null,G__12217,G__12218,G__12219,G__12220));
  
  }
  }
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentVector(meta__$1,self__.cnt,self__.shift,self__.root,self__.tail,self__.__hash));
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  if(((self__.cnt - cljs.core.tail_off(coll__$1)) < (32))){
  var len = self__.tail.length;
  var new_tail = (new Array((len + (1))));
  var n__4695__auto___12229 = len;
  var i_12230 = (0);
  while(true){
  if((i_12230 < n__4695__auto___12229)){
  (new_tail[i_12230] = (self__.tail[i_12230]));
  
  var G__12231 = (i_12230 + (1));
  i_12230 = G__12231;
  continue;
  } else {
  }
  break;
  }
  
  (new_tail[len] = o);
  
  return (new cljs.core.PersistentVector(self__.meta,(self__.cnt + (1)),self__.shift,self__.root,new_tail,null));
  } else {
  var root_overflow_QMARK_ = ((self__.cnt >>> (5)) > ((1) << self__.shift));
  var new_shift = ((root_overflow_QMARK_)?(self__.shift + (5)):self__.shift);
  var new_root = ((root_overflow_QMARK_)?(function (){var n_r = cljs.core.pv_fresh_node(null);
  cljs.core.pv_aset(n_r,(0),self__.root);
  
  cljs.core.pv_aset(n_r,(1),cljs.core.new_path(null,self__.shift,(new cljs.core.VectorNode(null,self__.tail))));
  
  return n_r;
  })():cljs.core.push_tail(coll__$1,self__.shift,self__.root,(new cljs.core.VectorNode(null,self__.tail))));
  return (new cljs.core.PersistentVector(self__.meta,(self__.cnt + (1)),new_shift,new_root,[o],null));
  }
  });
  
  cljs.core.PersistentVector.prototype.call = (function() {
  var G__12232 = null;
  var G__12232__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
  });
  var G__12232__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
  });
  G__12232 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12232__2.call(this,self__,k);
  case 3:
  return G__12232__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12232.cljs$core$IFn$_invoke$arity$2 = G__12232__2;
  G__12232.cljs$core$IFn$_invoke$arity$3 = G__12232__3;
  return G__12232;
  })()
  ;
  
  cljs.core.PersistentVector.prototype.apply = (function (self__,args12207){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12207)));
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
  });
  
  cljs.core.PersistentVector.cljs$lang$type = true;
  
  cljs.core.PersistentVector.cljs$lang$ctorStr = "cljs.core/PersistentVector";
  
  cljs.core.PersistentVector.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentVector");
  });
  
  cljs.core.__GT_PersistentVector = (function __GT_PersistentVector(meta,cnt,shift,root,tail,__hash){
  return (new cljs.core.PersistentVector(meta,cnt,shift,root,tail,__hash));
  });
  
  cljs.core.PersistentVector.EMPTY_NODE = (new cljs.core.VectorNode(null,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]));
  cljs.core.PersistentVector.EMPTY = (new cljs.core.PersistentVector(null,(0),(5),cljs.core.PersistentVector.EMPTY_NODE,[],cljs.core.empty_ordered_hash));
  cljs.core.PersistentVector.fromArray = (function (xs,no_clone){
  var l = xs.length;
  var xs__$1 = ((no_clone)?xs:cljs.core.aclone(xs));
  if((l < (32))){
  return (new cljs.core.PersistentVector(null,l,(5),cljs.core.PersistentVector.EMPTY_NODE,xs__$1,null));
  } else {
  var node = xs__$1.slice((0),(32));
  var v = (new cljs.core.PersistentVector(null,(32),(5),cljs.core.PersistentVector.EMPTY_NODE,node,null));
  var i = (32);
  var out = v.cljs$core$IEditableCollection$_as_transient$arity$1(null);
  while(true){
  if((i < l)){
  var G__12233 = (i + (1));
  var G__12234 = cljs.core.conj_BANG_.cljs$core$IFn$_invoke$arity$2(out,(xs__$1[i]));
  i = G__12233;
  out = G__12234;
  continue;
  } else {
  return cljs.core.persistent_BANG_(out);
  }
  break;
  }
  }
  });
  (cljs.core.PersistentVector.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.vec = (function vec(coll){
  if(coll instanceof Array){
  return cljs.core.PersistentVector.fromArray(coll,true);
  } else {
  return cljs.core._persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj_BANG_,cljs.core._as_transient(cljs.core.PersistentVector.EMPTY),coll));
  }
  });
  /**
  * @param {...*} var_args
  */
  cljs.core.vector = (function() { 
  var vector__delegate = function (args){
  if(((args instanceof cljs.core.IndexedSeq)) && ((args.i === (0)))){
  return cljs.core.PersistentVector.fromArray(args.arr,true);
  } else {
  return cljs.core.vec(args);
  }
  };
  var vector = function (var_args){
  var args = null;
  if (arguments.length > 0) {
  var G__12235__i = 0, G__12235__a = new Array(arguments.length -  0);
  while (G__12235__i < G__12235__a.length) {G__12235__a[G__12235__i] = arguments[G__12235__i + 0]; ++G__12235__i;}
    args = new cljs.core.IndexedSeq(G__12235__a,0);
  } 
  return vector__delegate.call(this,args);};
  vector.cljs$lang$maxFixedArity = 0;
  vector.cljs$lang$applyTo = (function (arglist__12236){
  var args = cljs.core.seq(arglist__12236);
  return vector__delegate(args);
  });
  vector.cljs$core$IFn$_invoke$arity$variadic = vector__delegate;
  return vector;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.ChunkedSeq = (function (vec,node,i,off,meta,__hash){
  this.vec = vec;
  this.node = node;
  this.i = i;
  this.off = off;
  this.meta = meta;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 32375020;
  this.cljs$lang$protocol_mask$partition1$ = 1536;
  })
  cljs.core.ChunkedSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.ChunkedSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if(((self__.off + (1)) < self__.node.length)){
  var s = (function (){var G__12237 = self__.vec;
  var G__12238 = self__.node;
  var G__12239 = self__.i;
  var G__12240 = (self__.off + (1));
  return (cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4 ? cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(G__12237,G__12238,G__12239,G__12240) : cljs.core.chunked_seq.call(null,G__12237,G__12238,G__12239,G__12240));
  })();
  if((s == null)){
  return null;
  } else {
  return s;
  }
  } else {
  return cljs.core._chunked_next(coll__$1);
  }
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2((function (){var G__12241 = self__.vec;
  var G__12242 = (self__.i + self__.off);
  var G__12243 = cljs.core.count(self__.vec);
  return (cljs.core.subvec.cljs$core$IFn$_invoke$arity$3 ? cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(G__12241,G__12242,G__12243) : cljs.core.subvec.call(null,G__12241,G__12242,G__12243));
  })(),f);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3((function (){var G__12244 = self__.vec;
  var G__12245 = (self__.i + self__.off);
  var G__12246 = cljs.core.count(self__.vec);
  return (cljs.core.subvec.cljs$core$IFn$_invoke$arity$3 ? cljs.core.subvec.cljs$core$IFn$_invoke$arity$3(G__12244,G__12245,G__12246) : cljs.core.subvec.call(null,G__12244,G__12245,G__12246));
  })(),f,start);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (self__.node[self__.off]);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if(((self__.off + (1)) < self__.node.length)){
  var s = (function (){var G__12247 = self__.vec;
  var G__12248 = self__.node;
  var G__12249 = self__.i;
  var G__12250 = (self__.off + (1));
  return (cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4 ? cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(G__12247,G__12248,G__12249,G__12250) : cljs.core.chunked_seq.call(null,G__12247,G__12248,G__12249,G__12250));
  })();
  if((s == null)){
  return cljs.core.List.EMPTY;
  } else {
  return s;
  }
  } else {
  return cljs.core._chunked_rest(coll__$1);
  }
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedSeq$_chunked_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.array_chunk.cljs$core$IFn$_invoke$arity$2(self__.node,self__.off);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedSeq$_chunked_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var end = (self__.i + self__.node.length);
  if((end < cljs.core._count(self__.vec))){
  var G__12251 = self__.vec;
  var G__12252 = cljs.core.unchecked_array_for(self__.vec,end);
  var G__12253 = end;
  var G__12254 = (0);
  return (cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4 ? cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(G__12251,G__12252,G__12253,G__12254) : cljs.core.chunked_seq.call(null,G__12251,G__12252,G__12253,G__12254));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,m){
  var self__ = this;
  var coll__$1 = this;
  var G__12255 = self__.vec;
  var G__12256 = self__.node;
  var G__12257 = self__.i;
  var G__12258 = self__.off;
  var G__12259 = m;
  return (cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$5 ? cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$5(G__12255,G__12256,G__12257,G__12258,G__12259) : cljs.core.chunked_seq.call(null,G__12255,G__12256,G__12257,G__12258,G__12259));
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IChunkedNext$_chunked_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var end = (self__.i + self__.node.length);
  if((end < cljs.core._count(self__.vec))){
  var G__12260 = self__.vec;
  var G__12261 = cljs.core.unchecked_array_for(self__.vec,end);
  var G__12262 = end;
  var G__12263 = (0);
  return (cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4 ? cljs.core.chunked_seq.cljs$core$IFn$_invoke$arity$4(G__12260,G__12261,G__12262,G__12263) : cljs.core.chunked_seq.call(null,G__12260,G__12261,G__12262,G__12263));
  } else {
  return null;
  }
  });
  
  cljs.core.ChunkedSeq.cljs$lang$type = true;
  
  cljs.core.ChunkedSeq.cljs$lang$ctorStr = "cljs.core/ChunkedSeq";
  
  cljs.core.ChunkedSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ChunkedSeq");
  });
  
  cljs.core.__GT_ChunkedSeq = (function __GT_ChunkedSeq(vec,node,i,off,meta,__hash){
  return (new cljs.core.ChunkedSeq(vec,node,i,off,meta,__hash));
  });
  
  (cljs.core.ChunkedSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.chunked_seq = (function() {
  var chunked_seq = null;
  var chunked_seq__3 = (function (vec,i,off){
  return (new cljs.core.ChunkedSeq(vec,cljs.core.array_for(vec,i),i,off,null,null));
  });
  var chunked_seq__4 = (function (vec,node,i,off){
  return (new cljs.core.ChunkedSeq(vec,node,i,off,null,null));
  });
  var chunked_seq__5 = (function (vec,node,i,off,meta){
  return (new cljs.core.ChunkedSeq(vec,node,i,off,meta,null));
  });
  chunked_seq = function(vec,node,i,off,meta){
  switch(arguments.length){
  case 3:
  return chunked_seq__3.call(this,vec,node,i);
  case 4:
  return chunked_seq__4.call(this,vec,node,i,off);
  case 5:
  return chunked_seq__5.call(this,vec,node,i,off,meta);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  chunked_seq.cljs$core$IFn$_invoke$arity$3 = chunked_seq__3;
  chunked_seq.cljs$core$IFn$_invoke$arity$4 = chunked_seq__4;
  chunked_seq.cljs$core$IFn$_invoke$arity$5 = chunked_seq__5;
  return chunked_seq;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.Subvec = (function (meta,v,start,end,__hash){
  this.meta = meta;
  this.v = v;
  this.start = start;
  this.end = end;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 166617887;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.Subvec.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.Subvec.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.Subvec.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.Subvec.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(typeof k === 'number'){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(coll__$1,k,not_found);
  } else {
  return not_found;
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
  var self__ = this;
  var coll__$1 = this;
  if(((n < (0))) || ((self__.end <= (self__.start + n)))){
  return cljs.core.vector_index_out_of_bounds(n,(self__.end - self__.start));
  } else {
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,(self__.start + n));
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(((n < (0))) || ((self__.end <= (self__.start + n)))){
  return not_found;
  } else {
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(self__.v,(self__.start + n),not_found);
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (coll,n,val){
  var self__ = this;
  var coll__$1 = this;
  var v_pos = (self__.start + n);
  var G__12265 = self__.meta;
  var G__12266 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.v,v_pos,val);
  var G__12267 = self__.start;
  var G__12268 = (function (){var x__4125__auto__ = self__.end;
  var y__4126__auto__ = (v_pos + (1));
  return ((x__4125__auto__ > y__4126__auto__) ? x__4125__auto__ : y__4126__auto__);
  })();
  var G__12269 = null;
  return (cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5 ? cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5(G__12265,G__12266,G__12267,G__12268,G__12269) : cljs.core.build_subvec.call(null,G__12265,G__12266,G__12267,G__12268,G__12269));
  });
  
  cljs.core.Subvec.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.Subvec.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.Subvec(self__.meta,self__.v,self__.start,self__.end,self__.__hash));
  });
  
  cljs.core.Subvec.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (self__.end - self__.start);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,(self__.end - (1)));
  });
  
  cljs.core.Subvec.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.start === self__.end)){
  throw (new Error("Can't pop empty vector"));
  } else {
  var G__12270 = self__.meta;
  var G__12271 = self__.v;
  var G__12272 = self__.start;
  var G__12273 = (self__.end - (1));
  var G__12274 = null;
  return (cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5 ? cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5(G__12270,G__12271,G__12272,G__12273,G__12274) : cljs.core.build_subvec.call(null,G__12270,G__12271,G__12272,G__12273,G__12274));
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if(!((self__.start === self__.end))){
  return (new cljs.core.RSeq(coll__$1,((self__.end - self__.start) - (1)),null));
  } else {
  return null;
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.PersistentVector.EMPTY,self__.meta);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(coll__$1,f);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start__$1){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(coll__$1,f,start__$1);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,key,val){
  var self__ = this;
  var coll__$1 = this;
  if(typeof key === 'number'){
  return cljs.core._assoc_n(coll__$1,key,val);
  } else {
  throw (new Error("Subvec's key for assoc must be a number."));
  }
  });
  
  cljs.core.Subvec.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var subvec_seq = ((function (coll__$1){
  return (function subvec_seq(i){
  if((i === self__.end)){
  return null;
  } else {
  return cljs.core.cons(cljs.core._nth.cljs$core$IFn$_invoke$arity$2(self__.v,i),(new cljs.core.LazySeq(null,((function (coll__$1){
  return (function (){
  return subvec_seq((i + (1)));
  });})(coll__$1))
  ,null,null)));
  }
  });})(coll__$1))
  ;
  return subvec_seq(self__.start);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  var G__12276 = meta__$1;
  var G__12277 = self__.v;
  var G__12278 = self__.start;
  var G__12279 = self__.end;
  var G__12280 = self__.__hash;
  return (cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5 ? cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5(G__12276,G__12277,G__12278,G__12279,G__12280) : cljs.core.build_subvec.call(null,G__12276,G__12277,G__12278,G__12279,G__12280));
  });
  
  cljs.core.Subvec.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  var G__12281 = self__.meta;
  var G__12282 = cljs.core._assoc_n(self__.v,self__.end,o);
  var G__12283 = self__.start;
  var G__12284 = (self__.end + (1));
  var G__12285 = null;
  return (cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5 ? cljs.core.build_subvec.cljs$core$IFn$_invoke$arity$5(G__12281,G__12282,G__12283,G__12284,G__12285) : cljs.core.build_subvec.call(null,G__12281,G__12282,G__12283,G__12284,G__12285));
  });
  
  cljs.core.Subvec.prototype.call = (function() {
  var G__12286 = null;
  var G__12286__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
  });
  var G__12286__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
  });
  G__12286 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12286__2.call(this,self__,k);
  case 3:
  return G__12286__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12286.cljs$core$IFn$_invoke$arity$2 = G__12286__2;
  G__12286.cljs$core$IFn$_invoke$arity$3 = G__12286__3;
  return G__12286;
  })()
  ;
  
  cljs.core.Subvec.prototype.apply = (function (self__,args12264){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12264)));
  });
  
  cljs.core.Subvec.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$IIndexed$_nth$arity$2(null,k);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$IIndexed$_nth$arity$3(null,k,not_found);
  });
  
  cljs.core.Subvec.cljs$lang$type = true;
  
  cljs.core.Subvec.cljs$lang$ctorStr = "cljs.core/Subvec";
  
  cljs.core.Subvec.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Subvec");
  });
  
  cljs.core.__GT_Subvec = (function __GT_Subvec(meta,v,start,end,__hash){
  return (new cljs.core.Subvec(meta,v,start,end,__hash));
  });
  
  (cljs.core.Subvec.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.build_subvec = (function build_subvec(meta,v,start,end,__hash){
  while(true){
  if((v instanceof cljs.core.Subvec)){
  var G__12287 = meta;
  var G__12288 = v.v;
  var G__12289 = (v.start + start);
  var G__12290 = (v.start + end);
  var G__12291 = __hash;
  meta = G__12287;
  v = G__12288;
  start = G__12289;
  end = G__12290;
  __hash = G__12291;
  continue;
  } else {
  var c = cljs.core.count(v);
  if(((start < (0))) || ((end < (0))) || ((start > c)) || ((end > c))){
  throw (new Error("Index out of bounds"));
  } else {
  }
  
  return (new cljs.core.Subvec(meta,v,start,end,__hash));
  }
  break;
  }
  });
  /**
  * Returns a persistent vector of the items in vector from
  * start (inclusive) to end (exclusive).  If end is not supplied,
  * defaults to (count vector). This operation is O(1) and very fast, as
  * the resulting vector shares structure with the original and no
  * trimming is done.
  */
  cljs.core.subvec = (function() {
  var subvec = null;
  var subvec__2 = (function (v,start){
  return subvec.cljs$core$IFn$_invoke$arity$3(v,start,cljs.core.count(v));
  });
  var subvec__3 = (function (v,start,end){
  return cljs.core.build_subvec(null,v,start,end,null);
  });
  subvec = function(v,start,end){
  switch(arguments.length){
  case 2:
  return subvec__2.call(this,v,start);
  case 3:
  return subvec__3.call(this,v,start,end);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  subvec.cljs$core$IFn$_invoke$arity$2 = subvec__2;
  subvec.cljs$core$IFn$_invoke$arity$3 = subvec__3;
  return subvec;
  })()
  ;
  cljs.core.tv_ensure_editable = (function tv_ensure_editable(edit,node){
  if((edit === node.edit)){
  return node;
  } else {
  return (new cljs.core.VectorNode(edit,cljs.core.aclone(node.arr)));
  }
  });
  cljs.core.tv_editable_root = (function tv_editable_root(node){
  return (new cljs.core.VectorNode((function (){var obj12298 = {};
  return obj12298;
  })(),cljs.core.aclone(node.arr)));
  });
  cljs.core.tv_editable_tail = (function tv_editable_tail(tl){
  var ret = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
  cljs.core.array_copy(tl,(0),ret,(0),tl.length);
  
  return ret;
  });
  cljs.core.tv_push_tail = (function tv_push_tail(tv,level,parent,tail_node){
  var ret = cljs.core.tv_ensure_editable(tv.root.edit,parent);
  var subidx = (((tv.cnt - (1)) >>> level) & (31));
  cljs.core.pv_aset(ret,subidx,(((level === (5)))?tail_node:(function (){var child = cljs.core.pv_aget(ret,subidx);
  if(!((child == null))){
  return tv_push_tail(tv,(level - (5)),child,tail_node);
  } else {
  return cljs.core.new_path(tv.root.edit,(level - (5)),tail_node);
  }
  })()));
  
  return ret;
  });
  cljs.core.tv_pop_tail = (function tv_pop_tail(tv,level,node){
  var node__$1 = cljs.core.tv_ensure_editable(tv.root.edit,node);
  var subidx = (((tv.cnt - (2)) >>> level) & (31));
  if((level > (5))){
  var new_child = tv_pop_tail(tv,(level - (5)),cljs.core.pv_aget(node__$1,subidx));
  if(((new_child == null)) && ((subidx === (0)))){
  return null;
  } else {
  cljs.core.pv_aset(node__$1,subidx,new_child);
  
  return node__$1;
  }
  } else {
  if((subidx === (0))){
  return null;
  } else {
  cljs.core.pv_aset(node__$1,subidx,null);
  
  return node__$1;
  
  }
  }
  });
  cljs.core.unchecked_editable_array_for = (function unchecked_editable_array_for(tv,i){
  if((i >= cljs.core.tail_off(tv))){
  return tv.tail;
  } else {
  var root = tv.root;
  var node = root;
  var level = tv.shift;
  while(true){
  if((level > (0))){
  var G__12306 = cljs.core.tv_ensure_editable(root.edit,cljs.core.pv_aget(node,((i >>> level) & (31))));
  var G__12307 = (level - (5));
  node = G__12306;
  level = G__12307;
  continue;
  } else {
  return node.arr;
  }
  break;
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.TransientVector = (function (cnt,shift,root,tail){
  this.cnt = cnt;
  this.shift = shift;
  this.root = root;
  this.tail = tail;
  this.cljs$lang$protocol_mask$partition0$ = 275;
  this.cljs$lang$protocol_mask$partition1$ = 88;
  })
  cljs.core.TransientVector.prototype.call = (function() {
  var G__12311 = null;
  var G__12311__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12311__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12311 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12311__2.call(this,self__,k);
  case 3:
  return G__12311__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12311.cljs$core$IFn$_invoke$arity$2 = G__12311__2;
  G__12311.cljs$core$IFn$_invoke$arity$3 = G__12311__3;
  return G__12311;
  })()
  ;
  
  cljs.core.TransientVector.prototype.apply = (function (self__,args12308){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12308)));
  });
  
  cljs.core.TransientVector.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.TransientVector.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(typeof k === 'number'){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(coll__$1,k,not_found);
  } else {
  return not_found;
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (coll,n){
  var self__ = this;
  var coll__$1 = this;
  if(self__.root.edit){
  return (cljs.core.array_for(coll__$1,n)[(n & (31))]);
  } else {
  throw (new Error("nth after persistent!"));
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (coll,n,not_found){
  var self__ = this;
  var coll__$1 = this;
  if((((0) <= n)) && ((n < self__.cnt))){
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$2(coll__$1,n);
  } else {
  return not_found;
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if(self__.root.edit){
  return self__.cnt;
  } else {
  throw (new Error("count after persistent!"));
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ITransientVector$_assoc_n_BANG_$arity$3 = (function (tcoll,n,val){
  var self__ = this;
  var tcoll__$1 = this;
  if(self__.root.edit){
  if((((0) <= n)) && ((n < self__.cnt))){
  if((cljs.core.tail_off(tcoll__$1) <= n)){
  (self__.tail[(n & (31))] = val);
  
  return tcoll__$1;
  } else {
  var new_root = ((function (tcoll__$1){
  return (function go(level,node){
  var node__$1 = cljs.core.tv_ensure_editable(self__.root.edit,node);
  if((level === (0))){
  cljs.core.pv_aset(node__$1,(n & (31)),val);
  
  return node__$1;
  } else {
  var subidx = ((n >>> level) & (31));
  cljs.core.pv_aset(node__$1,subidx,go((level - (5)),cljs.core.pv_aget(node__$1,subidx)));
  
  return node__$1;
  }
  });})(tcoll__$1))
  .call(null,self__.shift,self__.root);
  self__.root = new_root;
  
  return tcoll__$1;
  }
  } else {
  if((n === self__.cnt)){
  return cljs.core._conj_BANG_(tcoll__$1,val);
  } else {
  throw (new Error([cljs.core.str("Index "),cljs.core.str(n),cljs.core.str(" out of bounds for TransientVector of length"),cljs.core.str(self__.cnt)].join('')));
  
  }
  }
  } else {
  throw (new Error("assoc! after persistent!"));
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ITransientVector$_pop_BANG_$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  if(self__.root.edit){
  if((self__.cnt === (0))){
  throw (new Error("Can't pop empty vector"));
  } else {
  if(((1) === self__.cnt)){
  self__.cnt = (0);
  
  return tcoll__$1;
  } else {
  if((((self__.cnt - (1)) & (31)) > (0))){
  self__.cnt = (self__.cnt - (1));
  
  return tcoll__$1;
  } else {
  var new_tail = cljs.core.unchecked_editable_array_for(tcoll__$1,(self__.cnt - (2)));
  var new_root = (function (){var nr = cljs.core.tv_pop_tail(tcoll__$1,self__.shift,self__.root);
  if(!((nr == null))){
  return nr;
  } else {
  return (new cljs.core.VectorNode(self__.root.edit,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]));
  }
  })();
  if((((5) < self__.shift)) && ((cljs.core.pv_aget(new_root,(1)) == null))){
  var new_root__$1 = cljs.core.tv_ensure_editable(self__.root.edit,cljs.core.pv_aget(new_root,(0)));
  self__.root = new_root__$1;
  
  self__.shift = (self__.shift - (5));
  
  self__.cnt = (self__.cnt - (1));
  
  self__.tail = new_tail;
  
  return tcoll__$1;
  } else {
  self__.root = new_root;
  
  self__.cnt = (self__.cnt - (1));
  
  self__.tail = new_tail;
  
  return tcoll__$1;
  }
  
  }
  }
  }
  } else {
  throw (new Error("pop! after persistent!"));
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = (function (tcoll,key,val){
  var self__ = this;
  var tcoll__$1 = this;
  if(typeof key === 'number'){
  return cljs.core._assoc_n_BANG_(tcoll__$1,key,val);
  } else {
  throw (new Error("TransientVector's key for assoc! must be a number."));
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,o){
  var self__ = this;
  var tcoll__$1 = this;
  if(self__.root.edit){
  if(((self__.cnt - cljs.core.tail_off(tcoll__$1)) < (32))){
  (self__.tail[(self__.cnt & (31))] = o);
  
  self__.cnt = (self__.cnt + (1));
  
  return tcoll__$1;
  } else {
  var tail_node = (new cljs.core.VectorNode(self__.root.edit,self__.tail));
  var new_tail = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
  (new_tail[(0)] = o);
  
  self__.tail = new_tail;
  
  if(((self__.cnt >>> (5)) > ((1) << self__.shift))){
  var new_root_array = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
  var new_shift = (self__.shift + (5));
  (new_root_array[(0)] = self__.root);
  
  (new_root_array[(1)] = cljs.core.new_path(self__.root.edit,self__.shift,tail_node));
  
  self__.root = (new cljs.core.VectorNode(self__.root.edit,new_root_array));
  
  self__.shift = new_shift;
  
  self__.cnt = (self__.cnt + (1));
  
  return tcoll__$1;
  } else {
  var new_root = cljs.core.tv_push_tail(tcoll__$1,self__.shift,self__.root,tail_node);
  self__.root = new_root;
  
  self__.cnt = (self__.cnt + (1));
  
  return tcoll__$1;
  }
  }
  } else {
  throw (new Error("conj! after persistent!"));
  }
  });
  
  cljs.core.TransientVector.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  if(self__.root.edit){
  self__.root.edit = null;
  
  var len = (self__.cnt - cljs.core.tail_off(tcoll__$1));
  var trimmed_tail = (new Array(len));
  cljs.core.array_copy(self__.tail,(0),trimmed_tail,(0),len);
  
  return (new cljs.core.PersistentVector(null,self__.cnt,self__.shift,self__.root,trimmed_tail,null));
  } else {
  throw (new Error("persistent! called twice"));
  }
  });
  
  cljs.core.TransientVector.cljs$lang$type = true;
  
  cljs.core.TransientVector.cljs$lang$ctorStr = "cljs.core/TransientVector";
  
  cljs.core.TransientVector.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/TransientVector");
  });
  
  cljs.core.__GT_TransientVector = (function __GT_TransientVector(cnt,shift,root,tail){
  return (new cljs.core.TransientVector(cnt,shift,root,tail));
  });
  
  
  /**
  * @constructor
  */
  cljs.core.PersistentQueueSeq = (function (meta,front,rear,__hash){
  this.meta = meta;
  this.front = front;
  this.rear = rear;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 31850572;
  })
  cljs.core.PersistentQueueSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentQueueSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.first(self__.front);
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var temp__4124__auto__ = cljs.core.next(self__.front);
  if(temp__4124__auto__){
  var f1 = temp__4124__auto__;
  return (new cljs.core.PersistentQueueSeq(self__.meta,f1,self__.rear,null));
  } else {
  if((self__.rear == null)){
  return cljs.core._empty(coll__$1);
  } else {
  return (new cljs.core.PersistentQueueSeq(self__.meta,self__.rear,null,null));
  }
  }
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentQueueSeq(meta__$1,self__.front,self__.rear,self__.__hash));
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.PersistentQueueSeq.cljs$lang$type = true;
  
  cljs.core.PersistentQueueSeq.cljs$lang$ctorStr = "cljs.core/PersistentQueueSeq";
  
  cljs.core.PersistentQueueSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentQueueSeq");
  });
  
  cljs.core.__GT_PersistentQueueSeq = (function __GT_PersistentQueueSeq(meta,front,rear,__hash){
  return (new cljs.core.PersistentQueueSeq(meta,front,rear,__hash));
  });
  
  (cljs.core.PersistentQueueSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.PersistentQueue = (function (meta,count,front,rear,__hash){
  this.meta = meta;
  this.count = count;
  this.front = front;
  this.rear = rear;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 31858766;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.PersistentQueue.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentQueue.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentQueue(self__.meta,self__.count,self__.front,self__.rear,self__.__hash));
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.count;
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IStack$_peek$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.first(self__.front);
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IStack$_pop$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.truth_(self__.front)){
  var temp__4124__auto__ = cljs.core.next(self__.front);
  if(temp__4124__auto__){
  var f1 = temp__4124__auto__;
  return (new cljs.core.PersistentQueue(self__.meta,(self__.count - (1)),f1,self__.rear,null));
  } else {
  return (new cljs.core.PersistentQueue(self__.meta,(self__.count - (1)),cljs.core.seq(self__.rear),cljs.core.PersistentVector.EMPTY,null));
  }
  } else {
  return coll__$1;
  }
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.PersistentQueue.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.first(self__.front);
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.rest(cljs.core.seq(coll__$1));
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var rear__$1 = cljs.core.seq(self__.rear);
  if(cljs.core.truth_((function (){var or__3808__auto__ = self__.front;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return rear__$1;
  }
  })())){
  return (new cljs.core.PersistentQueueSeq(null,self__.front,cljs.core.seq(rear__$1),null));
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentQueue(meta__$1,self__.count,self__.front,self__.rear,self__.__hash));
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.truth_(self__.front)){
  return (new cljs.core.PersistentQueue(self__.meta,(self__.count + (1)),self__.front,cljs.core.conj.cljs$core$IFn$_invoke$arity$2((function (){var or__3808__auto__ = self__.rear;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.PersistentVector.EMPTY;
  }
  })(),o),null));
  } else {
  return (new cljs.core.PersistentQueue(self__.meta,(self__.count + (1)),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(self__.front,o),cljs.core.PersistentVector.EMPTY,null));
  }
  });
  
  cljs.core.PersistentQueue.cljs$lang$type = true;
  
  cljs.core.PersistentQueue.cljs$lang$ctorStr = "cljs.core/PersistentQueue";
  
  cljs.core.PersistentQueue.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentQueue");
  });
  
  cljs.core.__GT_PersistentQueue = (function __GT_PersistentQueue(meta,count,front,rear,__hash){
  return (new cljs.core.PersistentQueue(meta,count,front,rear,__hash));
  });
  
  cljs.core.PersistentQueue.EMPTY = (new cljs.core.PersistentQueue(null,(0),null,cljs.core.PersistentVector.EMPTY,cljs.core.empty_ordered_hash));
  (cljs.core.PersistentQueue.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.NeverEquiv = (function (){
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 2097152;
  })
  cljs.core.NeverEquiv.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (o,other){
  var self__ = this;
  var o__$1 = this;
  return false;
  });
  
  cljs.core.NeverEquiv.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.NeverEquiv.cljs$lang$type = true;
  
  cljs.core.NeverEquiv.cljs$lang$ctorStr = "cljs.core/NeverEquiv";
  
  cljs.core.NeverEquiv.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/NeverEquiv");
  });
  
  cljs.core.__GT_NeverEquiv = (function __GT_NeverEquiv(){
  return (new cljs.core.NeverEquiv());
  });
  
  cljs.core.never_equiv = (new cljs.core.NeverEquiv());
  /**
  * Assumes y is a map. Returns true if x equals y, otherwise returns
  * false.
  */
  cljs.core.equiv_map = (function equiv_map(x,y){
  return cljs.core.boolean$(((cljs.core.map_QMARK_(y))?(((cljs.core.count(x) === cljs.core.count(y)))?cljs.core.every_QMARK_(cljs.core.identity,cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (xkv){
  return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(y,cljs.core.first(xkv),cljs.core.never_equiv),cljs.core.second(xkv));
  }),x)):null):null));
  });
  cljs.core.scan_array = (function scan_array(incr,k,array){
  var len = array.length;
  var i = (0);
  while(true){
  if((i < len)){
  if((k === (array[i]))){
  return i;
  } else {
  var G__12312 = (i + incr);
  i = G__12312;
  continue;
  }
  } else {
  return null;
  }
  break;
  }
  });
  cljs.core.obj_map_compare_keys = (function obj_map_compare_keys(a,b){
  var a__$1 = cljs.core.hash(a);
  var b__$1 = cljs.core.hash(b);
  if((a__$1 < b__$1)){
  return (-1);
  } else {
  if((a__$1 > b__$1)){
  return (1);
  } else {
  return (0);
  
  }
  }
  });
  cljs.core.obj_map__GT_hash_map = (function obj_map__GT_hash_map(m,k,v){
  var ks = m.keys;
  var len = ks.length;
  var so = m.strobj;
  var mm = cljs.core.meta(m);
  var i = (0);
  var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
  while(true){
  if((i < len)){
  var k__$1 = (ks[i]);
  var G__12313 = (i + (1));
  var G__12314 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,k__$1,(so[k__$1]));
  i = G__12313;
  out = G__12314;
  continue;
  } else {
  return cljs.core.with_meta(cljs.core.persistent_BANG_(cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,k,v)),mm);
  }
  break;
  }
  });
  cljs.core.obj_clone = (function obj_clone(obj,ks){
  var new_obj = (function (){var obj12318 = {};
  return obj12318;
  })();
  var l = ks.length;
  var i_12319 = (0);
  while(true){
  if((i_12319 < l)){
  var k_12320 = (ks[i_12319]);
  (new_obj[k_12320] = (obj[k_12320]));
  
  var G__12321 = (i_12319 + (1));
  i_12319 = G__12321;
  continue;
  } else {
  }
  break;
  }
  
  return new_obj;
  });
  
  /**
  * @constructor
  */
  cljs.core.ObjMap = (function (meta,keys,strobj,update_count,__hash){
  this.meta = meta;
  this.keys = keys;
  this.strobj = strobj;
  this.update_count = update_count;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 16123663;
  this.cljs$lang$protocol_mask$partition1$ = 4;
  })
  cljs.core.ObjMap.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.ObjMap.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.ObjMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.ObjMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.truth_((function (){var and__3796__auto__ = (function (){var G__12325 = k;
  return goog.isString(G__12325);
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  return !((cljs.core.scan_array((1),k,self__.keys) == null));
  } else {
  return and__3796__auto__;
  }
  })())){
  return (self__.strobj[k]);
  } else {
  return not_found;
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
  var self__ = this;
  var coll__$1 = this;
  var len = self__.keys.length;
  var keys__$1 = self__.keys.sort(cljs.core.obj_map_compare_keys);
  var init__$1 = init;
  while(true){
  if(cljs.core.seq(keys__$1)){
  var k = cljs.core.first(keys__$1);
  var init__$2 = (function (){var G__12326 = init__$1;
  var G__12327 = k;
  var G__12328 = (self__.strobj[k]);
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12326,G__12327,G__12328) : f.call(null,G__12326,G__12327,G__12328));
  })();
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12329 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12329) : cljs.core.deref.call(null,G__12329));
  } else {
  var G__12335 = cljs.core.rest(keys__$1);
  var G__12336 = init__$2;
  keys__$1 = G__12335;
  init__$1 = G__12336;
  continue;
  }
  } else {
  return init__$1;
  }
  break;
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.ObjMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.keys.length;
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_map(coll__$1,other);
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.transient$(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentHashMap.EMPTY,coll__$1));
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.ObjMap.EMPTY,self__.meta);
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.truth_((function (){var and__3796__auto__ = (function (){var G__12331 = k;
  return goog.isString(G__12331);
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  return !((cljs.core.scan_array((1),k,self__.keys) == null));
  } else {
  return and__3796__auto__;
  }
  })())){
  var new_keys = cljs.core.aclone(self__.keys);
  var new_strobj = cljs.core.obj_clone(self__.strobj,self__.keys);
  new_keys.splice(cljs.core.scan_array((1),k,new_keys),(1));
  
  delete new_strobj[k];
  
  return (new cljs.core.ObjMap(self__.meta,new_keys,new_strobj,(self__.update_count + (1)),null));
  } else {
  return coll__$1;
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.truth_((function (){var G__12332 = k;
  return goog.isString(G__12332);
  })())){
  if(((self__.update_count > cljs.core.ObjMap.HASHMAP_THRESHOLD)) || ((self__.keys.length >= cljs.core.ObjMap.HASHMAP_THRESHOLD))){
  return cljs.core.obj_map__GT_hash_map(coll__$1,k,v);
  } else {
  if(!((cljs.core.scan_array((1),k,self__.keys) == null))){
  var new_strobj = cljs.core.obj_clone(self__.strobj,self__.keys);
  (new_strobj[k] = v);
  
  return (new cljs.core.ObjMap(self__.meta,self__.keys,new_strobj,(self__.update_count + (1)),null));
  } else {
  var new_strobj = cljs.core.obj_clone(self__.strobj,self__.keys);
  var new_keys = cljs.core.aclone(self__.keys);
  (new_strobj[k] = v);
  
  new_keys.push(k);
  
  return (new cljs.core.ObjMap(self__.meta,new_keys,new_strobj,(self__.update_count + (1)),null));
  }
  }
  } else {
  return cljs.core.obj_map__GT_hash_map(coll__$1,k,v);
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.truth_((function (){var and__3796__auto__ = (function (){var G__12334 = k;
  return goog.isString(G__12334);
  })();
  if(cljs.core.truth_(and__3796__auto__)){
  return !((cljs.core.scan_array((1),k,self__.keys) == null));
  } else {
  return and__3796__auto__;
  }
  })())){
  return true;
  } else {
  return false;
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.keys.length > (0))){
  return cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (coll__$1){
  return (function (p1__12322_SHARP_){
  return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[p1__12322_SHARP_,(self__.strobj[p1__12322_SHARP_])],null));
  });})(coll__$1))
  ,self__.keys.sort(cljs.core.obj_map_compare_keys));
  } else {
  return null;
  }
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.ObjMap(meta__$1,self__.keys,self__.strobj,self__.update_count,self__.__hash));
  });
  
  cljs.core.ObjMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.vector_QMARK_(entry)){
  return cljs.core._assoc(coll__$1,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
  } else {
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,coll__$1,entry);
  }
  });
  
  cljs.core.ObjMap.prototype.call = (function() {
  var G__12337 = null;
  var G__12337__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12337__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12337 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12337__2.call(this,self__,k);
  case 3:
  return G__12337__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12337.cljs$core$IFn$_invoke$arity$2 = G__12337__2;
  G__12337.cljs$core$IFn$_invoke$arity$3 = G__12337__3;
  return G__12337;
  })()
  ;
  
  cljs.core.ObjMap.prototype.apply = (function (self__,args12323){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12323)));
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.ObjMap.cljs$lang$type = true;
  
  cljs.core.ObjMap.cljs$lang$ctorStr = "cljs.core/ObjMap";
  
  cljs.core.ObjMap.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ObjMap");
  });
  
  cljs.core.__GT_ObjMap = (function __GT_ObjMap(meta,keys,strobj,update_count,__hash){
  return (new cljs.core.ObjMap(meta,keys,strobj,update_count,__hash));
  });
  
  cljs.core.ObjMap.EMPTY = (new cljs.core.ObjMap(null,[],(function (){var obj12339 = {};
  return obj12339;
  })(),(0),cljs.core.empty_unordered_hash));
  cljs.core.ObjMap.HASHMAP_THRESHOLD = (8);
  cljs.core.ObjMap.fromObject = (function (ks,obj){
  return (new cljs.core.ObjMap(null,ks,obj,(0),null));
  });
  
  /**
  * @constructor
  */
  cljs.core.ES6EntriesIterator = (function (s){
  this.s = s;
  })
  cljs.core.ES6EntriesIterator.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  if(!((self__.s == null))){
  var vec__12340 = cljs.core.first(self__.s);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12340,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12340,(1),null);
  self__.s = cljs.core.next(self__.s);
  
  return {"done": false, "value": [k,v]};
  } else {
  return {"done": true, "value": null};
  }
  });
  
  cljs.core.ES6EntriesIterator.cljs$lang$type = true;
  
  cljs.core.ES6EntriesIterator.cljs$lang$ctorStr = "cljs.core/ES6EntriesIterator";
  
  cljs.core.ES6EntriesIterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ES6EntriesIterator");
  });
  
  cljs.core.__GT_ES6EntriesIterator = (function __GT_ES6EntriesIterator(s){
  return (new cljs.core.ES6EntriesIterator(s));
  });
  
  cljs.core.es6_entries_iterator = (function es6_entries_iterator(coll){
  return (new cljs.core.ES6EntriesIterator(cljs.core.seq(coll)));
  });
  
  /**
  * @constructor
  */
  cljs.core.ES6SetEntriesIterator = (function (s){
  this.s = s;
  })
  cljs.core.ES6SetEntriesIterator.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  if(!((self__.s == null))){
  var x = cljs.core.first(self__.s);
  self__.s = cljs.core.next(self__.s);
  
  return {"done": false, "value": [x,x]};
  } else {
  return {"done": true, "value": null};
  }
  });
  
  cljs.core.ES6SetEntriesIterator.cljs$lang$type = true;
  
  cljs.core.ES6SetEntriesIterator.cljs$lang$ctorStr = "cljs.core/ES6SetEntriesIterator";
  
  cljs.core.ES6SetEntriesIterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ES6SetEntriesIterator");
  });
  
  cljs.core.__GT_ES6SetEntriesIterator = (function __GT_ES6SetEntriesIterator(s){
  return (new cljs.core.ES6SetEntriesIterator(s));
  });
  
  cljs.core.es6_set_entries_iterator = (function es6_set_entries_iterator(coll){
  return (new cljs.core.ES6SetEntriesIterator(cljs.core.seq(coll)));
  });
  cljs.core.array_map_index_of_nil_QMARK_ = (function array_map_index_of_nil_QMARK_(arr,m,k){
  var len = arr.length;
  var i = (0);
  while(true){
  if((len <= i)){
  return (-1);
  } else {
  if(((arr[i]) == null)){
  return i;
  } else {
  var G__12341 = (i + (2));
  i = G__12341;
  continue;
  
  }
  }
  break;
  }
  });
  cljs.core.array_map_index_of_keyword_QMARK_ = (function array_map_index_of_keyword_QMARK_(arr,m,k){
  var len = arr.length;
  var kstr = k.fqn;
  var i = (0);
  while(true){
  if((len <= i)){
  return (-1);
  } else {
  if((function (){var k_SINGLEQUOTE_ = (arr[i]);
  return ((k_SINGLEQUOTE_ instanceof cljs.core.Keyword)) && ((kstr === k_SINGLEQUOTE_.fqn));
  })()){
  return i;
  } else {
  var G__12342 = (i + (2));
  i = G__12342;
  continue;
  
  }
  }
  break;
  }
  });
  cljs.core.array_map_index_of_symbol_QMARK_ = (function array_map_index_of_symbol_QMARK_(arr,m,k){
  var len = arr.length;
  var kstr = k.str;
  var i = (0);
  while(true){
  if((len <= i)){
  return (-1);
  } else {
  if((function (){var k_SINGLEQUOTE_ = (arr[i]);
  return ((k_SINGLEQUOTE_ instanceof cljs.core.Symbol)) && ((kstr === k_SINGLEQUOTE_.str));
  })()){
  return i;
  } else {
  var G__12343 = (i + (2));
  i = G__12343;
  continue;
  
  }
  }
  break;
  }
  });
  cljs.core.array_map_index_of_identical_QMARK_ = (function array_map_index_of_identical_QMARK_(arr,m,k){
  var len = arr.length;
  var i = (0);
  while(true){
  if((len <= i)){
  return (-1);
  } else {
  if((k === (arr[i]))){
  return i;
  } else {
  var G__12344 = (i + (2));
  i = G__12344;
  continue;
  
  }
  }
  break;
  }
  });
  cljs.core.array_map_index_of_equiv_QMARK_ = (function array_map_index_of_equiv_QMARK_(arr,m,k){
  var len = arr.length;
  var i = (0);
  while(true){
  if((len <= i)){
  return (-1);
  } else {
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(k,(arr[i]))){
  return i;
  } else {
  var G__12345 = (i + (2));
  i = G__12345;
  continue;
  
  }
  }
  break;
  }
  });
  cljs.core.array_map_index_of = (function array_map_index_of(m,k){
  var arr = m.arr;
  if((k instanceof cljs.core.Keyword)){
  return cljs.core.array_map_index_of_keyword_QMARK_(arr,m,k);
  } else {
  if(cljs.core.truth_((function (){var or__3808__auto__ = (function (){var G__12349 = k;
  return goog.isString(G__12349);
  })();
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return typeof k === 'number';
  }
  })())){
  return cljs.core.array_map_index_of_identical_QMARK_(arr,m,k);
  } else {
  if((k instanceof cljs.core.Symbol)){
  return cljs.core.array_map_index_of_symbol_QMARK_(arr,m,k);
  } else {
  if((k == null)){
  return cljs.core.array_map_index_of_nil_QMARK_(arr,m,k);
  } else {
  return cljs.core.array_map_index_of_equiv_QMARK_(arr,m,k);
  
  }
  }
  }
  }
  });
  cljs.core.array_map_extend_kv = (function array_map_extend_kv(m,k,v){
  var arr = m.arr;
  var l = arr.length;
  var narr = (new Array((l + (2))));
  var i_12350 = (0);
  while(true){
  if((i_12350 < l)){
  (narr[i_12350] = (arr[i_12350]));
  
  var G__12351 = (i_12350 + (1));
  i_12350 = G__12351;
  continue;
  } else {
  }
  break;
  }
  
  (narr[l] = k);
  
  (narr[(l + (1))] = v);
  
  return narr;
  });
  
  /**
  * @constructor
  */
  cljs.core.PersistentArrayMapSeq = (function (arr,i,_meta){
  this.arr = arr;
  this.i = i;
  this._meta = _meta;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374990;
  })
  cljs.core.PersistentArrayMapSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__._meta;
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.i < (self__.arr.length - (2)))){
  return (new cljs.core.PersistentArrayMapSeq(self__.arr,(self__.i + (2)),self__._meta));
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return ((self__.arr.length - self__.i) / (2));
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.hash_ordered_coll(coll__$1);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__._meta);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(self__.arr[self__.i]),(self__.arr[(self__.i + (1))])], null);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.i < (self__.arr.length - (2)))){
  return (new cljs.core.PersistentArrayMapSeq(self__.arr,(self__.i + (2)),self__._meta));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentArrayMapSeq(self__.arr,self__.i,new_meta));
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.PersistentArrayMapSeq.cljs$lang$type = true;
  
  cljs.core.PersistentArrayMapSeq.cljs$lang$ctorStr = "cljs.core/PersistentArrayMapSeq";
  
  cljs.core.PersistentArrayMapSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentArrayMapSeq");
  });
  
  cljs.core.__GT_PersistentArrayMapSeq = (function __GT_PersistentArrayMapSeq(arr,i,_meta){
  return (new cljs.core.PersistentArrayMapSeq(arr,i,_meta));
  });
  
  (cljs.core.PersistentArrayMapSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.persistent_array_map_seq = (function persistent_array_map_seq(arr,i,_meta){
  if((i <= (arr.length - (2)))){
  return (new cljs.core.PersistentArrayMapSeq(arr,i,_meta));
  } else {
  return null;
  }
  });
  
  
  /**
  * @constructor
  */
  cljs.core.PersistentArrayMapIterator = (function (arr,i,cnt){
  this.arr = arr;
  this.i = i;
  this.cnt = cnt;
  })
  cljs.core.PersistentArrayMapIterator.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  return (self__.i < self__.cnt);
  });
  
  cljs.core.PersistentArrayMapIterator.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  var ret = new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(self__.arr[self__.i]),(self__.arr[(self__.i + (1))])], null);
  self__.i = (self__.i + (2));
  
  return ret;
  });
  
  cljs.core.PersistentArrayMapIterator.cljs$lang$type = true;
  
  cljs.core.PersistentArrayMapIterator.cljs$lang$ctorStr = "cljs.core/PersistentArrayMapIterator";
  
  cljs.core.PersistentArrayMapIterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentArrayMapIterator");
  });
  
  cljs.core.__GT_PersistentArrayMapIterator = (function __GT_PersistentArrayMapIterator(arr,i,cnt){
  return (new cljs.core.PersistentArrayMapIterator(arr,i,cnt));
  });
  
  
  /**
  * @constructor
  */
  cljs.core.PersistentArrayMap = (function (meta,cnt,arr,__hash){
  this.meta = meta;
  this.cnt = cnt;
  this.arr = arr;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 16647951;
  this.cljs$lang$protocol_mask$partition1$ = 8196;
  })
  cljs.core.PersistentArrayMap.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentArrayMap.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentArrayMap.prototype.keys = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator((function (){var G__12353 = coll;
  return (cljs.core.keys.cljs$core$IFn$_invoke$arity$1 ? cljs.core.keys.cljs$core$IFn$_invoke$arity$1(G__12353) : cljs.core.keys.call(null,G__12353));
  })());
  });
  
  cljs.core.PersistentArrayMap.prototype.entries = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_entries_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentArrayMap.prototype.values = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator((function (){var G__12354 = coll;
  return (cljs.core.vals.cljs$core$IFn$_invoke$arity$1 ? cljs.core.vals.cljs$core$IFn$_invoke$arity$1(G__12354) : cljs.core.vals.call(null,G__12354));
  })());
  });
  
  cljs.core.PersistentArrayMap.prototype.has = (function (k){
  var self__ = this;
  var coll = this;
  return cljs.core.contains_QMARK_(coll,k);
  });
  
  cljs.core.PersistentArrayMap.prototype.get = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentArrayMap.prototype.forEach = (function (f){
  var self__ = this;
  var coll = this;
  var seq__12355 = cljs.core.seq(coll);
  var chunk__12356 = null;
  var count__12357 = (0);
  var i__12358 = (0);
  while(true){
  if((i__12358 < count__12357)){
  var vec__12359 = chunk__12356.cljs$core$IIndexed$_nth$arity$2(null,i__12358);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12359,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12359,(1),null);
  var G__12360_12373 = v;
  var G__12361_12374 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12360_12373,G__12361_12374) : f.call(null,G__12360_12373,G__12361_12374));
  
  var G__12375 = seq__12355;
  var G__12376 = chunk__12356;
  var G__12377 = count__12357;
  var G__12378 = (i__12358 + (1));
  seq__12355 = G__12375;
  chunk__12356 = G__12376;
  count__12357 = G__12377;
  i__12358 = G__12378;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__12355);
  if(temp__4126__auto__){
  var seq__12355__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__12355__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__12355__$1);
  var G__12379 = cljs.core.chunk_rest(seq__12355__$1);
  var G__12380 = c__4595__auto__;
  var G__12381 = cljs.core.count(c__4595__auto__);
  var G__12382 = (0);
  seq__12355 = G__12379;
  chunk__12356 = G__12380;
  count__12357 = G__12381;
  i__12358 = G__12382;
  continue;
  } else {
  var vec__12362 = cljs.core.first(seq__12355__$1);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12362,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12362,(1),null);
  var G__12363_12383 = v;
  var G__12364_12384 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12363_12383,G__12364_12384) : f.call(null,G__12363_12383,G__12364_12384));
  
  var G__12385 = cljs.core.next(seq__12355__$1);
  var G__12386 = null;
  var G__12387 = (0);
  var G__12388 = (0);
  seq__12355 = G__12385;
  chunk__12356 = G__12386;
  count__12357 = G__12387;
  i__12358 = G__12388;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  var idx = cljs.core.array_map_index_of(coll__$1,k);
  if((idx === (-1))){
  return not_found;
  } else {
  return (self__.arr[(idx + (1))]);
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
  var self__ = this;
  var coll__$1 = this;
  var len = self__.arr.length;
  var i = (0);
  var init__$1 = init;
  while(true){
  if((i < len)){
  var init__$2 = (function (){var G__12365 = init__$1;
  var G__12366 = (self__.arr[i]);
  var G__12367 = (self__.arr[(i + (1))]);
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12365,G__12366,G__12367) : f.call(null,G__12365,G__12366,G__12367));
  })();
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12368 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12368) : cljs.core.deref.call(null,G__12368));
  } else {
  var G__12389 = (i + (2));
  var G__12390 = init__$2;
  i = G__12389;
  init__$1 = G__12390;
  continue;
  }
  } else {
  return init__$1;
  }
  break;
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IIterable$ = true;
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return (new cljs.core.PersistentArrayMapIterator(self__.arr,(0),(self__.cnt * (2))));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.PersistentArrayMap(self__.meta,self__.cnt,self__.arr,self__.__hash));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.cnt;
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  if((function (){var G__12369 = other;
  if(G__12369){
  var bit__4482__auto__ = (G__12369.cljs$lang$protocol_mask$partition0$ & (1024));
  if((bit__4482__auto__) || (G__12369.cljs$core$IMap$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  var alen = self__.arr.length;
  var other__$1 = other;
  if((self__.cnt === other__$1.cljs$core$ICounted$_count$arity$1(null))){
  var i = (0);
  while(true){
  if((i < alen)){
  var v = other__$1.cljs$core$ILookup$_lookup$arity$3(null,(self__.arr[i]),cljs.core.lookup_sentinel);
  if(!((v === cljs.core.lookup_sentinel))){
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((self__.arr[(i + (1))]),v)){
  var G__12391 = (i + (2));
  i = G__12391;
  continue;
  } else {
  return false;
  }
  } else {
  return false;
  }
  } else {
  return true;
  }
  break;
  }
  } else {
  return false;
  }
  } else {
  return cljs.core.equiv_map(coll__$1,other);
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.TransientArrayMap((function (){var obj12371 = {};
  return obj12371;
  })(),self__.arr.length,cljs.core.aclone(self__.arr)));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._with_meta(cljs.core.PersistentArrayMap.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  var idx = cljs.core.array_map_index_of(coll__$1,k);
  if((idx >= (0))){
  var len = self__.arr.length;
  var new_len = (len - (2));
  if((new_len === (0))){
  return cljs.core._empty(coll__$1);
  } else {
  var new_arr = (new Array(new_len));
  var s = (0);
  var d = (0);
  while(true){
  if((s >= len)){
  return (new cljs.core.PersistentArrayMap(self__.meta,(self__.cnt - (1)),new_arr,null));
  } else {
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(k,(self__.arr[s]))){
  var G__12392 = (s + (2));
  var G__12393 = d;
  s = G__12392;
  d = G__12393;
  continue;
  } else {
  (new_arr[d] = (self__.arr[s]));
  
  (new_arr[(d + (1))] = (self__.arr[(s + (1))]));
  
  var G__12394 = (s + (2));
  var G__12395 = (d + (2));
  s = G__12394;
  d = G__12395;
  continue;
  
  }
  }
  break;
  }
  }
  } else {
  return coll__$1;
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
  var self__ = this;
  var coll__$1 = this;
  var idx = cljs.core.array_map_index_of(coll__$1,k);
  if((idx === (-1))){
  if((self__.cnt < cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD)){
  var arr__$1 = cljs.core.array_map_extend_kv(coll__$1,k,v);
  return (new cljs.core.PersistentArrayMap(self__.meta,(self__.cnt + (1)),arr__$1,null));
  } else {
  return cljs.core._with_meta(cljs.core._assoc(cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentHashMap.EMPTY,coll__$1),k,v),self__.meta);
  }
  } else {
  if((v === (self__.arr[(idx + (1))]))){
  return coll__$1;
  } else {
  var arr__$1 = (function (){var G__12372 = cljs.core.aclone(self__.arr);
  (G__12372[(idx + (1))] = v);
  
  return G__12372;
  })();
  return (new cljs.core.PersistentArrayMap(self__.meta,self__.cnt,arr__$1,null));
  
  }
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return !((cljs.core.array_map_index_of(coll__$1,k) === (-1)));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.persistent_array_map_seq(self__.arr,(0),null);
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentArrayMap(meta__$1,self__.cnt,self__.arr,self__.__hash));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.vector_QMARK_(entry)){
  return cljs.core._assoc(coll__$1,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
  } else {
  var ret = coll__$1;
  var es = cljs.core.seq(entry);
  while(true){
  if((es == null)){
  return ret;
  } else {
  var e = cljs.core.first(es);
  if(cljs.core.vector_QMARK_(e)){
  var G__12396 = cljs.core._assoc(ret,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(1)));
  var G__12397 = cljs.core.next(es);
  ret = G__12396;
  es = G__12397;
  continue;
  } else {
  throw (new Error("conj on a map takes map entries or seqables of map entries"));
  }
  }
  break;
  }
  }
  });
  
  cljs.core.PersistentArrayMap.prototype.call = (function() {
  var G__12398 = null;
  var G__12398__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12398__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12398 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12398__2.call(this,self__,k);
  case 3:
  return G__12398__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12398.cljs$core$IFn$_invoke$arity$2 = G__12398__2;
  G__12398.cljs$core$IFn$_invoke$arity$3 = G__12398__3;
  return G__12398;
  })()
  ;
  
  cljs.core.PersistentArrayMap.prototype.apply = (function (self__,args12352){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12352)));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.PersistentArrayMap.cljs$lang$type = true;
  
  cljs.core.PersistentArrayMap.cljs$lang$ctorStr = "cljs.core/PersistentArrayMap";
  
  cljs.core.PersistentArrayMap.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentArrayMap");
  });
  
  cljs.core.__GT_PersistentArrayMap = (function __GT_PersistentArrayMap(meta,cnt,arr,__hash){
  return (new cljs.core.PersistentArrayMap(meta,cnt,arr,__hash));
  });
  
  cljs.core.PersistentArrayMap.EMPTY = (new cljs.core.PersistentArrayMap(null,(0),[],cljs.core.empty_unordered_hash));
  cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD = (8);
  cljs.core.PersistentArrayMap.fromArray = (function (arr,no_clone,no_check){
  var arr__$1 = ((no_clone)?arr:cljs.core.aclone(arr));
  if(no_check){
  var cnt = (arr__$1.length / (2));
  return (new cljs.core.PersistentArrayMap(null,cnt,arr__$1,null));
  } else {
  var len = arr__$1.length;
  var i = (0);
  var ret = cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);
  while(true){
  if((i < len)){
  var G__12399 = (i + (2));
  var G__12400 = cljs.core._assoc_BANG_(ret,(arr__$1[i]),(arr__$1[(i + (1))]));
  i = G__12399;
  ret = G__12400;
  continue;
  } else {
  return cljs.core._persistent_BANG_(ret);
  }
  break;
  }
  }
  });
  (cljs.core.PersistentArrayMap.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.TransientArrayMap = (function (editable_QMARK_,len,arr){
  this.editable_QMARK_ = editable_QMARK_;
  this.len = len;
  this.arr = arr;
  this.cljs$lang$protocol_mask$partition1$ = 56;
  this.cljs$lang$protocol_mask$partition0$ = 258;
  })
  cljs.core.TransientArrayMap.prototype.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 = (function (tcoll,key){
  var self__ = this;
  var tcoll__$1 = this;
  if(cljs.core.truth_(self__.editable_QMARK_)){
  var idx = cljs.core.array_map_index_of(tcoll__$1,key);
  if((idx >= (0))){
  (self__.arr[idx] = (self__.arr[(self__.len - (2))]));
  
  (self__.arr[(idx + (1))] = (self__.arr[(self__.len - (1))]));
  
  var G__12401_12409 = self__.arr;
  G__12401_12409.pop();
  
  G__12401_12409.pop();
  
  
  self__.len = (self__.len - (2));
  } else {
  }
  
  return tcoll__$1;
  } else {
  throw (new Error("dissoc! after persistent!"));
  }
  });
  
  cljs.core.TransientArrayMap.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = (function (tcoll,key,val){
  var self__ = this;
  var tcoll__$1 = this;
  if(cljs.core.truth_(self__.editable_QMARK_)){
  var idx = cljs.core.array_map_index_of(tcoll__$1,key);
  if((idx === (-1))){
  if(((self__.len + (2)) <= ((2) * cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD))){
  self__.len = (self__.len + (2));
  
  self__.arr.push(key);
  
  self__.arr.push(val);
  
  return tcoll__$1;
  } else {
  return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3((function (){var G__12402 = self__.len;
  var G__12403 = self__.arr;
  return (cljs.core.array__GT_transient_hash_map.cljs$core$IFn$_invoke$arity$2 ? cljs.core.array__GT_transient_hash_map.cljs$core$IFn$_invoke$arity$2(G__12402,G__12403) : cljs.core.array__GT_transient_hash_map.call(null,G__12402,G__12403));
  })(),key,val);
  }
  } else {
  if((val === (self__.arr[(idx + (1))]))){
  return tcoll__$1;
  } else {
  (self__.arr[(idx + (1))] = val);
  
  return tcoll__$1;
  }
  }
  } else {
  throw (new Error("assoc! after persistent!"));
  }
  });
  
  cljs.core.TransientArrayMap.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,o){
  var self__ = this;
  var tcoll__$1 = this;
  if(cljs.core.truth_(self__.editable_QMARK_)){
  if((function (){var G__12404 = o;
  if(G__12404){
  var bit__4489__auto__ = (G__12404.cljs$lang$protocol_mask$partition0$ & (2048));
  if((bit__4489__auto__) || (G__12404.cljs$core$IMapEntry$)){
  return true;
  } else {
  if((!G__12404.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMapEntry,G__12404);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMapEntry,G__12404);
  }
  })()){
  return cljs.core._assoc_BANG_(tcoll__$1,(function (){var G__12405 = o;
  return (cljs.core.key.cljs$core$IFn$_invoke$arity$1 ? cljs.core.key.cljs$core$IFn$_invoke$arity$1(G__12405) : cljs.core.key.call(null,G__12405));
  })(),(function (){var G__12406 = o;
  return (cljs.core.val.cljs$core$IFn$_invoke$arity$1 ? cljs.core.val.cljs$core$IFn$_invoke$arity$1(G__12406) : cljs.core.val.call(null,G__12406));
  })());
  } else {
  var es = cljs.core.seq(o);
  var tcoll__$2 = tcoll__$1;
  while(true){
  var temp__4124__auto__ = cljs.core.first(es);
  if(cljs.core.truth_(temp__4124__auto__)){
  var e = temp__4124__auto__;
  var G__12410 = cljs.core.next(es);
  var G__12411 = cljs.core._assoc_BANG_(tcoll__$2,(function (){var G__12407 = e;
  return (cljs.core.key.cljs$core$IFn$_invoke$arity$1 ? cljs.core.key.cljs$core$IFn$_invoke$arity$1(G__12407) : cljs.core.key.call(null,G__12407));
  })(),(function (){var G__12408 = e;
  return (cljs.core.val.cljs$core$IFn$_invoke$arity$1 ? cljs.core.val.cljs$core$IFn$_invoke$arity$1(G__12408) : cljs.core.val.call(null,G__12408));
  })());
  es = G__12410;
  tcoll__$2 = G__12411;
  continue;
  } else {
  return tcoll__$2;
  }
  break;
  }
  }
  } else {
  throw (new Error("conj! after persistent!"));
  }
  });
  
  cljs.core.TransientArrayMap.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  if(cljs.core.truth_(self__.editable_QMARK_)){
  self__.editable_QMARK_ = false;
  
  return (new cljs.core.PersistentArrayMap(null,cljs.core.quot(self__.len,(2)),self__.arr,null));
  } else {
  throw (new Error("persistent! called twice"));
  }
  });
  
  cljs.core.TransientArrayMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (tcoll,k){
  var self__ = this;
  var tcoll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(tcoll__$1,k,null);
  });
  
  cljs.core.TransientArrayMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (tcoll,k,not_found){
  var self__ = this;
  var tcoll__$1 = this;
  if(cljs.core.truth_(self__.editable_QMARK_)){
  var idx = cljs.core.array_map_index_of(tcoll__$1,k);
  if((idx === (-1))){
  return not_found;
  } else {
  return (self__.arr[(idx + (1))]);
  }
  } else {
  throw (new Error("lookup after persistent!"));
  }
  });
  
  cljs.core.TransientArrayMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  if(cljs.core.truth_(self__.editable_QMARK_)){
  return cljs.core.quot(self__.len,(2));
  } else {
  throw (new Error("count after persistent!"));
  }
  });
  
  cljs.core.TransientArrayMap.cljs$lang$type = true;
  
  cljs.core.TransientArrayMap.cljs$lang$ctorStr = "cljs.core/TransientArrayMap";
  
  cljs.core.TransientArrayMap.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/TransientArrayMap");
  });
  
  cljs.core.__GT_TransientArrayMap = (function __GT_TransientArrayMap(editable_QMARK_,len,arr){
  return (new cljs.core.TransientArrayMap(editable_QMARK_,len,arr));
  });
  
  
  cljs.core.array__GT_transient_hash_map = (function array__GT_transient_hash_map(len,arr){
  var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
  var i = (0);
  while(true){
  if((i < len)){
  var G__12412 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,(arr[i]),(arr[(i + (1))]));
  var G__12413 = (i + (2));
  out = G__12412;
  i = G__12413;
  continue;
  } else {
  return out;
  }
  break;
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.Box = (function (val){
  this.val = val;
  })
  
  cljs.core.Box.cljs$lang$type = true;
  
  cljs.core.Box.cljs$lang$ctorStr = "cljs.core/Box";
  
  cljs.core.Box.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Box");
  });
  
  cljs.core.__GT_Box = (function __GT_Box(val){
  return (new cljs.core.Box(val));
  });
  
  
  
  
  
  
  cljs.core.key_test = (function key_test(key,other){
  if((key === other)){
  return true;
  } else {
  if(cljs.core.keyword_identical_QMARK_(key,other)){
  return true;
  } else {
  return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(key,other);
  
  }
  }
  });
  cljs.core.mask = (function mask(hash,shift){
  return ((hash >>> shift) & (31));
  });
  cljs.core.clone_and_set = (function() {
  var clone_and_set = null;
  var clone_and_set__3 = (function (arr,i,a){
  var G__12416 = cljs.core.aclone(arr);
  (G__12416[i] = a);
  
  return G__12416;
  });
  var clone_and_set__5 = (function (arr,i,a,j,b){
  var G__12417 = cljs.core.aclone(arr);
  (G__12417[i] = a);
  
  (G__12417[j] = b);
  
  return G__12417;
  });
  clone_and_set = function(arr,i,a,j,b){
  switch(arguments.length){
  case 3:
  return clone_and_set__3.call(this,arr,i,a);
  case 5:
  return clone_and_set__5.call(this,arr,i,a,j,b);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  clone_and_set.cljs$core$IFn$_invoke$arity$3 = clone_and_set__3;
  clone_and_set.cljs$core$IFn$_invoke$arity$5 = clone_and_set__5;
  return clone_and_set;
  })()
  ;
  cljs.core.remove_pair = (function remove_pair(arr,i){
  var new_arr = (new Array((arr.length - (2))));
  cljs.core.array_copy(arr,(0),new_arr,(0),((2) * i));
  
  cljs.core.array_copy(arr,((2) * (i + (1))),new_arr,((2) * i),(new_arr.length - ((2) * i)));
  
  return new_arr;
  });
  cljs.core.bitmap_indexed_node_index = (function bitmap_indexed_node_index(bitmap,bit){
  return cljs.core.bit_count((bitmap & (bit - (1))));
  });
  cljs.core.bitpos = (function bitpos(hash,shift){
  return ((1) << ((hash >>> shift) & 0x01f));
  });
  cljs.core.edit_and_set = (function() {
  var edit_and_set = null;
  var edit_and_set__4 = (function (inode,edit,i,a){
  var editable = inode.ensure_editable(edit);
  (editable.arr[i] = a);
  
  return editable;
  });
  var edit_and_set__6 = (function (inode,edit,i,a,j,b){
  var editable = inode.ensure_editable(edit);
  (editable.arr[i] = a);
  
  (editable.arr[j] = b);
  
  return editable;
  });
  edit_and_set = function(inode,edit,i,a,j,b){
  switch(arguments.length){
  case 4:
  return edit_and_set__4.call(this,inode,edit,i,a);
  case 6:
  return edit_and_set__6.call(this,inode,edit,i,a,j,b);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  edit_and_set.cljs$core$IFn$_invoke$arity$4 = edit_and_set__4;
  edit_and_set.cljs$core$IFn$_invoke$arity$6 = edit_and_set__6;
  return edit_and_set;
  })()
  ;
  cljs.core.inode_kv_reduce = (function inode_kv_reduce(arr,f,init){
  var len = arr.length;
  var i = (0);
  var init__$1 = init;
  while(true){
  if((i < len)){
  var init__$2 = (function (){var k = (arr[i]);
  if(!((k == null))){
  var G__12422 = init__$1;
  var G__12423 = k;
  var G__12424 = (arr[(i + (1))]);
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12422,G__12423,G__12424) : f.call(null,G__12422,G__12423,G__12424));
  } else {
  var node = (arr[(i + (1))]);
  if(!((node == null))){
  return node.kv_reduce(f,init__$1);
  } else {
  return init__$1;
  }
  }
  })();
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12425 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12425) : cljs.core.deref.call(null,G__12425));
  } else {
  var G__12426 = (i + (2));
  var G__12427 = init__$2;
  i = G__12426;
  init__$1 = G__12427;
  continue;
  }
  } else {
  return init__$1;
  }
  break;
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.BitmapIndexedNode = (function (edit,bitmap,arr){
  this.edit = edit;
  this.bitmap = bitmap;
  this.arr = arr;
  })
  cljs.core.BitmapIndexedNode.prototype.ensure_editable = (function (e){
  var self__ = this;
  var inode = this;
  if((e === self__.edit)){
  return inode;
  } else {
  var n = cljs.core.bit_count(self__.bitmap);
  var new_arr = (new Array((((n < (0)))?(4):((2) * (n + (1))))));
  cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * n));
  
  return (new cljs.core.BitmapIndexedNode(e,self__.bitmap,new_arr));
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_without_BANG_ = (function (edit__$1,shift,hash,key,removed_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var bit = (1 << ((hash >>> shift) & 0x01f));
  if(((self__.bitmap & bit) === (0))){
  return inode;
  } else {
  var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
  var key_or_nil = (self__.arr[((2) * idx)]);
  var val_or_node = (self__.arr[(((2) * idx) + (1))]);
  if((key_or_nil == null)){
  var n = val_or_node.inode_without_BANG_(edit__$1,(shift + (5)),hash,key,removed_leaf_QMARK_);
  if((n === val_or_node)){
  return inode;
  } else {
  if(!((n == null))){
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(((2) * idx) + (1)),n);
  } else {
  if((self__.bitmap === bit)){
  return null;
  } else {
  return inode.edit_and_remove_pair(edit__$1,bit,idx);
  
  }
  }
  }
  } else {
  if(cljs.core.key_test(key,key_or_nil)){
  (removed_leaf_QMARK_[(0)] = true);
  
  return inode.edit_and_remove_pair(edit__$1,bit,idx);
  } else {
  return inode;
  
  }
  }
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.edit_and_remove_pair = (function (e,bit,i){
  var self__ = this;
  var inode = this;
  if((self__.bitmap === bit)){
  return null;
  } else {
  var editable = inode.ensure_editable(e);
  var earr = editable.arr;
  var len = earr.length;
  editable.bitmap = (bit ^ editable.bitmap);
  
  cljs.core.array_copy(earr,((2) * (i + (1))),earr,((2) * i),(len - ((2) * (i + (1)))));
  
  (earr[(len - (2))] = null);
  
  (earr[(len - (1))] = null);
  
  return editable;
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_seq = (function (){
  var self__ = this;
  var inode = this;
  var G__12428 = self__.arr;
  return (cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1 ? cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1(G__12428) : cljs.core.create_inode_seq.call(null,G__12428));
  });
  
  cljs.core.BitmapIndexedNode.prototype.kv_reduce = (function (f,init){
  var self__ = this;
  var inode = this;
  return cljs.core.inode_kv_reduce(self__.arr,f,init);
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_lookup = (function (shift,hash,key,not_found){
  var self__ = this;
  var inode = this;
  var bit = (1 << ((hash >>> shift) & 0x01f));
  if(((self__.bitmap & bit) === (0))){
  return not_found;
  } else {
  var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
  var key_or_nil = (self__.arr[((2) * idx)]);
  var val_or_node = (self__.arr[(((2) * idx) + (1))]);
  if((key_or_nil == null)){
  return val_or_node.inode_lookup((shift + (5)),hash,key,not_found);
  } else {
  if(cljs.core.key_test(key,key_or_nil)){
  return val_or_node;
  } else {
  return not_found;
  
  }
  }
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_assoc_BANG_ = (function (edit__$1,shift,hash,key,val,added_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var bit = (1 << ((hash >>> shift) & 0x01f));
  var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
  if(((self__.bitmap & bit) === (0))){
  var n = cljs.core.bit_count(self__.bitmap);
  if((((2) * n) < self__.arr.length)){
  var editable = inode.ensure_editable(edit__$1);
  var earr = editable.arr;
  added_leaf_QMARK_.val = true;
  
  cljs.core.array_copy_downward(earr,((2) * idx),earr,((2) * (idx + (1))),((2) * (n - idx)));
  
  (earr[((2) * idx)] = key);
  
  (earr[(((2) * idx) + (1))] = val);
  
  editable.bitmap = (editable.bitmap | bit);
  
  return editable;
  } else {
  if((n >= (16))){
  var nodes = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
  var jdx = ((hash >>> shift) & 0x01f);
  (nodes[jdx] = cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_));
  
  var i_12442 = (0);
  var j_12443 = (0);
  while(true){
  if((i_12442 < (32))){
  if((((self__.bitmap >>> i_12442) & (1)) === (0))){
  var G__12444 = (i_12442 + (1));
  var G__12445 = j_12443;
  i_12442 = G__12444;
  j_12443 = G__12445;
  continue;
  } else {
  (nodes[i_12442] = ((!(((self__.arr[j_12443]) == null)))?cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1,(shift + (5)),cljs.core.hash((self__.arr[j_12443])),(self__.arr[j_12443]),(self__.arr[(j_12443 + (1))]),added_leaf_QMARK_):(self__.arr[(j_12443 + (1))])));
  
  var G__12446 = (i_12442 + (1));
  var G__12447 = (j_12443 + (2));
  i_12442 = G__12446;
  j_12443 = G__12447;
  continue;
  }
  } else {
  }
  break;
  }
  
  return (new cljs.core.ArrayNode(edit__$1,(n + (1)),nodes));
  } else {
  var new_arr = (new Array(((2) * (n + (4)))));
  cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * idx));
  
  (new_arr[((2) * idx)] = key);
  
  (new_arr[(((2) * idx) + (1))] = val);
  
  cljs.core.array_copy(self__.arr,((2) * idx),new_arr,((2) * (idx + (1))),((2) * (n - idx)));
  
  added_leaf_QMARK_.val = true;
  
  var editable = inode.ensure_editable(edit__$1);
  editable.arr = new_arr;
  
  editable.bitmap = (editable.bitmap | bit);
  
  return editable;
  
  }
  }
  } else {
  var key_or_nil = (self__.arr[((2) * idx)]);
  var val_or_node = (self__.arr[(((2) * idx) + (1))]);
  if((key_or_nil == null)){
  var n = val_or_node.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_);
  if((n === val_or_node)){
  return inode;
  } else {
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(((2) * idx) + (1)),n);
  }
  } else {
  if(cljs.core.key_test(key,key_or_nil)){
  if((val === val_or_node)){
  return inode;
  } else {
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(((2) * idx) + (1)),val);
  }
  } else {
  added_leaf_QMARK_.val = true;
  
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$6(inode,edit__$1,((2) * idx),null,(((2) * idx) + (1)),(function (){var G__12429 = edit__$1;
  var G__12430 = (shift + (5));
  var G__12431 = key_or_nil;
  var G__12432 = val_or_node;
  var G__12433 = hash;
  var G__12434 = key;
  var G__12435 = val;
  return (cljs.core.create_node.cljs$core$IFn$_invoke$arity$7 ? cljs.core.create_node.cljs$core$IFn$_invoke$arity$7(G__12429,G__12430,G__12431,G__12432,G__12433,G__12434,G__12435) : cljs.core.create_node.call(null,G__12429,G__12430,G__12431,G__12432,G__12433,G__12434,G__12435));
  })());
  
  }
  }
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_assoc = (function (shift,hash,key,val,added_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var bit = (1 << ((hash >>> shift) & 0x01f));
  var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
  if(((self__.bitmap & bit) === (0))){
  var n = cljs.core.bit_count(self__.bitmap);
  if((n >= (16))){
  var nodes = [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];
  var jdx = ((hash >>> shift) & 0x01f);
  (nodes[jdx] = cljs.core.BitmapIndexedNode.EMPTY.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_));
  
  var i_12448 = (0);
  var j_12449 = (0);
  while(true){
  if((i_12448 < (32))){
  if((((self__.bitmap >>> i_12448) & (1)) === (0))){
  var G__12450 = (i_12448 + (1));
  var G__12451 = j_12449;
  i_12448 = G__12450;
  j_12449 = G__12451;
  continue;
  } else {
  (nodes[i_12448] = ((!(((self__.arr[j_12449]) == null)))?cljs.core.BitmapIndexedNode.EMPTY.inode_assoc((shift + (5)),cljs.core.hash((self__.arr[j_12449])),(self__.arr[j_12449]),(self__.arr[(j_12449 + (1))]),added_leaf_QMARK_):(self__.arr[(j_12449 + (1))])));
  
  var G__12452 = (i_12448 + (1));
  var G__12453 = (j_12449 + (2));
  i_12448 = G__12452;
  j_12449 = G__12453;
  continue;
  }
  } else {
  }
  break;
  }
  
  return (new cljs.core.ArrayNode(null,(n + (1)),nodes));
  } else {
  var new_arr = (new Array(((2) * (n + (1)))));
  cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * idx));
  
  (new_arr[((2) * idx)] = key);
  
  (new_arr[(((2) * idx) + (1))] = val);
  
  cljs.core.array_copy(self__.arr,((2) * idx),new_arr,((2) * (idx + (1))),((2) * (n - idx)));
  
  added_leaf_QMARK_.val = true;
  
  return (new cljs.core.BitmapIndexedNode(null,(self__.bitmap | bit),new_arr));
  }
  } else {
  var key_or_nil = (self__.arr[((2) * idx)]);
  var val_or_node = (self__.arr[(((2) * idx) + (1))]);
  if((key_or_nil == null)){
  var n = val_or_node.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_);
  if((n === val_or_node)){
  return inode;
  } else {
  return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(((2) * idx) + (1)),n)));
  }
  } else {
  if(cljs.core.key_test(key,key_or_nil)){
  if((val === val_or_node)){
  return inode;
  } else {
  return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(((2) * idx) + (1)),val)));
  }
  } else {
  added_leaf_QMARK_.val = true;
  
  return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$5(self__.arr,((2) * idx),null,(((2) * idx) + (1)),(function (){var G__12436 = (shift + (5));
  var G__12437 = key_or_nil;
  var G__12438 = val_or_node;
  var G__12439 = hash;
  var G__12440 = key;
  var G__12441 = val;
  return (cljs.core.create_node.cljs$core$IFn$_invoke$arity$6 ? cljs.core.create_node.cljs$core$IFn$_invoke$arity$6(G__12436,G__12437,G__12438,G__12439,G__12440,G__12441) : cljs.core.create_node.call(null,G__12436,G__12437,G__12438,G__12439,G__12440,G__12441));
  })())));
  
  }
  }
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_find = (function (shift,hash,key,not_found){
  var self__ = this;
  var inode = this;
  var bit = (1 << ((hash >>> shift) & 0x01f));
  if(((self__.bitmap & bit) === (0))){
  return not_found;
  } else {
  var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
  var key_or_nil = (self__.arr[((2) * idx)]);
  var val_or_node = (self__.arr[(((2) * idx) + (1))]);
  if((key_or_nil == null)){
  return val_or_node.inode_find((shift + (5)),hash,key,not_found);
  } else {
  if(cljs.core.key_test(key,key_or_nil)){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [key_or_nil,val_or_node], null);
  } else {
  return not_found;
  
  }
  }
  }
  });
  
  cljs.core.BitmapIndexedNode.prototype.inode_without = (function (shift,hash,key){
  var self__ = this;
  var inode = this;
  var bit = (1 << ((hash >>> shift) & 0x01f));
  if(((self__.bitmap & bit) === (0))){
  return inode;
  } else {
  var idx = cljs.core.bitmap_indexed_node_index(self__.bitmap,bit);
  var key_or_nil = (self__.arr[((2) * idx)]);
  var val_or_node = (self__.arr[(((2) * idx) + (1))]);
  if((key_or_nil == null)){
  var n = val_or_node.inode_without((shift + (5)),hash,key);
  if((n === val_or_node)){
  return inode;
  } else {
  if(!((n == null))){
  return (new cljs.core.BitmapIndexedNode(null,self__.bitmap,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(((2) * idx) + (1)),n)));
  } else {
  if((self__.bitmap === bit)){
  return null;
  } else {
  return (new cljs.core.BitmapIndexedNode(null,(self__.bitmap ^ bit),cljs.core.remove_pair(self__.arr,idx)));
  
  }
  }
  }
  } else {
  if(cljs.core.key_test(key,key_or_nil)){
  return (new cljs.core.BitmapIndexedNode(null,(self__.bitmap ^ bit),cljs.core.remove_pair(self__.arr,idx)));
  } else {
  return inode;
  
  }
  }
  }
  });
  
  cljs.core.BitmapIndexedNode.cljs$lang$type = true;
  
  cljs.core.BitmapIndexedNode.cljs$lang$ctorStr = "cljs.core/BitmapIndexedNode";
  
  cljs.core.BitmapIndexedNode.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/BitmapIndexedNode");
  });
  
  cljs.core.__GT_BitmapIndexedNode = (function __GT_BitmapIndexedNode(edit,bitmap,arr){
  return (new cljs.core.BitmapIndexedNode(edit,bitmap,arr));
  });
  
  cljs.core.BitmapIndexedNode.EMPTY = (new cljs.core.BitmapIndexedNode(null,(0),[]));
  cljs.core.pack_array_node = (function pack_array_node(array_node,edit,idx){
  var arr = array_node.arr;
  var len = arr.length;
  var new_arr = (new Array(((2) * (array_node.cnt - (1)))));
  var i = (0);
  var j = (1);
  var bitmap = (0);
  while(true){
  if((i < len)){
  if((!((i === idx))) && (!(((arr[i]) == null)))){
  (new_arr[j] = (arr[i]));
  
  var G__12454 = (i + (1));
  var G__12455 = (j + (2));
  var G__12456 = (bitmap | ((1) << i));
  i = G__12454;
  j = G__12455;
  bitmap = G__12456;
  continue;
  } else {
  var G__12457 = (i + (1));
  var G__12458 = j;
  var G__12459 = bitmap;
  i = G__12457;
  j = G__12458;
  bitmap = G__12459;
  continue;
  }
  } else {
  return (new cljs.core.BitmapIndexedNode(edit,bitmap,new_arr));
  }
  break;
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.ArrayNode = (function (edit,cnt,arr){
  this.edit = edit;
  this.cnt = cnt;
  this.arr = arr;
  })
  cljs.core.ArrayNode.prototype.ensure_editable = (function (e){
  var self__ = this;
  var inode = this;
  if((e === self__.edit)){
  return inode;
  } else {
  return (new cljs.core.ArrayNode(e,self__.cnt,cljs.core.aclone(self__.arr)));
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_without_BANG_ = (function (edit__$1,shift,hash,key,removed_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var idx = ((hash >>> shift) & 0x01f);
  var node = (self__.arr[idx]);
  if((node == null)){
  return inode;
  } else {
  var n = node.inode_without_BANG_(edit__$1,(shift + (5)),hash,key,removed_leaf_QMARK_);
  if((n === node)){
  return inode;
  } else {
  if((n == null)){
  if((self__.cnt <= (8))){
  return cljs.core.pack_array_node(inode,edit__$1,idx);
  } else {
  var editable = cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,n);
  editable.cnt = (editable.cnt - (1));
  
  return editable;
  }
  } else {
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,n);
  
  }
  }
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_seq = (function (){
  var self__ = this;
  var inode = this;
  var G__12460 = self__.arr;
  return (cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$1 ? cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$1(G__12460) : cljs.core.create_array_node_seq.call(null,G__12460));
  });
  
  cljs.core.ArrayNode.prototype.kv_reduce = (function (f,init){
  var self__ = this;
  var inode = this;
  var len = self__.arr.length;
  var i = (0);
  var init__$1 = init;
  while(true){
  if((i < len)){
  var node = (self__.arr[i]);
  if(!((node == null))){
  var init__$2 = node.kv_reduce(f,init__$1);
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12461 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12461) : cljs.core.deref.call(null,G__12461));
  } else {
  var G__12462 = (i + (1));
  var G__12463 = init__$2;
  i = G__12462;
  init__$1 = G__12463;
  continue;
  }
  } else {
  var G__12464 = (i + (1));
  var G__12465 = init__$1;
  i = G__12464;
  init__$1 = G__12465;
  continue;
  }
  } else {
  return init__$1;
  }
  break;
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_lookup = (function (shift,hash,key,not_found){
  var self__ = this;
  var inode = this;
  var idx = ((hash >>> shift) & 0x01f);
  var node = (self__.arr[idx]);
  if(!((node == null))){
  return node.inode_lookup((shift + (5)),hash,key,not_found);
  } else {
  return not_found;
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_assoc_BANG_ = (function (edit__$1,shift,hash,key,val,added_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var idx = ((hash >>> shift) & 0x01f);
  var node = (self__.arr[idx]);
  if((node == null)){
  var editable = cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_));
  editable.cnt = (editable.cnt + (1));
  
  return editable;
  } else {
  var n = node.inode_assoc_BANG_(edit__$1,(shift + (5)),hash,key,val,added_leaf_QMARK_);
  if((n === node)){
  return inode;
  } else {
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,idx,n);
  }
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_assoc = (function (shift,hash,key,val,added_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var idx = ((hash >>> shift) & 0x01f);
  var node = (self__.arr[idx]);
  if((node == null)){
  return (new cljs.core.ArrayNode(null,(self__.cnt + (1)),cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,cljs.core.BitmapIndexedNode.EMPTY.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_))));
  } else {
  var n = node.inode_assoc((shift + (5)),hash,key,val,added_leaf_QMARK_);
  if((n === node)){
  return inode;
  } else {
  return (new cljs.core.ArrayNode(null,self__.cnt,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,n)));
  }
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_find = (function (shift,hash,key,not_found){
  var self__ = this;
  var inode = this;
  var idx = ((hash >>> shift) & 0x01f);
  var node = (self__.arr[idx]);
  if(!((node == null))){
  return node.inode_find((shift + (5)),hash,key,not_found);
  } else {
  return not_found;
  }
  });
  
  cljs.core.ArrayNode.prototype.inode_without = (function (shift,hash,key){
  var self__ = this;
  var inode = this;
  var idx = ((hash >>> shift) & 0x01f);
  var node = (self__.arr[idx]);
  if(!((node == null))){
  var n = node.inode_without((shift + (5)),hash,key);
  if((n === node)){
  return inode;
  } else {
  if((n == null)){
  if((self__.cnt <= (8))){
  return cljs.core.pack_array_node(inode,null,idx);
  } else {
  return (new cljs.core.ArrayNode(null,(self__.cnt - (1)),cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,n)));
  }
  } else {
  return (new cljs.core.ArrayNode(null,self__.cnt,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,idx,n)));
  
  }
  }
  } else {
  return inode;
  }
  });
  
  cljs.core.ArrayNode.cljs$lang$type = true;
  
  cljs.core.ArrayNode.cljs$lang$ctorStr = "cljs.core/ArrayNode";
  
  cljs.core.ArrayNode.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ArrayNode");
  });
  
  cljs.core.__GT_ArrayNode = (function __GT_ArrayNode(edit,cnt,arr){
  return (new cljs.core.ArrayNode(edit,cnt,arr));
  });
  
  cljs.core.hash_collision_node_find_index = (function hash_collision_node_find_index(arr,cnt,key){
  var lim = ((2) * cnt);
  var i = (0);
  while(true){
  if((i < lim)){
  if(cljs.core.key_test(key,(arr[i]))){
  return i;
  } else {
  var G__12466 = (i + (2));
  i = G__12466;
  continue;
  }
  } else {
  return (-1);
  }
  break;
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.HashCollisionNode = (function (edit,collision_hash,cnt,arr){
  this.edit = edit;
  this.collision_hash = collision_hash;
  this.cnt = cnt;
  this.arr = arr;
  })
  cljs.core.HashCollisionNode.prototype.ensure_editable = (function (e){
  var self__ = this;
  var inode = this;
  if((e === self__.edit)){
  return inode;
  } else {
  var new_arr = (new Array(((2) * (self__.cnt + (1)))));
  cljs.core.array_copy(self__.arr,(0),new_arr,(0),((2) * self__.cnt));
  
  return (new cljs.core.HashCollisionNode(e,self__.collision_hash,self__.cnt,new_arr));
  }
  });
  
  cljs.core.HashCollisionNode.prototype.inode_without_BANG_ = (function (edit__$1,shift,hash,key,removed_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
  if((idx === (-1))){
  return inode;
  } else {
  (removed_leaf_QMARK_[(0)] = true);
  
  if((self__.cnt === (1))){
  return null;
  } else {
  var editable = inode.ensure_editable(edit__$1);
  var earr = editable.arr;
  (earr[idx] = (earr[(((2) * self__.cnt) - (2))]));
  
  (earr[(idx + (1))] = (earr[(((2) * self__.cnt) - (1))]));
  
  (earr[(((2) * self__.cnt) - (1))] = null);
  
  (earr[(((2) * self__.cnt) - (2))] = null);
  
  editable.cnt = (editable.cnt - (1));
  
  return editable;
  }
  }
  });
  
  cljs.core.HashCollisionNode.prototype.inode_seq = (function (){
  var self__ = this;
  var inode = this;
  var G__12467 = self__.arr;
  return (cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1 ? cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$1(G__12467) : cljs.core.create_inode_seq.call(null,G__12467));
  });
  
  cljs.core.HashCollisionNode.prototype.kv_reduce = (function (f,init){
  var self__ = this;
  var inode = this;
  return cljs.core.inode_kv_reduce(self__.arr,f,init);
  });
  
  cljs.core.HashCollisionNode.prototype.inode_lookup = (function (shift,hash,key,not_found){
  var self__ = this;
  var inode = this;
  var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
  if((idx < (0))){
  return not_found;
  } else {
  if(cljs.core.key_test(key,(self__.arr[idx]))){
  return (self__.arr[(idx + (1))]);
  } else {
  return not_found;
  
  }
  }
  });
  
  cljs.core.HashCollisionNode.prototype.inode_assoc_BANG_ = (function (edit__$1,shift,hash,key,val,added_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  if((hash === self__.collision_hash)){
  var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
  if((idx === (-1))){
  if((self__.arr.length > ((2) * self__.cnt))){
  var editable = cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$6(inode,edit__$1,((2) * self__.cnt),key,(((2) * self__.cnt) + (1)),val);
  added_leaf_QMARK_.val = true;
  
  editable.cnt = (editable.cnt + (1));
  
  return editable;
  } else {
  var len = self__.arr.length;
  var new_arr = (new Array((len + (2))));
  cljs.core.array_copy(self__.arr,(0),new_arr,(0),len);
  
  (new_arr[len] = key);
  
  (new_arr[(len + (1))] = val);
  
  added_leaf_QMARK_.val = true;
  
  return inode.ensure_editable_array(edit__$1,(self__.cnt + (1)),new_arr);
  }
  } else {
  if(((self__.arr[(idx + (1))]) === val)){
  return inode;
  } else {
  return cljs.core.edit_and_set.cljs$core$IFn$_invoke$arity$4(inode,edit__$1,(idx + (1)),val);
  }
  }
  } else {
  return (new cljs.core.BitmapIndexedNode(edit__$1,(1 << ((self__.collision_hash >>> shift) & 0x01f)),[null,inode,null,null])).inode_assoc_BANG_(edit__$1,shift,hash,key,val,added_leaf_QMARK_);
  }
  });
  
  cljs.core.HashCollisionNode.prototype.inode_assoc = (function (shift,hash,key,val,added_leaf_QMARK_){
  var self__ = this;
  var inode = this;
  if((hash === self__.collision_hash)){
  var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
  if((idx === (-1))){
  var len = ((2) * self__.cnt);
  var new_arr = (new Array((len + (2))));
  cljs.core.array_copy(self__.arr,(0),new_arr,(0),len);
  
  (new_arr[len] = key);
  
  (new_arr[(len + (1))] = val);
  
  added_leaf_QMARK_.val = true;
  
  return (new cljs.core.HashCollisionNode(null,self__.collision_hash,(self__.cnt + (1)),new_arr));
  } else {
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((self__.arr[idx]),val)){
  return inode;
  } else {
  return (new cljs.core.HashCollisionNode(null,self__.collision_hash,self__.cnt,cljs.core.clone_and_set.cljs$core$IFn$_invoke$arity$3(self__.arr,(idx + (1)),val)));
  }
  }
  } else {
  return (new cljs.core.BitmapIndexedNode(null,(1 << ((self__.collision_hash >>> shift) & 0x01f)),[null,inode])).inode_assoc(shift,hash,key,val,added_leaf_QMARK_);
  }
  });
  
  cljs.core.HashCollisionNode.prototype.ensure_editable_array = (function (e,count,array){
  var self__ = this;
  var inode = this;
  if((e === self__.edit)){
  self__.arr = array;
  
  self__.cnt = count;
  
  return inode;
  } else {
  return (new cljs.core.HashCollisionNode(self__.edit,self__.collision_hash,count,array));
  }
  });
  
  cljs.core.HashCollisionNode.prototype.inode_find = (function (shift,hash,key,not_found){
  var self__ = this;
  var inode = this;
  var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
  if((idx < (0))){
  return not_found;
  } else {
  if(cljs.core.key_test(key,(self__.arr[idx]))){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(self__.arr[idx]),(self__.arr[(idx + (1))])], null);
  } else {
  return not_found;
  
  }
  }
  });
  
  cljs.core.HashCollisionNode.prototype.inode_without = (function (shift,hash,key){
  var self__ = this;
  var inode = this;
  var idx = cljs.core.hash_collision_node_find_index(self__.arr,self__.cnt,key);
  if((idx === (-1))){
  return inode;
  } else {
  if((self__.cnt === (1))){
  return null;
  } else {
  return (new cljs.core.HashCollisionNode(null,self__.collision_hash,(self__.cnt - (1)),cljs.core.remove_pair(self__.arr,cljs.core.quot(idx,(2)))));
  
  }
  }
  });
  
  cljs.core.HashCollisionNode.cljs$lang$type = true;
  
  cljs.core.HashCollisionNode.cljs$lang$ctorStr = "cljs.core/HashCollisionNode";
  
  cljs.core.HashCollisionNode.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/HashCollisionNode");
  });
  
  cljs.core.__GT_HashCollisionNode = (function __GT_HashCollisionNode(edit,collision_hash,cnt,arr){
  return (new cljs.core.HashCollisionNode(edit,collision_hash,cnt,arr));
  });
  
  cljs.core.create_node = (function() {
  var create_node = null;
  var create_node__6 = (function (shift,key1,val1,key2hash,key2,val2){
  var key1hash = cljs.core.hash(key1);
  if((key1hash === key2hash)){
  return (new cljs.core.HashCollisionNode(null,key1hash,(2),[key1,val1,key2,val2]));
  } else {
  var added_leaf_QMARK_ = (new cljs.core.Box(false));
  return cljs.core.BitmapIndexedNode.EMPTY.inode_assoc(shift,key1hash,key1,val1,added_leaf_QMARK_).inode_assoc(shift,key2hash,key2,val2,added_leaf_QMARK_);
  }
  });
  var create_node__7 = (function (edit,shift,key1,val1,key2hash,key2,val2){
  var key1hash = cljs.core.hash(key1);
  if((key1hash === key2hash)){
  return (new cljs.core.HashCollisionNode(null,key1hash,(2),[key1,val1,key2,val2]));
  } else {
  var added_leaf_QMARK_ = (new cljs.core.Box(false));
  return cljs.core.BitmapIndexedNode.EMPTY.inode_assoc_BANG_(edit,shift,key1hash,key1,val1,added_leaf_QMARK_).inode_assoc_BANG_(edit,shift,key2hash,key2,val2,added_leaf_QMARK_);
  }
  });
  create_node = function(edit,shift,key1,val1,key2hash,key2,val2){
  switch(arguments.length){
  case 6:
  return create_node__6.call(this,edit,shift,key1,val1,key2hash,key2);
  case 7:
  return create_node__7.call(this,edit,shift,key1,val1,key2hash,key2,val2);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  create_node.cljs$core$IFn$_invoke$arity$6 = create_node__6;
  create_node.cljs$core$IFn$_invoke$arity$7 = create_node__7;
  return create_node;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.NodeSeq = (function (meta,nodes,i,s,__hash){
  this.meta = meta;
  this.nodes = nodes;
  this.i = i;
  this.s = s;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374860;
  })
  cljs.core.NodeSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.NodeSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.s == null)){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(self__.nodes[self__.i]),(self__.nodes[(self__.i + (1))])], null);
  } else {
  return cljs.core.first(self__.s);
  }
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.s == null)){
  var G__12468 = self__.nodes;
  var G__12469 = (self__.i + (2));
  var G__12470 = null;
  return (cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3 ? cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(G__12468,G__12469,G__12470) : cljs.core.create_inode_seq.call(null,G__12468,G__12469,G__12470));
  } else {
  var G__12471 = self__.nodes;
  var G__12472 = self__.i;
  var G__12473 = cljs.core.next(self__.s);
  return (cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3 ? cljs.core.create_inode_seq.cljs$core$IFn$_invoke$arity$3(G__12471,G__12472,G__12473) : cljs.core.create_inode_seq.call(null,G__12471,G__12472,G__12473));
  }
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return this$__$1;
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.NodeSeq(meta__$1,self__.nodes,self__.i,self__.s,self__.__hash));
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.NodeSeq.cljs$lang$type = true;
  
  cljs.core.NodeSeq.cljs$lang$ctorStr = "cljs.core/NodeSeq";
  
  cljs.core.NodeSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/NodeSeq");
  });
  
  cljs.core.__GT_NodeSeq = (function __GT_NodeSeq(meta,nodes,i,s,__hash){
  return (new cljs.core.NodeSeq(meta,nodes,i,s,__hash));
  });
  
  (cljs.core.NodeSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.create_inode_seq = (function() {
  var create_inode_seq = null;
  var create_inode_seq__1 = (function (nodes){
  return create_inode_seq.cljs$core$IFn$_invoke$arity$3(nodes,(0),null);
  });
  var create_inode_seq__3 = (function (nodes,i,s){
  if((s == null)){
  var len = nodes.length;
  var j = i;
  while(true){
  if((j < len)){
  if(!(((nodes[j]) == null))){
  return (new cljs.core.NodeSeq(null,nodes,j,null,null));
  } else {
  var temp__4124__auto__ = (nodes[(j + (1))]);
  if(cljs.core.truth_(temp__4124__auto__)){
  var node = temp__4124__auto__;
  var temp__4124__auto____$1 = node.inode_seq();
  if(cljs.core.truth_(temp__4124__auto____$1)){
  var node_seq = temp__4124__auto____$1;
  return (new cljs.core.NodeSeq(null,nodes,(j + (2)),node_seq,null));
  } else {
  var G__12477 = (j + (2));
  j = G__12477;
  continue;
  }
  } else {
  var G__12478 = (j + (2));
  j = G__12478;
  continue;
  }
  }
  } else {
  return null;
  }
  break;
  }
  } else {
  return (new cljs.core.NodeSeq(null,nodes,i,s,null));
  }
  });
  create_inode_seq = function(nodes,i,s){
  switch(arguments.length){
  case 1:
  return create_inode_seq__1.call(this,nodes);
  case 3:
  return create_inode_seq__3.call(this,nodes,i,s);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  create_inode_seq.cljs$core$IFn$_invoke$arity$1 = create_inode_seq__1;
  create_inode_seq.cljs$core$IFn$_invoke$arity$3 = create_inode_seq__3;
  return create_inode_seq;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.ArrayNodeSeq = (function (meta,nodes,i,s,__hash){
  this.meta = meta;
  this.nodes = nodes;
  this.i = i;
  this.s = s;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374860;
  })
  cljs.core.ArrayNodeSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.ArrayNodeSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.first(self__.s);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var G__12479 = null;
  var G__12480 = self__.nodes;
  var G__12481 = self__.i;
  var G__12482 = cljs.core.next(self__.s);
  return (cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4 ? cljs.core.create_array_node_seq.cljs$core$IFn$_invoke$arity$4(G__12479,G__12480,G__12481,G__12482) : cljs.core.create_array_node_seq.call(null,G__12479,G__12480,G__12481,G__12482));
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return this$__$1;
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.ArrayNodeSeq(meta__$1,self__.nodes,self__.i,self__.s,self__.__hash));
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.ArrayNodeSeq.cljs$lang$type = true;
  
  cljs.core.ArrayNodeSeq.cljs$lang$ctorStr = "cljs.core/ArrayNodeSeq";
  
  cljs.core.ArrayNodeSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ArrayNodeSeq");
  });
  
  cljs.core.__GT_ArrayNodeSeq = (function __GT_ArrayNodeSeq(meta,nodes,i,s,__hash){
  return (new cljs.core.ArrayNodeSeq(meta,nodes,i,s,__hash));
  });
  
  (cljs.core.ArrayNodeSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.create_array_node_seq = (function() {
  var create_array_node_seq = null;
  var create_array_node_seq__1 = (function (nodes){
  return create_array_node_seq.cljs$core$IFn$_invoke$arity$4(null,nodes,(0),null);
  });
  var create_array_node_seq__4 = (function (meta,nodes,i,s){
  if((s == null)){
  var len = nodes.length;
  var j = i;
  while(true){
  if((j < len)){
  var temp__4124__auto__ = (nodes[j]);
  if(cljs.core.truth_(temp__4124__auto__)){
  var nj = temp__4124__auto__;
  var temp__4124__auto____$1 = nj.inode_seq();
  if(cljs.core.truth_(temp__4124__auto____$1)){
  var ns = temp__4124__auto____$1;
  return (new cljs.core.ArrayNodeSeq(meta,nodes,(j + (1)),ns,null));
  } else {
  var G__12487 = (j + (1));
  j = G__12487;
  continue;
  }
  } else {
  var G__12488 = (j + (1));
  j = G__12488;
  continue;
  }
  } else {
  return null;
  }
  break;
  }
  } else {
  return (new cljs.core.ArrayNodeSeq(meta,nodes,i,s,null));
  }
  });
  create_array_node_seq = function(meta,nodes,i,s){
  switch(arguments.length){
  case 1:
  return create_array_node_seq__1.call(this,meta);
  case 4:
  return create_array_node_seq__4.call(this,meta,nodes,i,s);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  create_array_node_seq.cljs$core$IFn$_invoke$arity$1 = create_array_node_seq__1;
  create_array_node_seq.cljs$core$IFn$_invoke$arity$4 = create_array_node_seq__4;
  return create_array_node_seq;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.PersistentHashMap = (function (meta,cnt,root,has_nil_QMARK_,nil_val,__hash){
  this.meta = meta;
  this.cnt = cnt;
  this.root = root;
  this.has_nil_QMARK_ = has_nil_QMARK_;
  this.nil_val = nil_val;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 16123663;
  this.cljs$lang$protocol_mask$partition1$ = 8196;
  })
  cljs.core.PersistentHashMap.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentHashMap.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentHashMap.prototype.keys = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator((function (){var G__12490 = coll;
  return (cljs.core.keys.cljs$core$IFn$_invoke$arity$1 ? cljs.core.keys.cljs$core$IFn$_invoke$arity$1(G__12490) : cljs.core.keys.call(null,G__12490));
  })());
  });
  
  cljs.core.PersistentHashMap.prototype.entries = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_entries_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentHashMap.prototype.values = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator((function (){var G__12491 = coll;
  return (cljs.core.vals.cljs$core$IFn$_invoke$arity$1 ? cljs.core.vals.cljs$core$IFn$_invoke$arity$1(G__12491) : cljs.core.vals.call(null,G__12491));
  })());
  });
  
  cljs.core.PersistentHashMap.prototype.has = (function (k){
  var self__ = this;
  var coll = this;
  return cljs.core.contains_QMARK_(coll,k);
  });
  
  cljs.core.PersistentHashMap.prototype.get = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentHashMap.prototype.forEach = (function (f){
  var self__ = this;
  var coll = this;
  var seq__12492 = cljs.core.seq(coll);
  var chunk__12493 = null;
  var count__12494 = (0);
  var i__12495 = (0);
  while(true){
  if((i__12495 < count__12494)){
  var vec__12496 = chunk__12493.cljs$core$IIndexed$_nth$arity$2(null,i__12495);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12496,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12496,(1),null);
  var G__12497_12508 = v;
  var G__12498_12509 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12497_12508,G__12498_12509) : f.call(null,G__12497_12508,G__12498_12509));
  
  var G__12510 = seq__12492;
  var G__12511 = chunk__12493;
  var G__12512 = count__12494;
  var G__12513 = (i__12495 + (1));
  seq__12492 = G__12510;
  chunk__12493 = G__12511;
  count__12494 = G__12512;
  i__12495 = G__12513;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__12492);
  if(temp__4126__auto__){
  var seq__12492__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__12492__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__12492__$1);
  var G__12514 = cljs.core.chunk_rest(seq__12492__$1);
  var G__12515 = c__4595__auto__;
  var G__12516 = cljs.core.count(c__4595__auto__);
  var G__12517 = (0);
  seq__12492 = G__12514;
  chunk__12493 = G__12515;
  count__12494 = G__12516;
  i__12495 = G__12517;
  continue;
  } else {
  var vec__12499 = cljs.core.first(seq__12492__$1);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12499,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12499,(1),null);
  var G__12500_12518 = v;
  var G__12501_12519 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12500_12518,G__12501_12519) : f.call(null,G__12500_12518,G__12501_12519));
  
  var G__12520 = cljs.core.next(seq__12492__$1);
  var G__12521 = null;
  var G__12522 = (0);
  var G__12523 = (0);
  seq__12492 = G__12520;
  chunk__12493 = G__12521;
  count__12494 = G__12522;
  i__12495 = G__12523;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  if((k == null)){
  if(self__.has_nil_QMARK_){
  return self__.nil_val;
  } else {
  return not_found;
  }
  } else {
  if((self__.root == null)){
  return not_found;
  } else {
  return self__.root.inode_lookup((0),cljs.core.hash(k),k,not_found);
  
  }
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
  var self__ = this;
  var coll__$1 = this;
  var init__$1 = ((self__.has_nil_QMARK_)?(function (){var G__12502 = init;
  var G__12503 = null;
  var G__12504 = self__.nil_val;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12502,G__12503,G__12504) : f.call(null,G__12502,G__12503,G__12504));
  })():init);
  if(cljs.core.reduced_QMARK_(init__$1)){
  var G__12505 = init__$1;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12505) : cljs.core.deref.call(null,G__12505));
  } else {
  if(!((self__.root == null))){
  return self__.root.kv_reduce(f,init__$1);
  } else {
  return init__$1;
  
  }
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.PersistentHashMap(self__.meta,self__.cnt,self__.root,self__.has_nil_QMARK_,self__.nil_val,self__.__hash));
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.cnt;
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_map(coll__$1,other);
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.TransientHashMap((function (){var obj12507 = {};
  return obj12507;
  })(),self__.root,self__.cnt,self__.has_nil_QMARK_,self__.nil_val));
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._with_meta(cljs.core.PersistentHashMap.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  if((k == null)){
  if(self__.has_nil_QMARK_){
  return (new cljs.core.PersistentHashMap(self__.meta,(self__.cnt - (1)),self__.root,false,null,null));
  } else {
  return coll__$1;
  }
  } else {
  if((self__.root == null)){
  return coll__$1;
  } else {
  var new_root = self__.root.inode_without((0),cljs.core.hash(k),k);
  if((new_root === self__.root)){
  return coll__$1;
  } else {
  return (new cljs.core.PersistentHashMap(self__.meta,(self__.cnt - (1)),new_root,self__.has_nil_QMARK_,self__.nil_val,null));
  }
  
  }
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
  var self__ = this;
  var coll__$1 = this;
  if((k == null)){
  if((self__.has_nil_QMARK_) && ((v === self__.nil_val))){
  return coll__$1;
  } else {
  return (new cljs.core.PersistentHashMap(self__.meta,((self__.has_nil_QMARK_)?self__.cnt:(self__.cnt + (1))),self__.root,true,v,null));
  }
  } else {
  var added_leaf_QMARK_ = (new cljs.core.Box(false));
  var new_root = (((self__.root == null))?cljs.core.BitmapIndexedNode.EMPTY:self__.root).inode_assoc((0),cljs.core.hash(k),k,v,added_leaf_QMARK_);
  if((new_root === self__.root)){
  return coll__$1;
  } else {
  return (new cljs.core.PersistentHashMap(self__.meta,((added_leaf_QMARK_.val)?(self__.cnt + (1)):self__.cnt),new_root,self__.has_nil_QMARK_,self__.nil_val,null));
  }
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  if((k == null)){
  return self__.has_nil_QMARK_;
  } else {
  if((self__.root == null)){
  return false;
  } else {
  return !((self__.root.inode_lookup((0),cljs.core.hash(k),k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel));
  
  }
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  var s = ((!((self__.root == null)))?self__.root.inode_seq():null);
  if(self__.has_nil_QMARK_){
  return cljs.core.cons(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [null,self__.nil_val], null),s);
  } else {
  return s;
  }
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentHashMap(meta__$1,self__.cnt,self__.root,self__.has_nil_QMARK_,self__.nil_val,self__.__hash));
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.vector_QMARK_(entry)){
  return cljs.core._assoc(coll__$1,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
  } else {
  var ret = coll__$1;
  var es = cljs.core.seq(entry);
  while(true){
  if((es == null)){
  return ret;
  } else {
  var e = cljs.core.first(es);
  if(cljs.core.vector_QMARK_(e)){
  var G__12524 = cljs.core._assoc(ret,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(1)));
  var G__12525 = cljs.core.next(es);
  ret = G__12524;
  es = G__12525;
  continue;
  } else {
  throw (new Error("conj on a map takes map entries or seqables of map entries"));
  }
  }
  break;
  }
  }
  });
  
  cljs.core.PersistentHashMap.prototype.call = (function() {
  var G__12526 = null;
  var G__12526__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12526__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12526 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12526__2.call(this,self__,k);
  case 3:
  return G__12526__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12526.cljs$core$IFn$_invoke$arity$2 = G__12526__2;
  G__12526.cljs$core$IFn$_invoke$arity$3 = G__12526__3;
  return G__12526;
  })()
  ;
  
  cljs.core.PersistentHashMap.prototype.apply = (function (self__,args12489){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12489)));
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.PersistentHashMap.cljs$lang$type = true;
  
  cljs.core.PersistentHashMap.cljs$lang$ctorStr = "cljs.core/PersistentHashMap";
  
  cljs.core.PersistentHashMap.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentHashMap");
  });
  
  cljs.core.__GT_PersistentHashMap = (function __GT_PersistentHashMap(meta,cnt,root,has_nil_QMARK_,nil_val,__hash){
  return (new cljs.core.PersistentHashMap(meta,cnt,root,has_nil_QMARK_,nil_val,__hash));
  });
  
  cljs.core.PersistentHashMap.EMPTY = (new cljs.core.PersistentHashMap(null,(0),null,false,null,cljs.core.empty_unordered_hash));
  cljs.core.PersistentHashMap.fromArray = (function (arr,no_clone){
  var arr__$1 = ((no_clone)?arr:cljs.core.aclone(arr));
  var len = arr__$1.length;
  var i = (0);
  var ret = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
  while(true){
  if((i < len)){
  var G__12527 = (i + (2));
  var G__12528 = cljs.core._assoc_BANG_(ret,(arr__$1[i]),(arr__$1[(i + (1))]));
  i = G__12527;
  ret = G__12528;
  continue;
  } else {
  return cljs.core._persistent_BANG_(ret);
  }
  break;
  }
  });
  cljs.core.PersistentHashMap.fromArrays = (function (ks,vs){
  var len = ks.length;
  var i = (0);
  var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
  while(true){
  if((i < len)){
  var G__12529 = (i + (1));
  var G__12530 = out.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3(null,(ks[i]),(vs[i]));
  i = G__12529;
  out = G__12530;
  continue;
  } else {
  return cljs.core.persistent_BANG_(out);
  }
  break;
  }
  });
  (cljs.core.PersistentHashMap.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.TransientHashMap = (function (edit,root,count,has_nil_QMARK_,nil_val){
  this.edit = edit;
  this.root = root;
  this.count = count;
  this.has_nil_QMARK_ = has_nil_QMARK_;
  this.nil_val = nil_val;
  this.cljs$lang$protocol_mask$partition1$ = 56;
  this.cljs$lang$protocol_mask$partition0$ = 258;
  })
  cljs.core.TransientHashMap.prototype.cljs$core$ITransientMap$_dissoc_BANG_$arity$2 = (function (tcoll,key){
  var self__ = this;
  var tcoll__$1 = this;
  return tcoll__$1.without_BANG_(key);
  });
  
  cljs.core.TransientHashMap.prototype.cljs$core$ITransientAssociative$_assoc_BANG_$arity$3 = (function (tcoll,key,val){
  var self__ = this;
  var tcoll__$1 = this;
  return tcoll__$1.assoc_BANG_(key,val);
  });
  
  cljs.core.TransientHashMap.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,val){
  var self__ = this;
  var tcoll__$1 = this;
  return tcoll__$1.conj_BANG_(val);
  });
  
  cljs.core.TransientHashMap.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  return tcoll__$1.persistent_BANG_();
  });
  
  cljs.core.TransientHashMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (tcoll,k){
  var self__ = this;
  var tcoll__$1 = this;
  if((k == null)){
  if(self__.has_nil_QMARK_){
  return self__.nil_val;
  } else {
  return null;
  }
  } else {
  if((self__.root == null)){
  return null;
  } else {
  return self__.root.inode_lookup((0),cljs.core.hash(k),k);
  }
  }
  });
  
  cljs.core.TransientHashMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (tcoll,k,not_found){
  var self__ = this;
  var tcoll__$1 = this;
  if((k == null)){
  if(self__.has_nil_QMARK_){
  return self__.nil_val;
  } else {
  return not_found;
  }
  } else {
  if((self__.root == null)){
  return not_found;
  } else {
  return self__.root.inode_lookup((0),cljs.core.hash(k),k,not_found);
  }
  }
  });
  
  cljs.core.TransientHashMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if(self__.edit){
  return self__.count;
  } else {
  throw (new Error("count after persistent!"));
  }
  });
  
  cljs.core.TransientHashMap.prototype.conj_BANG_ = (function (o){
  var self__ = this;
  var tcoll = this;
  if(self__.edit){
  if((function (){var G__12531 = o;
  if(G__12531){
  var bit__4489__auto__ = (G__12531.cljs$lang$protocol_mask$partition0$ & (2048));
  if((bit__4489__auto__) || (G__12531.cljs$core$IMapEntry$)){
  return true;
  } else {
  if((!G__12531.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMapEntry,G__12531);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMapEntry,G__12531);
  }
  })()){
  return tcoll.assoc_BANG_((function (){var G__12532 = o;
  return (cljs.core.key.cljs$core$IFn$_invoke$arity$1 ? cljs.core.key.cljs$core$IFn$_invoke$arity$1(G__12532) : cljs.core.key.call(null,G__12532));
  })(),(function (){var G__12533 = o;
  return (cljs.core.val.cljs$core$IFn$_invoke$arity$1 ? cljs.core.val.cljs$core$IFn$_invoke$arity$1(G__12533) : cljs.core.val.call(null,G__12533));
  })());
  } else {
  var es = cljs.core.seq(o);
  var tcoll__$1 = tcoll;
  while(true){
  var temp__4124__auto__ = cljs.core.first(es);
  if(cljs.core.truth_(temp__4124__auto__)){
  var e = temp__4124__auto__;
  var G__12536 = cljs.core.next(es);
  var G__12537 = tcoll__$1.assoc_BANG_((function (){var G__12534 = e;
  return (cljs.core.key.cljs$core$IFn$_invoke$arity$1 ? cljs.core.key.cljs$core$IFn$_invoke$arity$1(G__12534) : cljs.core.key.call(null,G__12534));
  })(),(function (){var G__12535 = e;
  return (cljs.core.val.cljs$core$IFn$_invoke$arity$1 ? cljs.core.val.cljs$core$IFn$_invoke$arity$1(G__12535) : cljs.core.val.call(null,G__12535));
  })());
  es = G__12536;
  tcoll__$1 = G__12537;
  continue;
  } else {
  return tcoll__$1;
  }
  break;
  }
  }
  } else {
  throw (new Error("conj! after persistent"));
  }
  });
  
  cljs.core.TransientHashMap.prototype.assoc_BANG_ = (function (k,v){
  var self__ = this;
  var tcoll = this;
  if(self__.edit){
  if((k == null)){
  if((self__.nil_val === v)){
  } else {
  self__.nil_val = v;
  }
  
  if(self__.has_nil_QMARK_){
  } else {
  self__.count = (self__.count + (1));
  
  self__.has_nil_QMARK_ = true;
  }
  
  return tcoll;
  } else {
  var added_leaf_QMARK_ = (new cljs.core.Box(false));
  var node = (((self__.root == null))?cljs.core.BitmapIndexedNode.EMPTY:self__.root).inode_assoc_BANG_(self__.edit,(0),cljs.core.hash(k),k,v,added_leaf_QMARK_);
  if((node === self__.root)){
  } else {
  self__.root = node;
  }
  
  if(added_leaf_QMARK_.val){
  self__.count = (self__.count + (1));
  } else {
  }
  
  return tcoll;
  }
  } else {
  throw (new Error("assoc! after persistent!"));
  }
  });
  
  cljs.core.TransientHashMap.prototype.without_BANG_ = (function (k){
  var self__ = this;
  var tcoll = this;
  if(self__.edit){
  if((k == null)){
  if(self__.has_nil_QMARK_){
  self__.has_nil_QMARK_ = false;
  
  self__.nil_val = null;
  
  self__.count = (self__.count - (1));
  
  return tcoll;
  } else {
  return tcoll;
  }
  } else {
  if((self__.root == null)){
  return tcoll;
  } else {
  var removed_leaf_QMARK_ = (new cljs.core.Box(false));
  var node = self__.root.inode_without_BANG_(self__.edit,(0),cljs.core.hash(k),k,removed_leaf_QMARK_);
  if((node === self__.root)){
  } else {
  self__.root = node;
  }
  
  if(cljs.core.truth_((removed_leaf_QMARK_[(0)]))){
  self__.count = (self__.count - (1));
  } else {
  }
  
  return tcoll;
  }
  }
  } else {
  throw (new Error("dissoc! after persistent!"));
  }
  });
  
  cljs.core.TransientHashMap.prototype.persistent_BANG_ = (function (){
  var self__ = this;
  var tcoll = this;
  if(self__.edit){
  self__.edit = null;
  
  return (new cljs.core.PersistentHashMap(null,self__.count,self__.root,self__.has_nil_QMARK_,self__.nil_val,null));
  } else {
  throw (new Error("persistent! called twice"));
  }
  });
  
  cljs.core.TransientHashMap.cljs$lang$type = true;
  
  cljs.core.TransientHashMap.cljs$lang$ctorStr = "cljs.core/TransientHashMap";
  
  cljs.core.TransientHashMap.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/TransientHashMap");
  });
  
  cljs.core.__GT_TransientHashMap = (function __GT_TransientHashMap(edit,root,count,has_nil_QMARK_,nil_val){
  return (new cljs.core.TransientHashMap(edit,root,count,has_nil_QMARK_,nil_val));
  });
  
  cljs.core.tree_map_seq_push = (function tree_map_seq_push(node,stack,ascending_QMARK_){
  var t = node;
  var stack__$1 = stack;
  while(true){
  if(!((t == null))){
  var G__12538 = ((ascending_QMARK_)?t.left:t.right);
  var G__12539 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack__$1,t);
  t = G__12538;
  stack__$1 = G__12539;
  continue;
  } else {
  return stack__$1;
  }
  break;
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.PersistentTreeMapSeq = (function (meta,stack,ascending_QMARK_,cnt,__hash){
  this.meta = meta;
  this.stack = stack;
  this.ascending_QMARK_ = ascending_QMARK_;
  this.cnt = cnt;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374862;
  })
  cljs.core.PersistentTreeMapSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt < (0))){
  return (cljs.core.count(cljs.core.next(coll__$1)) + (1));
  } else {
  return self__.cnt;
  }
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core.peek(self__.stack);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  var t = cljs.core.first(self__.stack);
  var next_stack = cljs.core.tree_map_seq_push(((self__.ascending_QMARK_)?t.right:t.left),cljs.core.next(self__.stack),self__.ascending_QMARK_);
  if(!((next_stack == null))){
  return (new cljs.core.PersistentTreeMapSeq(null,next_stack,self__.ascending_QMARK_,(self__.cnt - (1)),null));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return this$__$1;
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeMapSeq(meta__$1,self__.stack,self__.ascending_QMARK_,self__.cnt,self__.__hash));
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.PersistentTreeMapSeq.cljs$lang$type = true;
  
  cljs.core.PersistentTreeMapSeq.cljs$lang$ctorStr = "cljs.core/PersistentTreeMapSeq";
  
  cljs.core.PersistentTreeMapSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentTreeMapSeq");
  });
  
  cljs.core.__GT_PersistentTreeMapSeq = (function __GT_PersistentTreeMapSeq(meta,stack,ascending_QMARK_,cnt,__hash){
  return (new cljs.core.PersistentTreeMapSeq(meta,stack,ascending_QMARK_,cnt,__hash));
  });
  
  (cljs.core.PersistentTreeMapSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.create_tree_map_seq = (function create_tree_map_seq(tree,ascending_QMARK_,cnt){
  return (new cljs.core.PersistentTreeMapSeq(null,cljs.core.tree_map_seq_push(tree,null,ascending_QMARK_),ascending_QMARK_,cnt,null));
  });
  
  cljs.core.balance_left = (function balance_left(key,val,ins,right){
  if((ins instanceof cljs.core.RedNode)){
  if((ins.left instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(ins.key,ins.val,ins.left.blacken(),(new cljs.core.BlackNode(key,val,ins.right,right,null)),null));
  } else {
  if((ins.right instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(ins.right.key,ins.right.val,(new cljs.core.BlackNode(ins.key,ins.val,ins.left,ins.right.left,null)),(new cljs.core.BlackNode(key,val,ins.right.right,right,null)),null));
  } else {
  return (new cljs.core.BlackNode(key,val,ins,right,null));
  
  }
  }
  } else {
  return (new cljs.core.BlackNode(key,val,ins,right,null));
  }
  });
  cljs.core.balance_right = (function balance_right(key,val,left,ins){
  if((ins instanceof cljs.core.RedNode)){
  if((ins.right instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(ins.key,ins.val,(new cljs.core.BlackNode(key,val,left,ins.left,null)),ins.right.blacken(),null));
  } else {
  if((ins.left instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(ins.left.key,ins.left.val,(new cljs.core.BlackNode(key,val,left,ins.left.left,null)),(new cljs.core.BlackNode(ins.key,ins.val,ins.left.right,ins.right,null)),null));
  } else {
  return (new cljs.core.BlackNode(key,val,left,ins,null));
  
  }
  }
  } else {
  return (new cljs.core.BlackNode(key,val,left,ins,null));
  }
  });
  cljs.core.balance_left_del = (function balance_left_del(key,val,del,right){
  if((del instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(key,val,del.blacken(),right,null));
  } else {
  if((right instanceof cljs.core.BlackNode)){
  return cljs.core.balance_right(key,val,del,right.redden());
  } else {
  if(((right instanceof cljs.core.RedNode)) && ((right.left instanceof cljs.core.BlackNode))){
  return (new cljs.core.RedNode(right.left.key,right.left.val,(new cljs.core.BlackNode(key,val,del,right.left.left,null)),cljs.core.balance_right(right.key,right.val,right.left.right,right.right.redden()),null));
  } else {
  throw (new Error("red-black tree invariant violation"));
  
  }
  }
  }
  });
  cljs.core.balance_right_del = (function balance_right_del(key,val,left,del){
  if((del instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(key,val,left,del.blacken(),null));
  } else {
  if((left instanceof cljs.core.BlackNode)){
  return cljs.core.balance_left(key,val,left.redden(),del);
  } else {
  if(((left instanceof cljs.core.RedNode)) && ((left.right instanceof cljs.core.BlackNode))){
  return (new cljs.core.RedNode(left.right.key,left.right.val,cljs.core.balance_left(left.key,left.val,left.left.redden(),left.right.left),(new cljs.core.BlackNode(key,val,left.right.right,del,null)),null));
  } else {
  throw (new Error("red-black tree invariant violation"));
  
  }
  }
  }
  });
  cljs.core.tree_map_kv_reduce = (function tree_map_kv_reduce(node,f,init){
  var init__$1 = ((!((node.left == null)))?tree_map_kv_reduce(node.left,f,init):init);
  if(cljs.core.reduced_QMARK_(init__$1)){
  var G__12552 = init__$1;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12552) : cljs.core.deref.call(null,G__12552));
  } else {
  var init__$2 = (function (){var G__12553 = init__$1;
  var G__12554 = node.key;
  var G__12555 = node.val;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12553,G__12554,G__12555) : f.call(null,G__12553,G__12554,G__12555));
  })();
  if(cljs.core.reduced_QMARK_(init__$2)){
  var G__12556 = init__$2;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12556) : cljs.core.deref.call(null,G__12556));
  } else {
  var init__$3 = ((!((node.right == null)))?tree_map_kv_reduce(node.right,f,init__$2):init__$2);
  if(cljs.core.reduced_QMARK_(init__$3)){
  var G__12557 = init__$3;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12557) : cljs.core.deref.call(null,G__12557));
  } else {
  return init__$3;
  }
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.BlackNode = (function (key,val,left,right,__hash){
  this.key = key;
  this.val = val;
  this.left = left;
  this.right = right;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32402207;
  })
  cljs.core.BlackNode.prototype.add_right = (function (ins){
  var self__ = this;
  var node = this;
  return ins.balance_right(node);
  });
  
  cljs.core.BlackNode.prototype.redden = (function (){
  var self__ = this;
  var node = this;
  return (new cljs.core.RedNode(self__.key,self__.val,self__.left,self__.right,null));
  });
  
  cljs.core.BlackNode.prototype.blacken = (function (){
  var self__ = this;
  var node = this;
  return node;
  });
  
  cljs.core.BlackNode.prototype.add_left = (function (ins){
  var self__ = this;
  var node = this;
  return ins.balance_left(node);
  });
  
  cljs.core.BlackNode.prototype.replace = (function (key__$1,val__$1,left__$1,right__$1){
  var self__ = this;
  var node = this;
  return (new cljs.core.BlackNode(key__$1,val__$1,left__$1,right__$1,null));
  });
  
  cljs.core.BlackNode.prototype.balance_left = (function (parent){
  var self__ = this;
  var node = this;
  return (new cljs.core.BlackNode(parent.key,parent.val,node,parent.right,null));
  });
  
  cljs.core.BlackNode.prototype.balance_right = (function (parent){
  var self__ = this;
  var node = this;
  return (new cljs.core.BlackNode(parent.key,parent.val,parent.left,node,null));
  });
  
  cljs.core.BlackNode.prototype.remove_left = (function (del){
  var self__ = this;
  var node = this;
  return cljs.core.balance_left_del(self__.key,self__.val,del,self__.right);
  });
  
  cljs.core.BlackNode.prototype.kv_reduce = (function (f,init){
  var self__ = this;
  var node = this;
  return cljs.core.tree_map_kv_reduce(node,f,init);
  });
  
  cljs.core.BlackNode.prototype.remove_right = (function (del){
  var self__ = this;
  var node = this;
  return cljs.core.balance_right_del(self__.key,self__.val,self__.left,del);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (node,k){
  var self__ = this;
  var node__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(node__$1,k,null);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (node,k,not_found){
  var self__ = this;
  var node__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(node__$1,k,not_found);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (node,n){
  var self__ = this;
  var node__$1 = this;
  if((n === (0))){
  return self__.key;
  } else {
  if((n === (1))){
  return self__.val;
  } else {
  return null;
  
  }
  }
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (node,n,not_found){
  var self__ = this;
  var node__$1 = this;
  if((n === (0))){
  return self__.key;
  } else {
  if((n === (1))){
  return self__.val;
  } else {
  return not_found;
  
  }
  }
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (node,n,v){
  var self__ = this;
  var node__$1 = this;
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null).cljs$core$IVector$_assoc_n$arity$3(null,n,v);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IMeta$_meta$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return null;
  });
  
  cljs.core.BlackNode.prototype.cljs$core$ICounted$_count$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return (2);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IMapEntry$_key$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return self__.key;
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IMapEntry$_val$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return self__.val;
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IStack$_peek$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return self__.val;
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IStack$_pop$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key], null);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.PersistentVector.EMPTY;
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (node,f){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(node__$1,f);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (node,f,start){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(node__$1,f,start);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (node,k,v){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),k,v);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return cljs.core._conj(cljs.core._conj(cljs.core.List.EMPTY,self__.val),self__.key);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (node,meta){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.with_meta(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),meta);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$ICollection$_conj$arity$2 = (function (node,o){
  var self__ = this;
  var node__$1 = this;
  return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val,o], null);
  });
  
  cljs.core.BlackNode.prototype.call = (function() {
  var G__12559 = null;
  var G__12559__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var node = self____$1;
  return node.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12559__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var node = self____$1;
  return node.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12559 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12559__2.call(this,self__,k);
  case 3:
  return G__12559__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12559.cljs$core$IFn$_invoke$arity$2 = G__12559__2;
  G__12559.cljs$core$IFn$_invoke$arity$3 = G__12559__3;
  return G__12559;
  })()
  ;
  
  cljs.core.BlackNode.prototype.apply = (function (self__,args12558){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12558)));
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var node = this;
  return node.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var node = this;
  return node.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.BlackNode.cljs$lang$type = true;
  
  cljs.core.BlackNode.cljs$lang$ctorStr = "cljs.core/BlackNode";
  
  cljs.core.BlackNode.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/BlackNode");
  });
  
  cljs.core.__GT_BlackNode = (function __GT_BlackNode(key,val,left,right,__hash){
  return (new cljs.core.BlackNode(key,val,left,right,__hash));
  });
  
  (cljs.core.BlackNode.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.RedNode = (function (key,val,left,right,__hash){
  this.key = key;
  this.val = val;
  this.left = left;
  this.right = right;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32402207;
  })
  cljs.core.RedNode.prototype.add_right = (function (ins){
  var self__ = this;
  var node = this;
  return (new cljs.core.RedNode(self__.key,self__.val,self__.left,ins,null));
  });
  
  cljs.core.RedNode.prototype.redden = (function (){
  var self__ = this;
  var node = this;
  throw (new Error("red-black tree invariant violation"));
  });
  
  cljs.core.RedNode.prototype.blacken = (function (){
  var self__ = this;
  var node = this;
  return (new cljs.core.BlackNode(self__.key,self__.val,self__.left,self__.right,null));
  });
  
  cljs.core.RedNode.prototype.add_left = (function (ins){
  var self__ = this;
  var node = this;
  return (new cljs.core.RedNode(self__.key,self__.val,ins,self__.right,null));
  });
  
  cljs.core.RedNode.prototype.replace = (function (key__$1,val__$1,left__$1,right__$1){
  var self__ = this;
  var node = this;
  return (new cljs.core.RedNode(key__$1,val__$1,left__$1,right__$1,null));
  });
  
  cljs.core.RedNode.prototype.balance_left = (function (parent){
  var self__ = this;
  var node = this;
  if((self__.left instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(self__.key,self__.val,self__.left.blacken(),(new cljs.core.BlackNode(parent.key,parent.val,self__.right,parent.right,null)),null));
  } else {
  if((self__.right instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(self__.right.key,self__.right.val,(new cljs.core.BlackNode(self__.key,self__.val,self__.left,self__.right.left,null)),(new cljs.core.BlackNode(parent.key,parent.val,self__.right.right,parent.right,null)),null));
  } else {
  return (new cljs.core.BlackNode(parent.key,parent.val,node,parent.right,null));
  
  }
  }
  });
  
  cljs.core.RedNode.prototype.balance_right = (function (parent){
  var self__ = this;
  var node = this;
  if((self__.right instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(self__.key,self__.val,(new cljs.core.BlackNode(parent.key,parent.val,parent.left,self__.left,null)),self__.right.blacken(),null));
  } else {
  if((self__.left instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(self__.left.key,self__.left.val,(new cljs.core.BlackNode(parent.key,parent.val,parent.left,self__.left.left,null)),(new cljs.core.BlackNode(self__.key,self__.val,self__.left.right,self__.right,null)),null));
  } else {
  return (new cljs.core.BlackNode(parent.key,parent.val,parent.left,node,null));
  
  }
  }
  });
  
  cljs.core.RedNode.prototype.remove_left = (function (del){
  var self__ = this;
  var node = this;
  return (new cljs.core.RedNode(self__.key,self__.val,del,self__.right,null));
  });
  
  cljs.core.RedNode.prototype.kv_reduce = (function (f,init){
  var self__ = this;
  var node = this;
  return cljs.core.tree_map_kv_reduce(node,f,init);
  });
  
  cljs.core.RedNode.prototype.remove_right = (function (del){
  var self__ = this;
  var node = this;
  return (new cljs.core.RedNode(self__.key,self__.val,self__.left,del,null));
  });
  
  cljs.core.RedNode.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (node,k){
  var self__ = this;
  var node__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(node__$1,k,null);
  });
  
  cljs.core.RedNode.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (node,k,not_found){
  var self__ = this;
  var node__$1 = this;
  return cljs.core._nth.cljs$core$IFn$_invoke$arity$3(node__$1,k,not_found);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (node,n){
  var self__ = this;
  var node__$1 = this;
  if((n === (0))){
  return self__.key;
  } else {
  if((n === (1))){
  return self__.val;
  } else {
  return null;
  
  }
  }
  });
  
  cljs.core.RedNode.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (node,n,not_found){
  var self__ = this;
  var node__$1 = this;
  if((n === (0))){
  return self__.key;
  } else {
  if((n === (1))){
  return self__.val;
  } else {
  return not_found;
  
  }
  }
  });
  
  cljs.core.RedNode.prototype.cljs$core$IVector$_assoc_n$arity$3 = (function (node,n,v){
  var self__ = this;
  var node__$1 = this;
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null).cljs$core$IVector$_assoc_n$arity$3(null,n,v);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IMeta$_meta$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return null;
  });
  
  cljs.core.RedNode.prototype.cljs$core$ICounted$_count$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return (2);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IMapEntry$_key$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return self__.key;
  });
  
  cljs.core.RedNode.prototype.cljs$core$IMapEntry$_val$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return self__.val;
  });
  
  cljs.core.RedNode.prototype.cljs$core$IStack$_peek$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return self__.val;
  });
  
  cljs.core.RedNode.prototype.cljs$core$IStack$_pop$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key], null);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.RedNode.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.PersistentVector.EMPTY;
  });
  
  cljs.core.RedNode.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (node,f){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(node__$1,f);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (node,f,start){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$3(node__$1,f,start);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (node,k,v){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),k,v);
  });
  
  cljs.core.RedNode.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (node){
  var self__ = this;
  var node__$1 = this;
  return cljs.core._conj(cljs.core._conj(cljs.core.List.EMPTY,self__.val),self__.key);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (node,meta){
  var self__ = this;
  var node__$1 = this;
  return cljs.core.with_meta(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val], null),meta);
  });
  
  cljs.core.RedNode.prototype.cljs$core$ICollection$_conj$arity$2 = (function (node,o){
  var self__ = this;
  var node__$1 = this;
  return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [self__.key,self__.val,o], null);
  });
  
  cljs.core.RedNode.prototype.call = (function() {
  var G__12561 = null;
  var G__12561__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var node = self____$1;
  return node.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12561__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var node = self____$1;
  return node.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12561 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12561__2.call(this,self__,k);
  case 3:
  return G__12561__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12561.cljs$core$IFn$_invoke$arity$2 = G__12561__2;
  G__12561.cljs$core$IFn$_invoke$arity$3 = G__12561__3;
  return G__12561;
  })()
  ;
  
  cljs.core.RedNode.prototype.apply = (function (self__,args12560){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12560)));
  });
  
  cljs.core.RedNode.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var node = this;
  return node.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var node = this;
  return node.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.RedNode.cljs$lang$type = true;
  
  cljs.core.RedNode.cljs$lang$ctorStr = "cljs.core/RedNode";
  
  cljs.core.RedNode.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/RedNode");
  });
  
  cljs.core.__GT_RedNode = (function __GT_RedNode(key,val,left,right,__hash){
  return (new cljs.core.RedNode(key,val,left,right,__hash));
  });
  
  (cljs.core.RedNode.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.tree_map_add = (function tree_map_add(comp,tree,k,v,found){
  if((tree == null)){
  return (new cljs.core.RedNode(k,v,null,null,null));
  } else {
  var c = (function (){var G__12574 = k;
  var G__12575 = tree.key;
  return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__12574,G__12575) : comp.call(null,G__12574,G__12575));
  })();
  if((c === (0))){
  (found[(0)] = tree);
  
  return null;
  } else {
  if((c < (0))){
  var ins = tree_map_add(comp,tree.left,k,v,found);
  if(!((ins == null))){
  return tree.add_left(ins);
  } else {
  return null;
  }
  } else {
  var ins = tree_map_add(comp,tree.right,k,v,found);
  if(!((ins == null))){
  return tree.add_right(ins);
  } else {
  return null;
  }
  
  }
  }
  }
  });
  cljs.core.tree_map_append = (function tree_map_append(left,right){
  if((left == null)){
  return right;
  } else {
  if((right == null)){
  return left;
  } else {
  if((left instanceof cljs.core.RedNode)){
  if((right instanceof cljs.core.RedNode)){
  var app = tree_map_append(left.right,right.left);
  if((app instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(app.key,app.val,(new cljs.core.RedNode(left.key,left.val,left.left,app.left,null)),(new cljs.core.RedNode(right.key,right.val,app.right,right.right,null)),null));
  } else {
  return (new cljs.core.RedNode(left.key,left.val,left.left,(new cljs.core.RedNode(right.key,right.val,app,right.right,null)),null));
  }
  } else {
  return (new cljs.core.RedNode(left.key,left.val,left.left,tree_map_append(left.right,right),null));
  }
  } else {
  if((right instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(right.key,right.val,tree_map_append(left,right.left),right.right,null));
  } else {
  var app = tree_map_append(left.right,right.left);
  if((app instanceof cljs.core.RedNode)){
  return (new cljs.core.RedNode(app.key,app.val,(new cljs.core.BlackNode(left.key,left.val,left.left,app.left,null)),(new cljs.core.BlackNode(right.key,right.val,app.right,right.right,null)),null));
  } else {
  return cljs.core.balance_left_del(left.key,left.val,left.left,(new cljs.core.BlackNode(right.key,right.val,app,right.right,null)));
  }
  
  }
  }
  }
  }
  });
  cljs.core.tree_map_remove = (function tree_map_remove(comp,tree,k,found){
  if(!((tree == null))){
  var c = (function (){var G__12594 = k;
  var G__12595 = tree.key;
  return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__12594,G__12595) : comp.call(null,G__12594,G__12595));
  })();
  if((c === (0))){
  (found[(0)] = tree);
  
  return cljs.core.tree_map_append(tree.left,tree.right);
  } else {
  if((c < (0))){
  var del = tree_map_remove(comp,tree.left,k,found);
  if((!((del == null))) || (!(((found[(0)]) == null)))){
  if((tree.left instanceof cljs.core.BlackNode)){
  return cljs.core.balance_left_del(tree.key,tree.val,del,tree.right);
  } else {
  return (new cljs.core.RedNode(tree.key,tree.val,del,tree.right,null));
  }
  } else {
  return null;
  }
  } else {
  var del = tree_map_remove(comp,tree.right,k,found);
  if((!((del == null))) || (!(((found[(0)]) == null)))){
  if((tree.right instanceof cljs.core.BlackNode)){
  return cljs.core.balance_right_del(tree.key,tree.val,tree.left,del);
  } else {
  return (new cljs.core.RedNode(tree.key,tree.val,tree.left,del,null));
  }
  } else {
  return null;
  }
  
  }
  }
  } else {
  return null;
  }
  });
  cljs.core.tree_map_replace = (function tree_map_replace(comp,tree,k,v){
  var tk = tree.key;
  var c = (function (){var G__12606 = k;
  var G__12607 = tk;
  return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__12606,G__12607) : comp.call(null,G__12606,G__12607));
  })();
  if((c === (0))){
  return tree.replace(tk,v,tree.left,tree.right);
  } else {
  if((c < (0))){
  return tree.replace(tk,tree.val,tree_map_replace(comp,tree.left,k,v),tree.right);
  } else {
  return tree.replace(tk,tree.val,tree.left,tree_map_replace(comp,tree.right,k,v));
  
  }
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.PersistentTreeMap = (function (comp,tree,cnt,meta,__hash){
  this.comp = comp;
  this.tree = tree;
  this.cnt = cnt;
  this.meta = meta;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 418776847;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.PersistentTreeMap.prototype.forEach = (function (f){
  var self__ = this;
  var coll = this;
  var seq__12609 = cljs.core.seq(coll);
  var chunk__12610 = null;
  var count__12611 = (0);
  var i__12612 = (0);
  while(true){
  if((i__12612 < count__12611)){
  var vec__12613 = chunk__12610.cljs$core$IIndexed$_nth$arity$2(null,i__12612);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12613,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12613,(1),null);
  var G__12614_12626 = v;
  var G__12615_12627 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12614_12626,G__12615_12627) : f.call(null,G__12614_12626,G__12615_12627));
  
  var G__12628 = seq__12609;
  var G__12629 = chunk__12610;
  var G__12630 = count__12611;
  var G__12631 = (i__12612 + (1));
  seq__12609 = G__12628;
  chunk__12610 = G__12629;
  count__12611 = G__12630;
  i__12612 = G__12631;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__12609);
  if(temp__4126__auto__){
  var seq__12609__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__12609__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__12609__$1);
  var G__12632 = cljs.core.chunk_rest(seq__12609__$1);
  var G__12633 = c__4595__auto__;
  var G__12634 = cljs.core.count(c__4595__auto__);
  var G__12635 = (0);
  seq__12609 = G__12632;
  chunk__12610 = G__12633;
  count__12611 = G__12634;
  i__12612 = G__12635;
  continue;
  } else {
  var vec__12616 = cljs.core.first(seq__12609__$1);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12616,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12616,(1),null);
  var G__12617_12636 = v;
  var G__12618_12637 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12617_12636,G__12618_12637) : f.call(null,G__12617_12636,G__12618_12637));
  
  var G__12638 = cljs.core.next(seq__12609__$1);
  var G__12639 = null;
  var G__12640 = (0);
  var G__12641 = (0);
  seq__12609 = G__12638;
  chunk__12610 = G__12639;
  count__12611 = G__12640;
  i__12612 = G__12641;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.get = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentTreeMap.prototype.entries = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_entries_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentTreeMap.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentTreeMap.prototype.keys = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator((function (){var G__12619 = coll;
  return (cljs.core.keys.cljs$core$IFn$_invoke$arity$1 ? cljs.core.keys.cljs$core$IFn$_invoke$arity$1(G__12619) : cljs.core.keys.call(null,G__12619));
  })());
  });
  
  cljs.core.PersistentTreeMap.prototype.values = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator((function (){var G__12620 = coll;
  return (cljs.core.vals.cljs$core$IFn$_invoke$arity$1 ? cljs.core.vals.cljs$core$IFn$_invoke$arity$1(G__12620) : cljs.core.vals.call(null,G__12620));
  })());
  });
  
  cljs.core.PersistentTreeMap.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentTreeMap.prototype.entry_at = (function (k){
  var self__ = this;
  var coll = this;
  var t = self__.tree;
  while(true){
  if(!((t == null))){
  var c = (function (){var G__12621 = k;
  var G__12622 = t.key;
  return (self__.comp.cljs$core$IFn$_invoke$arity$2 ? self__.comp.cljs$core$IFn$_invoke$arity$2(G__12621,G__12622) : self__.comp.call(null,G__12621,G__12622));
  })();
  if((c === (0))){
  return t;
  } else {
  if((c < (0))){
  var G__12642 = t.left;
  t = G__12642;
  continue;
  } else {
  var G__12643 = t.right;
  t = G__12643;
  continue;
  
  }
  }
  } else {
  return null;
  }
  break;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.has = (function (k){
  var self__ = this;
  var coll = this;
  return cljs.core.contains_QMARK_(coll,k);
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,k,null);
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,k,not_found){
  var self__ = this;
  var coll__$1 = this;
  var n = coll__$1.entry_at(k);
  if(!((n == null))){
  return n.val;
  } else {
  return not_found;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IKVReduce$_kv_reduce$arity$3 = (function (coll,f,init){
  var self__ = this;
  var coll__$1 = this;
  if(!((self__.tree == null))){
  return cljs.core.tree_map_kv_reduce(self__.tree,f,init);
  } else {
  return init;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.PersistentTreeMap(self__.comp,self__.tree,self__.cnt,self__.meta,self__.__hash));
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.cnt;
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  return cljs.core.create_tree_map_seq(self__.tree,false,self__.cnt);
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_map(coll__$1,other);
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeMap(self__.comp,null,(0),self__.meta,(0)));
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  var found = [null];
  var t = cljs.core.tree_map_remove(self__.comp,self__.tree,k,found);
  if((t == null)){
  if((cljs.core.nth.cljs$core$IFn$_invoke$arity$2(found,(0)) == null)){
  return coll__$1;
  } else {
  return (new cljs.core.PersistentTreeMap(self__.comp,null,(0),self__.meta,null));
  }
  } else {
  return (new cljs.core.PersistentTreeMap(self__.comp,t.blacken(),(self__.cnt - (1)),self__.meta,null));
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (coll,k,v){
  var self__ = this;
  var coll__$1 = this;
  var found = [null];
  var t = cljs.core.tree_map_add(self__.comp,self__.tree,k,v,found);
  if((t == null)){
  var found_node = cljs.core.nth.cljs$core$IFn$_invoke$arity$2(found,(0));
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(v,found_node.val)){
  return coll__$1;
  } else {
  return (new cljs.core.PersistentTreeMap(self__.comp,cljs.core.tree_map_replace(self__.comp,self__.tree,k,v),self__.cnt,self__.meta,null));
  }
  } else {
  return (new cljs.core.PersistentTreeMap(self__.comp,t.blacken(),(self__.cnt + (1)),self__.meta,null));
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IAssociative$_contains_key_QMARK_$arity$2 = (function (coll,k){
  var self__ = this;
  var coll__$1 = this;
  return !((coll__$1.entry_at(k) == null));
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  return cljs.core.create_tree_map_seq(self__.tree,true,self__.cnt);
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeMap(self__.comp,self__.tree,self__.cnt,meta__$1,self__.__hash));
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,entry){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core.vector_QMARK_(entry)){
  return cljs.core._assoc(coll__$1,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(entry,(1)));
  } else {
  var ret = coll__$1;
  var es = cljs.core.seq(entry);
  while(true){
  if((es == null)){
  return ret;
  } else {
  var e = cljs.core.first(es);
  if(cljs.core.vector_QMARK_(e)){
  var G__12644 = cljs.core._assoc(ret,cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(0)),cljs.core._nth.cljs$core$IFn$_invoke$arity$2(e,(1)));
  var G__12645 = cljs.core.next(es);
  ret = G__12644;
  es = G__12645;
  continue;
  } else {
  throw (new Error("conj on a map takes map entries or seqables of map entries"));
  }
  }
  break;
  }
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.call = (function() {
  var G__12646 = null;
  var G__12646__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12646__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12646 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12646__2.call(this,self__,k);
  case 3:
  return G__12646__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12646.cljs$core$IFn$_invoke$arity$2 = G__12646__2;
  G__12646.cljs$core$IFn$_invoke$arity$3 = G__12646__3;
  return G__12646;
  })()
  ;
  
  cljs.core.PersistentTreeMap.prototype.apply = (function (self__,args12608){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12608)));
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_sorted_seq$arity$2 = (function (coll,ascending_QMARK_){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  return cljs.core.create_tree_map_seq(self__.tree,ascending_QMARK_,self__.cnt);
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_sorted_seq_from$arity$3 = (function (coll,k,ascending_QMARK_){
  var self__ = this;
  var coll__$1 = this;
  if((self__.cnt > (0))){
  var stack = null;
  var t = self__.tree;
  while(true){
  if(!((t == null))){
  var c = (function (){var G__12623 = k;
  var G__12624 = t.key;
  return (self__.comp.cljs$core$IFn$_invoke$arity$2 ? self__.comp.cljs$core$IFn$_invoke$arity$2(G__12623,G__12624) : self__.comp.call(null,G__12623,G__12624));
  })();
  if((c === (0))){
  return (new cljs.core.PersistentTreeMapSeq(null,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack,t),ascending_QMARK_,(-1),null));
  } else {
  if(cljs.core.truth_(ascending_QMARK_)){
  if((c < (0))){
  var G__12647 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack,t);
  var G__12648 = t.left;
  stack = G__12647;
  t = G__12648;
  continue;
  } else {
  var G__12649 = stack;
  var G__12650 = t.right;
  stack = G__12649;
  t = G__12650;
  continue;
  }
  } else {
  if((c > (0))){
  var G__12651 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(stack,t);
  var G__12652 = t.right;
  stack = G__12651;
  t = G__12652;
  continue;
  } else {
  var G__12653 = stack;
  var G__12654 = t.left;
  stack = G__12653;
  t = G__12654;
  continue;
  }
  
  }
  }
  } else {
  if((stack == null)){
  return null;
  } else {
  return (new cljs.core.PersistentTreeMapSeq(null,stack,ascending_QMARK_,(-1),null));
  }
  }
  break;
  }
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_entry_key$arity$2 = (function (coll,entry){
  var self__ = this;
  var coll__$1 = this;
  var G__12625 = entry;
  return (cljs.core.key.cljs$core$IFn$_invoke$arity$1 ? cljs.core.key.cljs$core$IFn$_invoke$arity$1(G__12625) : cljs.core.key.call(null,G__12625));
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$ISorted$_comparator$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.comp;
  });
  
  cljs.core.PersistentTreeMap.cljs$lang$type = true;
  
  cljs.core.PersistentTreeMap.cljs$lang$ctorStr = "cljs.core/PersistentTreeMap";
  
  cljs.core.PersistentTreeMap.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentTreeMap");
  });
  
  cljs.core.__GT_PersistentTreeMap = (function __GT_PersistentTreeMap(comp,tree,cnt,meta,__hash){
  return (new cljs.core.PersistentTreeMap(comp,tree,cnt,meta,__hash));
  });
  
  cljs.core.PersistentTreeMap.EMPTY = (new cljs.core.PersistentTreeMap(cljs.core.compare,null,(0),null,cljs.core.empty_unordered_hash));
  (cljs.core.PersistentTreeMap.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * keyval => key val
  * Returns a new hash map with supplied mappings.
  * @param {...*} var_args
  */
  cljs.core.hash_map = (function() { 
  var hash_map__delegate = function (keyvals){
  var in$ = cljs.core.seq(keyvals);
  var out = cljs.core.transient$(cljs.core.PersistentHashMap.EMPTY);
  while(true){
  if(in$){
  var G__12655 = cljs.core.nnext(in$);
  var G__12656 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(out,cljs.core.first(in$),cljs.core.second(in$));
  in$ = G__12655;
  out = G__12656;
  continue;
  } else {
  return cljs.core.persistent_BANG_(out);
  }
  break;
  }
  };
  var hash_map = function (var_args){
  var keyvals = null;
  if (arguments.length > 0) {
  var G__12657__i = 0, G__12657__a = new Array(arguments.length -  0);
  while (G__12657__i < G__12657__a.length) {G__12657__a[G__12657__i] = arguments[G__12657__i + 0]; ++G__12657__i;}
    keyvals = new cljs.core.IndexedSeq(G__12657__a,0);
  } 
  return hash_map__delegate.call(this,keyvals);};
  hash_map.cljs$lang$maxFixedArity = 0;
  hash_map.cljs$lang$applyTo = (function (arglist__12658){
  var keyvals = cljs.core.seq(arglist__12658);
  return hash_map__delegate(keyvals);
  });
  hash_map.cljs$core$IFn$_invoke$arity$variadic = hash_map__delegate;
  return hash_map;
  })()
  ;
  /**
  * keyval => key val
  * Returns a new array map with supplied mappings.
  * @param {...*} var_args
  */
  cljs.core.array_map = (function() { 
  var array_map__delegate = function (keyvals){
  return cljs.core.PersistentArrayMap.fromArray(cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.array,keyvals),true,false);
  };
  var array_map = function (var_args){
  var keyvals = null;
  if (arguments.length > 0) {
  var G__12659__i = 0, G__12659__a = new Array(arguments.length -  0);
  while (G__12659__i < G__12659__a.length) {G__12659__a[G__12659__i] = arguments[G__12659__i + 0]; ++G__12659__i;}
    keyvals = new cljs.core.IndexedSeq(G__12659__a,0);
  } 
  return array_map__delegate.call(this,keyvals);};
  array_map.cljs$lang$maxFixedArity = 0;
  array_map.cljs$lang$applyTo = (function (arglist__12660){
  var keyvals = cljs.core.seq(arglist__12660);
  return array_map__delegate(keyvals);
  });
  array_map.cljs$core$IFn$_invoke$arity$variadic = array_map__delegate;
  return array_map;
  })()
  ;
  /**
  * keyval => key val
  * Returns a new object map with supplied mappings.
  * @param {...*} var_args
  */
  cljs.core.obj_map = (function() { 
  var obj_map__delegate = function (keyvals){
  var ks = [];
  var obj = (function (){var obj12664 = {};
  return obj12664;
  })();
  var kvs = cljs.core.seq(keyvals);
  while(true){
  if(kvs){
  ks.push(cljs.core.first(kvs));
  
  (obj[cljs.core.first(kvs)] = cljs.core.second(kvs));
  
  var G__12665 = cljs.core.nnext(kvs);
  kvs = G__12665;
  continue;
  } else {
  return cljs.core.ObjMap.fromObject(ks,obj);
  }
  break;
  }
  };
  var obj_map = function (var_args){
  var keyvals = null;
  if (arguments.length > 0) {
  var G__12666__i = 0, G__12666__a = new Array(arguments.length -  0);
  while (G__12666__i < G__12666__a.length) {G__12666__a[G__12666__i] = arguments[G__12666__i + 0]; ++G__12666__i;}
    keyvals = new cljs.core.IndexedSeq(G__12666__a,0);
  } 
  return obj_map__delegate.call(this,keyvals);};
  obj_map.cljs$lang$maxFixedArity = 0;
  obj_map.cljs$lang$applyTo = (function (arglist__12667){
  var keyvals = cljs.core.seq(arglist__12667);
  return obj_map__delegate(keyvals);
  });
  obj_map.cljs$core$IFn$_invoke$arity$variadic = obj_map__delegate;
  return obj_map;
  })()
  ;
  /**
  * keyval => key val
  * Returns a new sorted map with supplied mappings.
  * @param {...*} var_args
  */
  cljs.core.sorted_map = (function() { 
  var sorted_map__delegate = function (keyvals){
  var in$ = cljs.core.seq(keyvals);
  var out = cljs.core.PersistentTreeMap.EMPTY;
  while(true){
  if(in$){
  var G__12668 = cljs.core.nnext(in$);
  var G__12669 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(out,cljs.core.first(in$),cljs.core.second(in$));
  in$ = G__12668;
  out = G__12669;
  continue;
  } else {
  return out;
  }
  break;
  }
  };
  var sorted_map = function (var_args){
  var keyvals = null;
  if (arguments.length > 0) {
  var G__12670__i = 0, G__12670__a = new Array(arguments.length -  0);
  while (G__12670__i < G__12670__a.length) {G__12670__a[G__12670__i] = arguments[G__12670__i + 0]; ++G__12670__i;}
    keyvals = new cljs.core.IndexedSeq(G__12670__a,0);
  } 
  return sorted_map__delegate.call(this,keyvals);};
  sorted_map.cljs$lang$maxFixedArity = 0;
  sorted_map.cljs$lang$applyTo = (function (arglist__12671){
  var keyvals = cljs.core.seq(arglist__12671);
  return sorted_map__delegate(keyvals);
  });
  sorted_map.cljs$core$IFn$_invoke$arity$variadic = sorted_map__delegate;
  return sorted_map;
  })()
  ;
  /**
  * keyval => key val
  * Returns a new sorted map with supplied mappings, using the supplied comparator.
  * @param {...*} var_args
  */
  cljs.core.sorted_map_by = (function() { 
  var sorted_map_by__delegate = function (comparator,keyvals){
  var in$ = cljs.core.seq(keyvals);
  var out = (new cljs.core.PersistentTreeMap(cljs.core.fn__GT_comparator(comparator),null,(0),null,(0)));
  while(true){
  if(in$){
  var G__12672 = cljs.core.nnext(in$);
  var G__12673 = cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(out,cljs.core.first(in$),cljs.core.second(in$));
  in$ = G__12672;
  out = G__12673;
  continue;
  } else {
  return out;
  }
  break;
  }
  };
  var sorted_map_by = function (comparator,var_args){
  var keyvals = null;
  if (arguments.length > 1) {
  var G__12674__i = 0, G__12674__a = new Array(arguments.length -  1);
  while (G__12674__i < G__12674__a.length) {G__12674__a[G__12674__i] = arguments[G__12674__i + 1]; ++G__12674__i;}
    keyvals = new cljs.core.IndexedSeq(G__12674__a,0);
  } 
  return sorted_map_by__delegate.call(this,comparator,keyvals);};
  sorted_map_by.cljs$lang$maxFixedArity = 1;
  sorted_map_by.cljs$lang$applyTo = (function (arglist__12675){
  var comparator = cljs.core.first(arglist__12675);
  var keyvals = cljs.core.rest(arglist__12675);
  return sorted_map_by__delegate(comparator,keyvals);
  });
  sorted_map_by.cljs$core$IFn$_invoke$arity$variadic = sorted_map_by__delegate;
  return sorted_map_by;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.KeySeq = (function (mseq,_meta){
  this.mseq = mseq;
  this._meta = _meta;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374988;
  })
  cljs.core.KeySeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.KeySeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__._meta;
  });
  
  cljs.core.KeySeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var nseq = (((function (){var G__12676 = self__.mseq;
  if(G__12676){
  var bit__4489__auto__ = (G__12676.cljs$lang$protocol_mask$partition0$ & (128));
  if((bit__4489__auto__) || (G__12676.cljs$core$INext$)){
  return true;
  } else {
  if((!G__12676.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12676);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12676);
  }
  })())?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
  if((nseq == null)){
  return null;
  } else {
  return (new cljs.core.KeySeq(nseq,self__._meta));
  }
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.hash_ordered_coll(coll__$1);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__._meta);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var me = self__.mseq.cljs$core$ISeq$_first$arity$1(null);
  return me.cljs$core$IMapEntry$_key$arity$1(null);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var nseq = (((function (){var G__12677 = self__.mseq;
  if(G__12677){
  var bit__4489__auto__ = (G__12677.cljs$lang$protocol_mask$partition0$ & (128));
  if((bit__4489__auto__) || (G__12677.cljs$core$INext$)){
  return true;
  } else {
  if((!G__12677.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12677);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12677);
  }
  })())?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
  if(!((nseq == null))){
  return (new cljs.core.KeySeq(nseq,self__._meta));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.KeySeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.KeySeq(self__.mseq,new_meta));
  });
  
  cljs.core.KeySeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.KeySeq.cljs$lang$type = true;
  
  cljs.core.KeySeq.cljs$lang$ctorStr = "cljs.core/KeySeq";
  
  cljs.core.KeySeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/KeySeq");
  });
  
  cljs.core.__GT_KeySeq = (function __GT_KeySeq(mseq,_meta){
  return (new cljs.core.KeySeq(mseq,_meta));
  });
  
  (cljs.core.KeySeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * Returns a sequence of the map's keys.
  */
  cljs.core.keys = (function keys(hash_map){
  var temp__4126__auto__ = cljs.core.seq(hash_map);
  if(temp__4126__auto__){
  var mseq = temp__4126__auto__;
  return (new cljs.core.KeySeq(mseq,null));
  } else {
  return null;
  }
  });
  /**
  * Returns the key of the map entry.
  */
  cljs.core.key = (function key(map_entry){
  return cljs.core._key(map_entry);
  });
  
  /**
  * @constructor
  */
  cljs.core.ValSeq = (function (mseq,_meta){
  this.mseq = mseq;
  this._meta = _meta;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 32374988;
  })
  cljs.core.ValSeq.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.ValSeq.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__._meta;
  });
  
  cljs.core.ValSeq.prototype.cljs$core$INext$_next$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var nseq = (((function (){var G__12678 = self__.mseq;
  if(G__12678){
  var bit__4489__auto__ = (G__12678.cljs$lang$protocol_mask$partition0$ & (128));
  if((bit__4489__auto__) || (G__12678.cljs$core$INext$)){
  return true;
  } else {
  if((!G__12678.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12678);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12678);
  }
  })())?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
  if((nseq == null)){
  return null;
  } else {
  return (new cljs.core.ValSeq(nseq,self__._meta));
  }
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.hash_ordered_coll(coll__$1);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.equiv_sequential(coll__$1,other);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__._meta);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (coll,f){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$2(f,coll__$1);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (coll,f,start){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.seq_reduce.cljs$core$IFn$_invoke$arity$3(f,start,coll__$1);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$ISeq$_first$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var me = self__.mseq.cljs$core$ISeq$_first$arity$1(null);
  return me.cljs$core$IMapEntry$_val$arity$1(null);
  });
  
  cljs.core.ValSeq.prototype.cljs$core$ISeq$_rest$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var nseq = (((function (){var G__12679 = self__.mseq;
  if(G__12679){
  var bit__4489__auto__ = (G__12679.cljs$lang$protocol_mask$partition0$ & (128));
  if((bit__4489__auto__) || (G__12679.cljs$core$INext$)){
  return true;
  } else {
  if((!G__12679.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12679);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.INext,G__12679);
  }
  })())?self__.mseq.cljs$core$INext$_next$arity$1(null):cljs.core.next(self__.mseq));
  if(!((nseq == null))){
  return (new cljs.core.ValSeq(nseq,self__._meta));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.ValSeq.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return coll__$1;
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,new_meta){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.ValSeq(self__.mseq,new_meta));
  });
  
  cljs.core.ValSeq.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.cons(o,coll__$1);
  });
  
  cljs.core.ValSeq.cljs$lang$type = true;
  
  cljs.core.ValSeq.cljs$lang$ctorStr = "cljs.core/ValSeq";
  
  cljs.core.ValSeq.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ValSeq");
  });
  
  cljs.core.__GT_ValSeq = (function __GT_ValSeq(mseq,_meta){
  return (new cljs.core.ValSeq(mseq,_meta));
  });
  
  (cljs.core.ValSeq.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * Returns a sequence of the map's values.
  */
  cljs.core.vals = (function vals(hash_map){
  var temp__4126__auto__ = cljs.core.seq(hash_map);
  if(temp__4126__auto__){
  var mseq = temp__4126__auto__;
  return (new cljs.core.ValSeq(mseq,null));
  } else {
  return null;
  }
  });
  /**
  * Returns the value in the map entry.
  */
  cljs.core.val = (function val(map_entry){
  return cljs.core._val(map_entry);
  });
  /**
  * Returns a map that consists of the rest of the maps conj-ed onto
  * the first.  If a key occurs in more than one map, the mapping from
  * the latter (left-to-right) will be the mapping in the result.
  * @param {...*} var_args
  */
  cljs.core.merge = (function() { 
  var merge__delegate = function (maps){
  if(cljs.core.truth_(cljs.core.some(cljs.core.identity,maps))){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2((function (p1__12680_SHARP_,p2__12681_SHARP_){
  return cljs.core.conj.cljs$core$IFn$_invoke$arity$2((function (){var or__3808__auto__ = p1__12680_SHARP_;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.PersistentArrayMap.EMPTY;
  }
  })(),p2__12681_SHARP_);
  }),maps);
  } else {
  return null;
  }
  };
  var merge = function (var_args){
  var maps = null;
  if (arguments.length > 0) {
  var G__12682__i = 0, G__12682__a = new Array(arguments.length -  0);
  while (G__12682__i < G__12682__a.length) {G__12682__a[G__12682__i] = arguments[G__12682__i + 0]; ++G__12682__i;}
    maps = new cljs.core.IndexedSeq(G__12682__a,0);
  } 
  return merge__delegate.call(this,maps);};
  merge.cljs$lang$maxFixedArity = 0;
  merge.cljs$lang$applyTo = (function (arglist__12683){
  var maps = cljs.core.seq(arglist__12683);
  return merge__delegate(maps);
  });
  merge.cljs$core$IFn$_invoke$arity$variadic = merge__delegate;
  return merge;
  })()
  ;
  /**
  * Returns a map that consists of the rest of the maps conj-ed onto
  * the first.  If a key occurs in more than one map, the mapping(s)
  * from the latter (left-to-right) will be combined with the mapping in
  * the result by calling (f val-in-result val-in-latter).
  * @param {...*} var_args
  */
  cljs.core.merge_with = (function() { 
  var merge_with__delegate = function (f,maps){
  if(cljs.core.truth_(cljs.core.some(cljs.core.identity,maps))){
  var merge_entry = (function (m,e){
  var k = cljs.core.first(e);
  var v = cljs.core.second(e);
  if(cljs.core.contains_QMARK_(m,k)){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,(function (){var G__12686 = cljs.core.get.cljs$core$IFn$_invoke$arity$2(m,k);
  var G__12687 = v;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12686,G__12687) : f.call(null,G__12686,G__12687));
  })());
  } else {
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(m,k,v);
  }
  });
  var merge2 = ((function (merge_entry){
  return (function (m1,m2){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(merge_entry,(function (){var or__3808__auto__ = m1;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.PersistentArrayMap.EMPTY;
  }
  })(),cljs.core.seq(m2));
  });})(merge_entry))
  ;
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$2(merge2,maps);
  } else {
  return null;
  }
  };
  var merge_with = function (f,var_args){
  var maps = null;
  if (arguments.length > 1) {
  var G__12688__i = 0, G__12688__a = new Array(arguments.length -  1);
  while (G__12688__i < G__12688__a.length) {G__12688__a[G__12688__i] = arguments[G__12688__i + 1]; ++G__12688__i;}
    maps = new cljs.core.IndexedSeq(G__12688__a,0);
  } 
  return merge_with__delegate.call(this,f,maps);};
  merge_with.cljs$lang$maxFixedArity = 1;
  merge_with.cljs$lang$applyTo = (function (arglist__12689){
  var f = cljs.core.first(arglist__12689);
  var maps = cljs.core.rest(arglist__12689);
  return merge_with__delegate(f,maps);
  });
  merge_with.cljs$core$IFn$_invoke$arity$variadic = merge_with__delegate;
  return merge_with;
  })()
  ;
  /**
  * Returns a map containing only those entries in map whose key is in keys
  */
  cljs.core.select_keys = (function select_keys(map,keyseq){
  var ret = cljs.core.PersistentArrayMap.EMPTY;
  var keys = cljs.core.seq(keyseq);
  while(true){
  if(keys){
  var key = cljs.core.first(keys);
  var entry = cljs.core.get.cljs$core$IFn$_invoke$arity$3(map,key,new cljs.core.Keyword("cljs.core","not-found","cljs.core/not-found",-1572889185));
  var G__12690 = ((cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(entry,new cljs.core.Keyword("cljs.core","not-found","cljs.core/not-found",-1572889185)))?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(ret,key,entry):ret);
  var G__12691 = cljs.core.next(keys);
  ret = G__12690;
  keys = G__12691;
  continue;
  } else {
  return cljs.core.with_meta(ret,cljs.core.meta(map));
  }
  break;
  }
  });
  
  /**
  * @constructor
  */
  cljs.core.PersistentHashSet = (function (meta,hash_map,__hash){
  this.meta = meta;
  this.hash_map = hash_map;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 15077647;
  this.cljs$lang$protocol_mask$partition1$ = 8196;
  })
  cljs.core.PersistentHashSet.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentHashSet.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentHashSet.prototype.keys = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentHashSet.prototype.entries = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_set_entries_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentHashSet.prototype.values = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentHashSet.prototype.has = (function (k){
  var self__ = this;
  var coll = this;
  return cljs.core.contains_QMARK_(coll,k);
  });
  
  cljs.core.PersistentHashSet.prototype.forEach = (function (f){
  var self__ = this;
  var coll = this;
  var seq__12694 = cljs.core.seq(coll);
  var chunk__12695 = null;
  var count__12696 = (0);
  var i__12697 = (0);
  while(true){
  if((i__12697 < count__12696)){
  var vec__12698 = chunk__12695.cljs$core$IIndexed$_nth$arity$2(null,i__12697);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12698,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12698,(1),null);
  var G__12699_12704 = v;
  var G__12700_12705 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12699_12704,G__12700_12705) : f.call(null,G__12699_12704,G__12700_12705));
  
  var G__12706 = seq__12694;
  var G__12707 = chunk__12695;
  var G__12708 = count__12696;
  var G__12709 = (i__12697 + (1));
  seq__12694 = G__12706;
  chunk__12695 = G__12707;
  count__12696 = G__12708;
  i__12697 = G__12709;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__12694);
  if(temp__4126__auto__){
  var seq__12694__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__12694__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__12694__$1);
  var G__12710 = cljs.core.chunk_rest(seq__12694__$1);
  var G__12711 = c__4595__auto__;
  var G__12712 = cljs.core.count(c__4595__auto__);
  var G__12713 = (0);
  seq__12694 = G__12710;
  chunk__12695 = G__12711;
  count__12696 = G__12712;
  i__12697 = G__12713;
  continue;
  } else {
  var vec__12701 = cljs.core.first(seq__12694__$1);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12701,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12701,(1),null);
  var G__12702_12714 = v;
  var G__12703_12715 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12702_12714,G__12703_12715) : f.call(null,G__12702_12714,G__12703_12715));
  
  var G__12716 = cljs.core.next(seq__12694__$1);
  var G__12717 = null;
  var G__12718 = (0);
  var G__12719 = (0);
  seq__12694 = G__12716;
  chunk__12695 = G__12717;
  count__12696 = G__12718;
  i__12697 = G__12719;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,v){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,v,null);
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,v,not_found){
  var self__ = this;
  var coll__$1 = this;
  if(cljs.core._contains_key_QMARK_(self__.hash_map,v)){
  return v;
  } else {
  return not_found;
  }
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.PersistentHashSet(self__.meta,self__.hash_map,self__.__hash));
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._count(self__.hash_map);
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return (cljs.core.set_QMARK_(other)) && ((cljs.core.count(coll__$1) === cljs.core.count(other))) && (cljs.core.every_QMARK_(((function (coll__$1){
  return (function (p1__12692_SHARP_){
  return cljs.core.contains_QMARK_(coll__$1,p1__12692_SHARP_);
  });})(coll__$1))
  ,other));
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IEditableCollection$_as_transient$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.TransientHashSet(cljs.core._as_transient(self__.hash_map)));
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.with_meta(cljs.core.PersistentHashSet.EMPTY,self__.meta);
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ISet$_disjoin$arity$2 = (function (coll,v){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentHashSet(self__.meta,cljs.core._dissoc(self__.hash_map,v),null));
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.keys(self__.hash_map);
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentHashSet(meta__$1,self__.hash_map,self__.__hash));
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentHashSet(self__.meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.hash_map,o,null),null));
  });
  
  cljs.core.PersistentHashSet.prototype.call = (function() {
  var G__12720 = null;
  var G__12720__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12720__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12720 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12720__2.call(this,self__,k);
  case 3:
  return G__12720__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12720.cljs$core$IFn$_invoke$arity$2 = G__12720__2;
  G__12720.cljs$core$IFn$_invoke$arity$3 = G__12720__3;
  return G__12720;
  })()
  ;
  
  cljs.core.PersistentHashSet.prototype.apply = (function (self__,args12693){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12693)));
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.PersistentHashSet.cljs$lang$type = true;
  
  cljs.core.PersistentHashSet.cljs$lang$ctorStr = "cljs.core/PersistentHashSet";
  
  cljs.core.PersistentHashSet.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentHashSet");
  });
  
  cljs.core.__GT_PersistentHashSet = (function __GT_PersistentHashSet(meta,hash_map,__hash){
  return (new cljs.core.PersistentHashSet(meta,hash_map,__hash));
  });
  
  cljs.core.PersistentHashSet.EMPTY = (new cljs.core.PersistentHashSet(null,cljs.core.PersistentArrayMap.EMPTY,cljs.core.empty_unordered_hash));
  cljs.core.PersistentHashSet.fromArray = (function (items,no_clone){
  var len = items.length;
  if((len <= cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD)){
  var arr = ((no_clone)?items:cljs.core.aclone(items));
  var i = (0);
  var out = cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);
  while(true){
  if((i < len)){
  var G__12721 = (i + (1));
  var G__12722 = cljs.core._assoc_BANG_(out,(items[i]),null);
  i = G__12721;
  out = G__12722;
  continue;
  } else {
  return (new cljs.core.PersistentHashSet(null,cljs.core._persistent_BANG_(out),null));
  }
  break;
  }
  } else {
  var i = (0);
  var out = cljs.core.transient$(cljs.core.PersistentHashSet.EMPTY);
  while(true){
  if((i < len)){
  var G__12723 = (i + (1));
  var G__12724 = cljs.core._conj_BANG_(out,(items[i]));
  i = G__12723;
  out = G__12724;
  continue;
  } else {
  return cljs.core._persistent_BANG_(out);
  }
  break;
  }
  }
  });
  (cljs.core.PersistentHashSet.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  
  /**
  * @constructor
  */
  cljs.core.TransientHashSet = (function (transient_map){
  this.transient_map = transient_map;
  this.cljs$lang$protocol_mask$partition0$ = 259;
  this.cljs$lang$protocol_mask$partition1$ = 136;
  })
  cljs.core.TransientHashSet.prototype.call = (function() {
  var G__12726 = null;
  var G__12726__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var tcoll = self____$1;
  if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
  return null;
  } else {
  return k;
  }
  });
  var G__12726__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var tcoll = self____$1;
  if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
  return not_found;
  } else {
  return k;
  }
  });
  G__12726 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12726__2.call(this,self__,k);
  case 3:
  return G__12726__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12726.cljs$core$IFn$_invoke$arity$2 = G__12726__2;
  G__12726.cljs$core$IFn$_invoke$arity$3 = G__12726__3;
  return G__12726;
  })()
  ;
  
  cljs.core.TransientHashSet.prototype.apply = (function (self__,args12725){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12725)));
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var tcoll = this;
  if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
  return null;
  } else {
  return k;
  }
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var tcoll = this;
  if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,k,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
  return not_found;
  } else {
  return k;
  }
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (tcoll,v){
  var self__ = this;
  var tcoll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(tcoll__$1,v,null);
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (tcoll,v,not_found){
  var self__ = this;
  var tcoll__$1 = this;
  if((cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(self__.transient_map,v,cljs.core.lookup_sentinel) === cljs.core.lookup_sentinel)){
  return not_found;
  } else {
  return v;
  }
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$ICounted$_count$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  return cljs.core.count(self__.transient_map);
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$ITransientSet$_disjoin_BANG_$arity$2 = (function (tcoll,v){
  var self__ = this;
  var tcoll__$1 = this;
  self__.transient_map = cljs.core.dissoc_BANG_.cljs$core$IFn$_invoke$arity$2(self__.transient_map,v);
  
  return tcoll__$1;
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$ITransientCollection$_conj_BANG_$arity$2 = (function (tcoll,o){
  var self__ = this;
  var tcoll__$1 = this;
  self__.transient_map = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(self__.transient_map,o,null);
  
  return tcoll__$1;
  });
  
  cljs.core.TransientHashSet.prototype.cljs$core$ITransientCollection$_persistent_BANG_$arity$1 = (function (tcoll){
  var self__ = this;
  var tcoll__$1 = this;
  return (new cljs.core.PersistentHashSet(null,cljs.core.persistent_BANG_(self__.transient_map),null));
  });
  
  cljs.core.TransientHashSet.cljs$lang$type = true;
  
  cljs.core.TransientHashSet.cljs$lang$ctorStr = "cljs.core/TransientHashSet";
  
  cljs.core.TransientHashSet.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/TransientHashSet");
  });
  
  cljs.core.__GT_TransientHashSet = (function __GT_TransientHashSet(transient_map){
  return (new cljs.core.TransientHashSet(transient_map));
  });
  
  
  /**
  * @constructor
  */
  cljs.core.PersistentTreeSet = (function (meta,tree_map,__hash){
  this.meta = meta;
  this.tree_map = tree_map;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 417730831;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.PersistentTreeSet.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.PersistentTreeSet.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.PersistentTreeSet.prototype.keys = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentTreeSet.prototype.entries = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_set_entries_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentTreeSet.prototype.values = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.es6_iterator(cljs.core.seq(coll));
  });
  
  cljs.core.PersistentTreeSet.prototype.has = (function (k){
  var self__ = this;
  var coll = this;
  return cljs.core.contains_QMARK_(coll,k);
  });
  
  cljs.core.PersistentTreeSet.prototype.forEach = (function (f){
  var self__ = this;
  var coll = this;
  var seq__12729 = cljs.core.seq(coll);
  var chunk__12730 = null;
  var count__12731 = (0);
  var i__12732 = (0);
  while(true){
  if((i__12732 < count__12731)){
  var vec__12733 = chunk__12730.cljs$core$IIndexed$_nth$arity$2(null,i__12732);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12733,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12733,(1),null);
  var G__12734_12739 = v;
  var G__12735_12740 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12734_12739,G__12735_12740) : f.call(null,G__12734_12739,G__12735_12740));
  
  var G__12741 = seq__12729;
  var G__12742 = chunk__12730;
  var G__12743 = count__12731;
  var G__12744 = (i__12732 + (1));
  seq__12729 = G__12741;
  chunk__12730 = G__12742;
  count__12731 = G__12743;
  i__12732 = G__12744;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__12729);
  if(temp__4126__auto__){
  var seq__12729__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__12729__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__12729__$1);
  var G__12745 = cljs.core.chunk_rest(seq__12729__$1);
  var G__12746 = c__4595__auto__;
  var G__12747 = cljs.core.count(c__4595__auto__);
  var G__12748 = (0);
  seq__12729 = G__12745;
  chunk__12730 = G__12746;
  count__12731 = G__12747;
  i__12732 = G__12748;
  continue;
  } else {
  var vec__12736 = cljs.core.first(seq__12729__$1);
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12736,(0),null);
  var v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12736,(1),null);
  var G__12737_12749 = v;
  var G__12738_12750 = k;
  (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12737_12749,G__12738_12750) : f.call(null,G__12737_12749,G__12738_12750));
  
  var G__12751 = cljs.core.next(seq__12729__$1);
  var G__12752 = null;
  var G__12753 = (0);
  var G__12754 = (0);
  seq__12729 = G__12751;
  chunk__12730 = G__12752;
  count__12731 = G__12753;
  i__12732 = G__12754;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (coll,v){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._lookup.cljs$core$IFn$_invoke$arity$3(coll__$1,v,null);
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (coll,v,not_found){
  var self__ = this;
  var coll__$1 = this;
  var n = self__.tree_map.entry_at(v);
  if(!((n == null))){
  return n.key;
  } else {
  return not_found;
  }
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IMeta$_meta$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return self__.meta;
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.PersistentTreeSet(self__.meta,self__.tree_map,self__.__hash));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ICounted$_count$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.count(self__.tree_map);
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IReversible$_rseq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  if((cljs.core.count(self__.tree_map) > (0))){
  return cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.key,cljs.core.rseq(self__.tree_map));
  } else {
  return null;
  }
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IHash$_hash$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_unordered_coll(coll__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (coll,other){
  var self__ = this;
  var coll__$1 = this;
  return (cljs.core.set_QMARK_(other)) && ((cljs.core.count(coll__$1) === cljs.core.count(other))) && (cljs.core.every_QMARK_(((function (coll__$1){
  return (function (p1__12727_SHARP_){
  return cljs.core.contains_QMARK_(coll__$1,p1__12727_SHARP_);
  });})(coll__$1))
  ,other));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeSet(self__.meta,cljs.core._empty(self__.tree_map),(0)));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ISet$_disjoin$arity$2 = (function (coll,v){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeSet(self__.meta,cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(self__.tree_map,v),null));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.keys(self__.tree_map);
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (coll,meta__$1){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeSet(meta__$1,self__.tree_map,self__.__hash));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ICollection$_conj$arity$2 = (function (coll,o){
  var self__ = this;
  var coll__$1 = this;
  return (new cljs.core.PersistentTreeSet(self__.meta,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(self__.tree_map,o,null),null));
  });
  
  cljs.core.PersistentTreeSet.prototype.call = (function() {
  var G__12755 = null;
  var G__12755__2 = (function (self__,k){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  var G__12755__3 = (function (self__,k,not_found){
  var self__ = this;
  var self____$1 = this;
  var coll = self____$1;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  G__12755 = function(self__,k,not_found){
  switch(arguments.length){
  case 2:
  return G__12755__2.call(this,self__,k);
  case 3:
  return G__12755__3.call(this,self__,k,not_found);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12755.cljs$core$IFn$_invoke$arity$2 = G__12755__2;
  G__12755.cljs$core$IFn$_invoke$arity$3 = G__12755__3;
  return G__12755;
  })()
  ;
  
  cljs.core.PersistentTreeSet.prototype.apply = (function (self__,args12728){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args12728)));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IFn$_invoke$arity$1 = (function (k){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$2(null,k);
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IFn$_invoke$arity$2 = (function (k,not_found){
  var self__ = this;
  var coll = this;
  return coll.cljs$core$ILookup$_lookup$arity$3(null,k,not_found);
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_sorted_seq$arity$2 = (function (coll,ascending_QMARK_){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.key,cljs.core._sorted_seq(self__.tree_map,ascending_QMARK_));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_sorted_seq_from$arity$3 = (function (coll,k,ascending_QMARK_){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.key,cljs.core._sorted_seq_from(self__.tree_map,k,ascending_QMARK_));
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_entry_key$arity$2 = (function (coll,entry){
  var self__ = this;
  var coll__$1 = this;
  return entry;
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$ISorted$_comparator$arity$1 = (function (coll){
  var self__ = this;
  var coll__$1 = this;
  return cljs.core._comparator(self__.tree_map);
  });
  
  cljs.core.PersistentTreeSet.cljs$lang$type = true;
  
  cljs.core.PersistentTreeSet.cljs$lang$ctorStr = "cljs.core/PersistentTreeSet";
  
  cljs.core.PersistentTreeSet.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/PersistentTreeSet");
  });
  
  cljs.core.__GT_PersistentTreeSet = (function __GT_PersistentTreeSet(meta,tree_map,__hash){
  return (new cljs.core.PersistentTreeSet(meta,tree_map,__hash));
  });
  
  cljs.core.PersistentTreeSet.EMPTY = (new cljs.core.PersistentTreeSet(null,cljs.core.PersistentTreeMap.EMPTY,cljs.core.empty_unordered_hash));
  (cljs.core.PersistentTreeSet.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  cljs.core.set_from_indexed_seq = (function set_from_indexed_seq(iseq){
  var arr = iseq.arr;
  var ret = (function (){var a__4689__auto__ = arr;
  var i = (0);
  var res = cljs.core._as_transient(cljs.core.PersistentHashSet.EMPTY);
  while(true){
  if((i < a__4689__auto__.length)){
  var G__12756 = (i + (1));
  var G__12757 = res.cljs$core$ITransientCollection$_conj_BANG_$arity$2(null,(arr[i]));
  i = G__12756;
  res = G__12757;
  continue;
  } else {
  return res;
  }
  break;
  }
  })();
  return ret.cljs$core$ITransientCollection$_persistent_BANG_$arity$1(null);
  });
  /**
  * Returns a set of the distinct elements of coll.
  */
  cljs.core.set = (function set(coll){
  var in$ = cljs.core.seq(coll);
  if((in$ == null)){
  return cljs.core.PersistentHashSet.EMPTY;
  } else {
  if(((in$ instanceof cljs.core.IndexedSeq)) && ((in$.i === (0)))){
  return cljs.core.set_from_indexed_seq(in$);
  } else {
  var in$__$1 = in$;
  var out = cljs.core._as_transient(cljs.core.PersistentHashSet.EMPTY);
  while(true){
  if(!((in$__$1 == null))){
  var G__12758 = in$__$1.cljs$core$INext$_next$arity$1(null);
  var G__12759 = out.cljs$core$ITransientCollection$_conj_BANG_$arity$2(null,in$__$1.cljs$core$ISeq$_first$arity$1(null));
  in$__$1 = G__12758;
  out = G__12759;
  continue;
  } else {
  return out.cljs$core$ITransientCollection$_persistent_BANG_$arity$1(null);
  }
  break;
  }
  
  }
  }
  });
  /**
  * @param {...*} var_args
  */
  cljs.core.hash_set = (function() {
  var hash_set = null;
  var hash_set__0 = (function (){
  return cljs.core.PersistentHashSet.EMPTY;
  });
  var hash_set__1 = (function() { 
  var G__12760__delegate = function (keys){
  return cljs.core.set(keys);
  };
  var G__12760 = function (var_args){
  var keys = null;
  if (arguments.length > 0) {
  var G__12761__i = 0, G__12761__a = new Array(arguments.length -  0);
  while (G__12761__i < G__12761__a.length) {G__12761__a[G__12761__i] = arguments[G__12761__i + 0]; ++G__12761__i;}
    keys = new cljs.core.IndexedSeq(G__12761__a,0);
  } 
  return G__12760__delegate.call(this,keys);};
  G__12760.cljs$lang$maxFixedArity = 0;
  G__12760.cljs$lang$applyTo = (function (arglist__12762){
  var keys = cljs.core.seq(arglist__12762);
  return G__12760__delegate(keys);
  });
  G__12760.cljs$core$IFn$_invoke$arity$variadic = G__12760__delegate;
  return G__12760;
  })()
  ;
  hash_set = function(var_args){
  var keys = var_args;
  switch(arguments.length){
  case 0:
  return hash_set__0.call(this);
  default:
  var G__12763 = null;
  if (arguments.length > 0) {
  var G__12764__i = 0, G__12764__a = new Array(arguments.length -  0);
  while (G__12764__i < G__12764__a.length) {G__12764__a[G__12764__i] = arguments[G__12764__i + 0]; ++G__12764__i;}
  G__12763 = new cljs.core.IndexedSeq(G__12764__a,0);
  }
  return hash_set__1.cljs$core$IFn$_invoke$arity$variadic(G__12763);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  hash_set.cljs$lang$maxFixedArity = 0;
  hash_set.cljs$lang$applyTo = hash_set__1.cljs$lang$applyTo;
  hash_set.cljs$core$IFn$_invoke$arity$0 = hash_set__0;
  hash_set.cljs$core$IFn$_invoke$arity$variadic = hash_set__1.cljs$core$IFn$_invoke$arity$variadic;
  return hash_set;
  })()
  ;
  /**
  * Returns a new sorted set with supplied keys.
  * @param {...*} var_args
  */
  cljs.core.sorted_set = (function() { 
  var sorted_set__delegate = function (keys){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,cljs.core.PersistentTreeSet.EMPTY,keys);
  };
  var sorted_set = function (var_args){
  var keys = null;
  if (arguments.length > 0) {
  var G__12765__i = 0, G__12765__a = new Array(arguments.length -  0);
  while (G__12765__i < G__12765__a.length) {G__12765__a[G__12765__i] = arguments[G__12765__i + 0]; ++G__12765__i;}
    keys = new cljs.core.IndexedSeq(G__12765__a,0);
  } 
  return sorted_set__delegate.call(this,keys);};
  sorted_set.cljs$lang$maxFixedArity = 0;
  sorted_set.cljs$lang$applyTo = (function (arglist__12766){
  var keys = cljs.core.seq(arglist__12766);
  return sorted_set__delegate(keys);
  });
  sorted_set.cljs$core$IFn$_invoke$arity$variadic = sorted_set__delegate;
  return sorted_set;
  })()
  ;
  /**
  * Returns a new sorted set with supplied keys, using the supplied comparator.
  * @param {...*} var_args
  */
  cljs.core.sorted_set_by = (function() { 
  var sorted_set_by__delegate = function (comparator,keys){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core._conj,(new cljs.core.PersistentTreeSet(null,cljs.core.sorted_map_by(comparator),(0))),keys);
  };
  var sorted_set_by = function (comparator,var_args){
  var keys = null;
  if (arguments.length > 1) {
  var G__12767__i = 0, G__12767__a = new Array(arguments.length -  1);
  while (G__12767__i < G__12767__a.length) {G__12767__a[G__12767__i] = arguments[G__12767__i + 1]; ++G__12767__i;}
    keys = new cljs.core.IndexedSeq(G__12767__a,0);
  } 
  return sorted_set_by__delegate.call(this,comparator,keys);};
  sorted_set_by.cljs$lang$maxFixedArity = 1;
  sorted_set_by.cljs$lang$applyTo = (function (arglist__12768){
  var comparator = cljs.core.first(arglist__12768);
  var keys = cljs.core.rest(arglist__12768);
  return sorted_set_by__delegate(comparator,keys);
  });
  sorted_set_by.cljs$core$IFn$_invoke$arity$variadic = sorted_set_by__delegate;
  return sorted_set_by;
  })()
  ;
  /**
  * Given a map of replacement pairs and a vector/collection, returns a
  * vector/seq with any elements = a key in smap replaced with the
  * corresponding val in smap.  Returns a transducer when no collection
  * is provided.
  */
  cljs.core.replace = (function() {
  var replace = null;
  var replace__1 = (function (smap){
  return cljs.core.map.cljs$core$IFn$_invoke$arity$1((function (p1__12769_SHARP_){
  var temp__4124__auto__ = cljs.core.find(smap,p1__12769_SHARP_);
  if(cljs.core.truth_(temp__4124__auto__)){
  var e = temp__4124__auto__;
  return cljs.core.val(e);
  } else {
  return p1__12769_SHARP_;
  }
  }));
  });
  var replace__2 = (function (smap,coll){
  if(cljs.core.vector_QMARK_(coll)){
  var n = cljs.core.count(coll);
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (n){
  return (function (v,i){
  var temp__4124__auto__ = cljs.core.find(smap,cljs.core.nth.cljs$core$IFn$_invoke$arity$2(v,i));
  if(cljs.core.truth_(temp__4124__auto__)){
  var e = temp__4124__auto__;
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(v,i,cljs.core.second(e));
  } else {
  return v;
  }
  });})(n))
  ,coll,cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,cljs.core.iterate(cljs.core.inc,(0))));
  } else {
  return cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p1__12770_SHARP_){
  var temp__4124__auto__ = cljs.core.find(smap,p1__12770_SHARP_);
  if(cljs.core.truth_(temp__4124__auto__)){
  var e = temp__4124__auto__;
  return cljs.core.second(e);
  } else {
  return p1__12770_SHARP_;
  }
  }),coll);
  }
  });
  replace = function(smap,coll){
  switch(arguments.length){
  case 1:
  return replace__1.call(this,smap);
  case 2:
  return replace__2.call(this,smap,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  replace.cljs$core$IFn$_invoke$arity$1 = replace__1;
  replace.cljs$core$IFn$_invoke$arity$2 = replace__2;
  return replace;
  })()
  ;
  /**
  * Returns a lazy sequence of the elements of coll with duplicates removed
  */
  cljs.core.distinct = (function() {
  var distinct = null;
  var distinct__0 = (function (){
  return (function (rf){
  var seen = cljs.core.volatile_BANG_(cljs.core.PersistentHashSet.EMPTY);
  return ((function (seen){
  return (function() {
  var G__12791 = null;
  var G__12791__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12791__1 = (function (result){
  var G__12781 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12781) : rf.call(null,G__12781));
  });
  var G__12791__2 = (function (result,input){
  if(cljs.core.contains_QMARK_((function (){var G__12782 = seen;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12782) : cljs.core.deref.call(null,G__12782));
  })(),input)){
  return result;
  } else {
  seen.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(seen.cljs$core$IDeref$_deref$arity$1(null),input));
  
  var G__12783 = result;
  var G__12784 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12783,G__12784) : rf.call(null,G__12783,G__12784));
  }
  });
  G__12791 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12791__0.call(this);
  case 1:
  return G__12791__1.call(this,result);
  case 2:
  return G__12791__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12791.cljs$core$IFn$_invoke$arity$0 = G__12791__0;
  G__12791.cljs$core$IFn$_invoke$arity$1 = G__12791__1;
  G__12791.cljs$core$IFn$_invoke$arity$2 = G__12791__2;
  return G__12791;
  })()
  ;})(seen))
  });
  });
  var distinct__1 = (function (coll){
  var step = (function step(xs,seen){
  return (new cljs.core.LazySeq(null,(function (){
  return (function (p__12789,seen__$1){
  while(true){
  var vec__12790 = p__12789;
  var f = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12790,(0),null);
  var xs__$1 = vec__12790;
  var temp__4126__auto__ = cljs.core.seq(xs__$1);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.contains_QMARK_(seen__$1,f)){
  var G__12792 = cljs.core.rest(s);
  var G__12793 = seen__$1;
  p__12789 = G__12792;
  seen__$1 = G__12793;
  continue;
  } else {
  return cljs.core.cons(f,step(cljs.core.rest(s),cljs.core.conj.cljs$core$IFn$_invoke$arity$2(seen__$1,f)));
  }
  } else {
  return null;
  }
  break;
  }
  }).call(null,xs,seen);
  }),null,null));
  });
  return step(coll,cljs.core.PersistentHashSet.EMPTY);
  });
  distinct = function(coll){
  switch(arguments.length){
  case 0:
  return distinct__0.call(this);
  case 1:
  return distinct__1.call(this,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  distinct.cljs$core$IFn$_invoke$arity$0 = distinct__0;
  distinct.cljs$core$IFn$_invoke$arity$1 = distinct__1;
  return distinct;
  })()
  ;
  cljs.core.butlast = (function butlast(s){
  var ret = cljs.core.PersistentVector.EMPTY;
  var s__$1 = s;
  while(true){
  if(cljs.core.next(s__$1)){
  var G__12794 = cljs.core.conj.cljs$core$IFn$_invoke$arity$2(ret,cljs.core.first(s__$1));
  var G__12795 = cljs.core.next(s__$1);
  ret = G__12794;
  s__$1 = G__12795;
  continue;
  } else {
  return cljs.core.seq(ret);
  }
  break;
  }
  });
  /**
  * Returns the name String of a string, symbol or keyword.
  */
  cljs.core.name = (function name(x){
  if((function (){var G__12797 = x;
  if(G__12797){
  var bit__4482__auto__ = (G__12797.cljs$lang$protocol_mask$partition1$ & (4096));
  if((bit__4482__auto__) || (G__12797.cljs$core$INamed$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return x.cljs$core$INamed$_name$arity$1(null);
  } else {
  if(typeof x === 'string'){
  return x;
  } else {
  throw (new Error([cljs.core.str("Doesn't support name: "),cljs.core.str(x)].join('')));
  }
  }
  });
  /**
  * Returns a map with the keys mapped to the corresponding vals.
  */
  cljs.core.zipmap = (function zipmap(keys,vals){
  var map = cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY);
  var ks = cljs.core.seq(keys);
  var vs = cljs.core.seq(vals);
  while(true){
  if((ks) && (vs)){
  var G__12798 = cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(map,cljs.core.first(ks),cljs.core.first(vs));
  var G__12799 = cljs.core.next(ks);
  var G__12800 = cljs.core.next(vs);
  map = G__12798;
  ks = G__12799;
  vs = G__12800;
  continue;
  } else {
  return cljs.core.persistent_BANG_(map);
  }
  break;
  }
  });
  /**
  * Returns the x for which (k x), a number, is greatest.
  * @param {...*} var_args
  */
  cljs.core.max_key = (function() {
  var max_key = null;
  var max_key__2 = (function (k,x){
  return x;
  });
  var max_key__3 = (function (k,x,y){
  if(((function (){var G__12811 = x;
  return (k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(G__12811) : k.call(null,G__12811));
  })() > (function (){var G__12812 = y;
  return (k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(G__12812) : k.call(null,G__12812));
  })())){
  return x;
  } else {
  return y;
  }
  });
  var max_key__4 = (function() { 
  var G__12813__delegate = function (k,x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__12801_SHARP_,p2__12802_SHARP_){
  return max_key.cljs$core$IFn$_invoke$arity$3(k,p1__12801_SHARP_,p2__12802_SHARP_);
  }),max_key.cljs$core$IFn$_invoke$arity$3(k,x,y),more);
  };
  var G__12813 = function (k,x,y,var_args){
  var more = null;
  if (arguments.length > 3) {
  var G__12814__i = 0, G__12814__a = new Array(arguments.length -  3);
  while (G__12814__i < G__12814__a.length) {G__12814__a[G__12814__i] = arguments[G__12814__i + 3]; ++G__12814__i;}
    more = new cljs.core.IndexedSeq(G__12814__a,0);
  } 
  return G__12813__delegate.call(this,k,x,y,more);};
  G__12813.cljs$lang$maxFixedArity = 3;
  G__12813.cljs$lang$applyTo = (function (arglist__12815){
  var k = cljs.core.first(arglist__12815);
  arglist__12815 = cljs.core.next(arglist__12815);
  var x = cljs.core.first(arglist__12815);
  arglist__12815 = cljs.core.next(arglist__12815);
  var y = cljs.core.first(arglist__12815);
  var more = cljs.core.rest(arglist__12815);
  return G__12813__delegate(k,x,y,more);
  });
  G__12813.cljs$core$IFn$_invoke$arity$variadic = G__12813__delegate;
  return G__12813;
  })()
  ;
  max_key = function(k,x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return max_key__2.call(this,k,x);
  case 3:
  return max_key__3.call(this,k,x,y);
  default:
  var G__12816 = null;
  if (arguments.length > 3) {
  var G__12817__i = 0, G__12817__a = new Array(arguments.length -  3);
  while (G__12817__i < G__12817__a.length) {G__12817__a[G__12817__i] = arguments[G__12817__i + 3]; ++G__12817__i;}
  G__12816 = new cljs.core.IndexedSeq(G__12817__a,0);
  }
  return max_key__4.cljs$core$IFn$_invoke$arity$variadic(k,x,y, G__12816);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  max_key.cljs$lang$maxFixedArity = 3;
  max_key.cljs$lang$applyTo = max_key__4.cljs$lang$applyTo;
  max_key.cljs$core$IFn$_invoke$arity$2 = max_key__2;
  max_key.cljs$core$IFn$_invoke$arity$3 = max_key__3;
  max_key.cljs$core$IFn$_invoke$arity$variadic = max_key__4.cljs$core$IFn$_invoke$arity$variadic;
  return max_key;
  })()
  ;
  /**
  * Returns the x for which (k x), a number, is least.
  * @param {...*} var_args
  */
  cljs.core.min_key = (function() {
  var min_key = null;
  var min_key__2 = (function (k,x){
  return x;
  });
  var min_key__3 = (function (k,x,y){
  if(((function (){var G__12828 = x;
  return (k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(G__12828) : k.call(null,G__12828));
  })() < (function (){var G__12829 = y;
  return (k.cljs$core$IFn$_invoke$arity$1 ? k.cljs$core$IFn$_invoke$arity$1(G__12829) : k.call(null,G__12829));
  })())){
  return x;
  } else {
  return y;
  }
  });
  var min_key__4 = (function() { 
  var G__12830__delegate = function (k,x,y,more){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__12818_SHARP_,p2__12819_SHARP_){
  return min_key.cljs$core$IFn$_invoke$arity$3(k,p1__12818_SHARP_,p2__12819_SHARP_);
  }),min_key.cljs$core$IFn$_invoke$arity$3(k,x,y),more);
  };
  var G__12830 = function (k,x,y,var_args){
  var more = null;
  if (arguments.length > 3) {
  var G__12831__i = 0, G__12831__a = new Array(arguments.length -  3);
  while (G__12831__i < G__12831__a.length) {G__12831__a[G__12831__i] = arguments[G__12831__i + 3]; ++G__12831__i;}
    more = new cljs.core.IndexedSeq(G__12831__a,0);
  } 
  return G__12830__delegate.call(this,k,x,y,more);};
  G__12830.cljs$lang$maxFixedArity = 3;
  G__12830.cljs$lang$applyTo = (function (arglist__12832){
  var k = cljs.core.first(arglist__12832);
  arglist__12832 = cljs.core.next(arglist__12832);
  var x = cljs.core.first(arglist__12832);
  arglist__12832 = cljs.core.next(arglist__12832);
  var y = cljs.core.first(arglist__12832);
  var more = cljs.core.rest(arglist__12832);
  return G__12830__delegate(k,x,y,more);
  });
  G__12830.cljs$core$IFn$_invoke$arity$variadic = G__12830__delegate;
  return G__12830;
  })()
  ;
  min_key = function(k,x,y,var_args){
  var more = var_args;
  switch(arguments.length){
  case 2:
  return min_key__2.call(this,k,x);
  case 3:
  return min_key__3.call(this,k,x,y);
  default:
  var G__12833 = null;
  if (arguments.length > 3) {
  var G__12834__i = 0, G__12834__a = new Array(arguments.length -  3);
  while (G__12834__i < G__12834__a.length) {G__12834__a[G__12834__i] = arguments[G__12834__i + 3]; ++G__12834__i;}
  G__12833 = new cljs.core.IndexedSeq(G__12834__a,0);
  }
  return min_key__4.cljs$core$IFn$_invoke$arity$variadic(k,x,y, G__12833);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  min_key.cljs$lang$maxFixedArity = 3;
  min_key.cljs$lang$applyTo = min_key__4.cljs$lang$applyTo;
  min_key.cljs$core$IFn$_invoke$arity$2 = min_key__2;
  min_key.cljs$core$IFn$_invoke$arity$3 = min_key__3;
  min_key.cljs$core$IFn$_invoke$arity$variadic = min_key__4.cljs$core$IFn$_invoke$arity$variadic;
  return min_key;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.ArrayList = (function (arr){
  this.arr = arr;
  })
  cljs.core.ArrayList.prototype.add = (function (x){
  var self__ = this;
  var _ = this;
  return self__.arr.push(x);
  });
  
  cljs.core.ArrayList.prototype.size = (function (){
  var self__ = this;
  var _ = this;
  return self__.arr.length;
  });
  
  cljs.core.ArrayList.prototype.clear = (function (){
  var self__ = this;
  var _ = this;
  return self__.arr = [];
  });
  
  cljs.core.ArrayList.prototype.isEmpty = (function (){
  var self__ = this;
  var _ = this;
  return (self__.arr.length === (0));
  });
  
  cljs.core.ArrayList.prototype.toArray = (function (){
  var self__ = this;
  var _ = this;
  return self__.arr;
  });
  
  cljs.core.ArrayList.cljs$lang$type = true;
  
  cljs.core.ArrayList.cljs$lang$ctorStr = "cljs.core/ArrayList";
  
  cljs.core.ArrayList.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ArrayList");
  });
  
  cljs.core.__GT_ArrayList = (function __GT_ArrayList(arr){
  return (new cljs.core.ArrayList(arr));
  });
  
  cljs.core.array_list = (function array_list(){
  return (new cljs.core.ArrayList([]));
  });
  /**
  * Returns a lazy sequence of lists like partition, but may include
  * partitions with fewer than n items at the end.  Returns a stateful
  * transducer when no collection is provided.
  */
  cljs.core.partition_all = (function() {
  var partition_all = null;
  var partition_all__1 = (function (n){
  return (function (rf){
  var a = cljs.core.array_list();
  return ((function (a){
  return (function() {
  var G__12851 = null;
  var G__12851__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12851__1 = (function (result){
  var result__$1 = (cljs.core.truth_(a.isEmpty())?result:(function (){var v = cljs.core.vec(a.toArray());
  a.clear();
  
  return cljs.core.unreduced((function (){var G__12846 = result;
  var G__12847 = v;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12846,G__12847) : rf.call(null,G__12846,G__12847));
  })());
  })());
  var G__12848 = result__$1;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12848) : rf.call(null,G__12848));
  });
  var G__12851__2 = (function (result,input){
  a.add(input);
  
  if((n === a.size())){
  var v = cljs.core.vec(a.toArray());
  a.clear();
  
  var G__12849 = result;
  var G__12850 = v;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12849,G__12850) : rf.call(null,G__12849,G__12850));
  } else {
  return result;
  }
  });
  G__12851 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12851__0.call(this);
  case 1:
  return G__12851__1.call(this,result);
  case 2:
  return G__12851__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12851.cljs$core$IFn$_invoke$arity$0 = G__12851__0;
  G__12851.cljs$core$IFn$_invoke$arity$1 = G__12851__1;
  G__12851.cljs$core$IFn$_invoke$arity$2 = G__12851__2;
  return G__12851;
  })()
  ;})(a))
  });
  });
  var partition_all__2 = (function (n,coll){
  return partition_all.cljs$core$IFn$_invoke$arity$3(n,n,coll);
  });
  var partition_all__3 = (function (n,step,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  return cljs.core.cons(cljs.core.take.cljs$core$IFn$_invoke$arity$2(n,s),partition_all.cljs$core$IFn$_invoke$arity$3(n,step,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(step,s)));
  } else {
  return null;
  }
  }),null,null));
  });
  partition_all = function(n,step,coll){
  switch(arguments.length){
  case 1:
  return partition_all__1.call(this,n);
  case 2:
  return partition_all__2.call(this,n,step);
  case 3:
  return partition_all__3.call(this,n,step,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  partition_all.cljs$core$IFn$_invoke$arity$1 = partition_all__1;
  partition_all.cljs$core$IFn$_invoke$arity$2 = partition_all__2;
  partition_all.cljs$core$IFn$_invoke$arity$3 = partition_all__3;
  return partition_all;
  })()
  ;
  /**
  * Returns a lazy sequence of successive items from coll while
  * (pred item) returns true. pred must be free of side-effects.
  * Returns a transducer when no collection is provided.
  */
  cljs.core.take_while = (function() {
  var take_while = null;
  var take_while__1 = (function (pred){
  return (function (rf){
  return (function() {
  var G__12864 = null;
  var G__12864__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12864__1 = (function (result){
  var G__12859 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12859) : rf.call(null,G__12859));
  });
  var G__12864__2 = (function (result,input){
  if(cljs.core.truth_((function (){var G__12860 = input;
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12860) : pred.call(null,G__12860));
  })())){
  var G__12861 = result;
  var G__12862 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12861,G__12862) : rf.call(null,G__12861,G__12862));
  } else {
  return cljs.core.reduced(result);
  }
  });
  G__12864 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12864__0.call(this);
  case 1:
  return G__12864__1.call(this,result);
  case 2:
  return G__12864__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12864.cljs$core$IFn$_invoke$arity$0 = G__12864__0;
  G__12864.cljs$core$IFn$_invoke$arity$1 = G__12864__1;
  G__12864.cljs$core$IFn$_invoke$arity$2 = G__12864__2;
  return G__12864;
  })()
  });
  });
  var take_while__2 = (function (pred,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  if(cljs.core.truth_((function (){var G__12863 = cljs.core.first(s);
  return (pred.cljs$core$IFn$_invoke$arity$1 ? pred.cljs$core$IFn$_invoke$arity$1(G__12863) : pred.call(null,G__12863));
  })())){
  return cljs.core.cons(cljs.core.first(s),take_while.cljs$core$IFn$_invoke$arity$2(pred,cljs.core.rest(s)));
  } else {
  return null;
  }
  } else {
  return null;
  }
  }),null,null));
  });
  take_while = function(pred,coll){
  switch(arguments.length){
  case 1:
  return take_while__1.call(this,pred);
  case 2:
  return take_while__2.call(this,pred,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  take_while.cljs$core$IFn$_invoke$arity$1 = take_while__1;
  take_while.cljs$core$IFn$_invoke$arity$2 = take_while__2;
  return take_while;
  })()
  ;
  cljs.core.mk_bound_fn = (function mk_bound_fn(sc,test,key){
  return (function (e){
  var comp = cljs.core._comparator(sc);
  var G__12869 = (function (){var G__12871 = cljs.core._entry_key(sc,e);
  var G__12872 = key;
  return (comp.cljs$core$IFn$_invoke$arity$2 ? comp.cljs$core$IFn$_invoke$arity$2(G__12871,G__12872) : comp.call(null,G__12871,G__12872));
  })();
  var G__12870 = (0);
  return (test.cljs$core$IFn$_invoke$arity$2 ? test.cljs$core$IFn$_invoke$arity$2(G__12869,G__12870) : test.call(null,G__12869,G__12870));
  });
  });
  /**
  * sc must be a sorted collection, test(s) one of <, <=, > or
  * >=. Returns a seq of those entries with keys ek for
  * which (test (.. sc comparator (compare ek key)) 0) is true
  */
  cljs.core.subseq = (function() {
  var subseq = null;
  var subseq__3 = (function (sc,test,key){
  var include = cljs.core.mk_bound_fn(sc,test,key);
  if(cljs.core.truth_(cljs.core.PersistentHashSet.fromArray([cljs.core._GT_,cljs.core._GT__EQ_], true).call(null,test))){
  var temp__4126__auto__ = cljs.core._sorted_seq_from(sc,key,true);
  if(cljs.core.truth_(temp__4126__auto__)){
  var vec__12876 = temp__4126__auto__;
  var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12876,(0),null);
  var s = vec__12876;
  if(cljs.core.truth_((function (){var G__12877 = e;
  return (include.cljs$core$IFn$_invoke$arity$1 ? include.cljs$core$IFn$_invoke$arity$1(G__12877) : include.call(null,G__12877));
  })())){
  return s;
  } else {
  return cljs.core.next(s);
  }
  } else {
  return null;
  }
  } else {
  return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(include,cljs.core._sorted_seq(sc,true));
  }
  });
  var subseq__5 = (function (sc,start_test,start_key,end_test,end_key){
  var temp__4126__auto__ = cljs.core._sorted_seq_from(sc,start_key,true);
  if(cljs.core.truth_(temp__4126__auto__)){
  var vec__12878 = temp__4126__auto__;
  var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12878,(0),null);
  var s = vec__12878;
  return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(cljs.core.mk_bound_fn(sc,end_test,end_key),(cljs.core.truth_(cljs.core.mk_bound_fn(sc,start_test,start_key).call(null,e))?s:cljs.core.next(s)));
  } else {
  return null;
  }
  });
  subseq = function(sc,start_test,start_key,end_test,end_key){
  switch(arguments.length){
  case 3:
  return subseq__3.call(this,sc,start_test,start_key);
  case 5:
  return subseq__5.call(this,sc,start_test,start_key,end_test,end_key);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  subseq.cljs$core$IFn$_invoke$arity$3 = subseq__3;
  subseq.cljs$core$IFn$_invoke$arity$5 = subseq__5;
  return subseq;
  })()
  ;
  /**
  * sc must be a sorted collection, test(s) one of <, <=, > or
  * >=. Returns a reverse seq of those entries with keys ek for
  * which (test (.. sc comparator (compare ek key)) 0) is true
  */
  cljs.core.rsubseq = (function() {
  var rsubseq = null;
  var rsubseq__3 = (function (sc,test,key){
  var include = cljs.core.mk_bound_fn(sc,test,key);
  if(cljs.core.truth_(cljs.core.PersistentHashSet.fromArray([cljs.core._LT_,cljs.core._LT__EQ_], true).call(null,test))){
  var temp__4126__auto__ = cljs.core._sorted_seq_from(sc,key,false);
  if(cljs.core.truth_(temp__4126__auto__)){
  var vec__12882 = temp__4126__auto__;
  var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12882,(0),null);
  var s = vec__12882;
  if(cljs.core.truth_((function (){var G__12883 = e;
  return (include.cljs$core$IFn$_invoke$arity$1 ? include.cljs$core$IFn$_invoke$arity$1(G__12883) : include.call(null,G__12883));
  })())){
  return s;
  } else {
  return cljs.core.next(s);
  }
  } else {
  return null;
  }
  } else {
  return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(include,cljs.core._sorted_seq(sc,false));
  }
  });
  var rsubseq__5 = (function (sc,start_test,start_key,end_test,end_key){
  var temp__4126__auto__ = cljs.core._sorted_seq_from(sc,end_key,false);
  if(cljs.core.truth_(temp__4126__auto__)){
  var vec__12884 = temp__4126__auto__;
  var e = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__12884,(0),null);
  var s = vec__12884;
  return cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(cljs.core.mk_bound_fn(sc,start_test,start_key),(cljs.core.truth_(cljs.core.mk_bound_fn(sc,end_test,end_key).call(null,e))?s:cljs.core.next(s)));
  } else {
  return null;
  }
  });
  rsubseq = function(sc,start_test,start_key,end_test,end_key){
  switch(arguments.length){
  case 3:
  return rsubseq__3.call(this,sc,start_test,start_key);
  case 5:
  return rsubseq__5.call(this,sc,start_test,start_key,end_test,end_key);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  rsubseq.cljs$core$IFn$_invoke$arity$3 = rsubseq__3;
  rsubseq.cljs$core$IFn$_invoke$arity$5 = rsubseq__5;
  return rsubseq;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.RangeIterator = (function (i,end,step){
  this.i = i;
  this.end = end;
  this.step = step;
  })
  cljs.core.RangeIterator.prototype.hasNext = (function (){
  var self__ = this;
  var _ = this;
  if((self__.step > (0))){
  return (self__.i < self__.end);
  } else {
  return (self__.i > self__.end);
  }
  });
  
  cljs.core.RangeIterator.prototype.next = (function (){
  var self__ = this;
  var _ = this;
  var ret = self__.i;
  self__.i = (self__.i + self__.step);
  
  return ret;
  });
  
  cljs.core.RangeIterator.cljs$lang$type = true;
  
  cljs.core.RangeIterator.cljs$lang$ctorStr = "cljs.core/RangeIterator";
  
  cljs.core.RangeIterator.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/RangeIterator");
  });
  
  cljs.core.__GT_RangeIterator = (function __GT_RangeIterator(i,end,step){
  return (new cljs.core.RangeIterator(i,end,step));
  });
  
  
  /**
  * @constructor
  */
  cljs.core.Range = (function (meta,start,end,step,__hash){
  this.meta = meta;
  this.start = start;
  this.end = end;
  this.step = step;
  this.__hash = __hash;
  this.cljs$lang$protocol_mask$partition0$ = 32375006;
  this.cljs$lang$protocol_mask$partition1$ = 8192;
  })
  cljs.core.Range.prototype.toString = (function (){
  var self__ = this;
  var coll = this;
  return cljs.core.pr_str_STAR_(coll);
  });
  
  cljs.core.Range.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.Range.prototype.cljs$core$IIndexed$_nth$arity$2 = (function (rng,n){
  var self__ = this;
  var rng__$1 = this;
  if((n < cljs.core._count(rng__$1))){
  return (self__.start + (n * self__.step));
  } else {
  if(((self__.start > self__.end)) && ((self__.step === (0)))){
  return self__.start;
  } else {
  throw (new Error("Index out of bounds"));
  }
  }
  });
  
  cljs.core.Range.prototype.cljs$core$IIndexed$_nth$arity$3 = (function (rng,n,not_found){
  var self__ = this;
  var rng__$1 = this;
  if((n < cljs.core._count(rng__$1))){
  return (self__.start + (n * self__.step));
  } else {
  if(((self__.start > self__.end)) && ((self__.step === (0)))){
  return self__.start;
  } else {
  return not_found;
  }
  }
  });
  
  cljs.core.Range.prototype.cljs$core$IIterable$ = true;
  
  cljs.core.Range.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.RangeIterator(self__.start,self__.end,self__.step));
  });
  
  cljs.core.Range.prototype.cljs$core$IMeta$_meta$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  return self__.meta;
  });
  
  cljs.core.Range.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return (new cljs.core.Range(self__.meta,self__.start,self__.end,self__.step,self__.__hash));
  });
  
  cljs.core.Range.prototype.cljs$core$INext$_next$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  if((self__.step > (0))){
  if(((self__.start + self__.step) < self__.end)){
  return (new cljs.core.Range(self__.meta,(self__.start + self__.step),self__.end,self__.step,null));
  } else {
  return null;
  }
  } else {
  if(((self__.start + self__.step) > self__.end)){
  return (new cljs.core.Range(self__.meta,(self__.start + self__.step),self__.end,self__.step,null));
  } else {
  return null;
  }
  }
  });
  
  cljs.core.Range.prototype.cljs$core$ICounted$_count$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  if(cljs.core.not(cljs.core._seq(rng__$1))){
  return (0);
  } else {
  var G__12885 = ((self__.end - self__.start) / self__.step);
  return (Math.ceil.cljs$core$IFn$_invoke$arity$1 ? Math.ceil.cljs$core$IFn$_invoke$arity$1(G__12885) : Math.ceil.call(null,G__12885));
  }
  });
  
  cljs.core.Range.prototype.cljs$core$IHash$_hash$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  var h__4229__auto__ = self__.__hash;
  if(!((h__4229__auto__ == null))){
  return h__4229__auto__;
  } else {
  var h__4229__auto____$1 = cljs.core.hash_ordered_coll(rng__$1);
  self__.__hash = h__4229__auto____$1;
  
  return h__4229__auto____$1;
  }
  });
  
  cljs.core.Range.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (rng,other){
  var self__ = this;
  var rng__$1 = this;
  return cljs.core.equiv_sequential(rng__$1,other);
  });
  
  cljs.core.Range.prototype.cljs$core$IEmptyableCollection$_empty$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  return cljs.core.with_meta(cljs.core.List.EMPTY,self__.meta);
  });
  
  cljs.core.Range.prototype.cljs$core$IReduce$_reduce$arity$2 = (function (rng,f){
  var self__ = this;
  var rng__$1 = this;
  return cljs.core.ci_reduce.cljs$core$IFn$_invoke$arity$2(rng__$1,f);
  });
  
  cljs.core.Range.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (rng,f,init){
  var self__ = this;
  var rng__$1 = this;
  var i = self__.start;
  var ret = init;
  while(true){
  if((((self__.step > (0)))?(i < self__.end):(i > self__.end))){
  var ret__$1 = (function (){var G__12886 = ret;
  var G__12887 = i;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12886,G__12887) : f.call(null,G__12886,G__12887));
  })();
  if(cljs.core.reduced_QMARK_(ret__$1)){
  var G__12888 = ret__$1;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12888) : cljs.core.deref.call(null,G__12888));
  } else {
  var G__12889 = (i + self__.step);
  var G__12890 = ret__$1;
  i = G__12889;
  ret = G__12890;
  continue;
  }
  } else {
  return ret;
  }
  break;
  }
  });
  
  cljs.core.Range.prototype.cljs$core$ISeq$_first$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  if((cljs.core._seq(rng__$1) == null)){
  return null;
  } else {
  return self__.start;
  }
  });
  
  cljs.core.Range.prototype.cljs$core$ISeq$_rest$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  if(!((cljs.core._seq(rng__$1) == null))){
  return (new cljs.core.Range(self__.meta,(self__.start + self__.step),self__.end,self__.step,null));
  } else {
  return cljs.core.List.EMPTY;
  }
  });
  
  cljs.core.Range.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (rng){
  var self__ = this;
  var rng__$1 = this;
  if((self__.step > (0))){
  if((self__.start < self__.end)){
  return rng__$1;
  } else {
  return null;
  }
  } else {
  if((self__.start > self__.end)){
  return rng__$1;
  } else {
  return null;
  }
  }
  });
  
  cljs.core.Range.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (rng,meta__$1){
  var self__ = this;
  var rng__$1 = this;
  return (new cljs.core.Range(meta__$1,self__.start,self__.end,self__.step,self__.__hash));
  });
  
  cljs.core.Range.prototype.cljs$core$ICollection$_conj$arity$2 = (function (rng,o){
  var self__ = this;
  var rng__$1 = this;
  return cljs.core.cons(o,rng__$1);
  });
  
  cljs.core.Range.cljs$lang$type = true;
  
  cljs.core.Range.cljs$lang$ctorStr = "cljs.core/Range";
  
  cljs.core.Range.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Range");
  });
  
  cljs.core.__GT_Range = (function __GT_Range(meta,start,end,step,__hash){
  return (new cljs.core.Range(meta,start,end,step,__hash));
  });
  
  (cljs.core.Range.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * Returns a lazy seq of nums from start (inclusive) to end
  * (exclusive), by step, where start defaults to 0, step to 1,
  * and end to infinity.
  */
  cljs.core.range = (function() {
  var range = null;
  var range__0 = (function (){
  return range.cljs$core$IFn$_invoke$arity$3((0),Number.MAX_VALUE,(1));
  });
  var range__1 = (function (end){
  return range.cljs$core$IFn$_invoke$arity$3((0),end,(1));
  });
  var range__2 = (function (start,end){
  return range.cljs$core$IFn$_invoke$arity$3(start,end,(1));
  });
  var range__3 = (function (start,end,step){
  return (new cljs.core.Range(null,start,end,step,null));
  });
  range = function(start,end,step){
  switch(arguments.length){
  case 0:
  return range__0.call(this);
  case 1:
  return range__1.call(this,start);
  case 2:
  return range__2.call(this,start,end);
  case 3:
  return range__3.call(this,start,end,step);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  range.cljs$core$IFn$_invoke$arity$0 = range__0;
  range.cljs$core$IFn$_invoke$arity$1 = range__1;
  range.cljs$core$IFn$_invoke$arity$2 = range__2;
  range.cljs$core$IFn$_invoke$arity$3 = range__3;
  return range;
  })()
  ;
  /**
  * Returns a lazy seq of every nth item in coll.  Returns a stateful
  * transducer when no collection is provided.
  */
  cljs.core.take_nth = (function() {
  var take_nth = null;
  var take_nth__1 = (function (n){
  return (function (rf){
  var ia = cljs.core.volatile_BANG_((-1));
  return ((function (ia){
  return (function() {
  var G__12908 = null;
  var G__12908__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12908__1 = (function (result){
  var G__12905 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12905) : rf.call(null,G__12905));
  });
  var G__12908__2 = (function (result,input){
  var i = ia.cljs$core$IVolatile$_vreset_BANG_$arity$2(null,(ia.cljs$core$IDeref$_deref$arity$1(null) + (1)));
  if((cljs.core.rem(i,n) === (0))){
  var G__12906 = result;
  var G__12907 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12906,G__12907) : rf.call(null,G__12906,G__12907));
  } else {
  return result;
  }
  });
  G__12908 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12908__0.call(this);
  case 1:
  return G__12908__1.call(this,result);
  case 2:
  return G__12908__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12908.cljs$core$IFn$_invoke$arity$0 = G__12908__0;
  G__12908.cljs$core$IFn$_invoke$arity$1 = G__12908__1;
  G__12908.cljs$core$IFn$_invoke$arity$2 = G__12908__2;
  return G__12908;
  })()
  ;})(ia))
  });
  });
  var take_nth__2 = (function (n,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  return cljs.core.cons(cljs.core.first(s),take_nth.cljs$core$IFn$_invoke$arity$2(n,cljs.core.drop.cljs$core$IFn$_invoke$arity$2(n,s)));
  } else {
  return null;
  }
  }),null,null));
  });
  take_nth = function(n,coll){
  switch(arguments.length){
  case 1:
  return take_nth__1.call(this,n);
  case 2:
  return take_nth__2.call(this,n,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  take_nth.cljs$core$IFn$_invoke$arity$1 = take_nth__1;
  take_nth.cljs$core$IFn$_invoke$arity$2 = take_nth__2;
  return take_nth;
  })()
  ;
  /**
  * Returns a vector of [(take-while pred coll) (drop-while pred coll)]
  */
  cljs.core.split_with = (function split_with(pred,coll){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(pred,coll),cljs.core.drop_while.cljs$core$IFn$_invoke$arity$2(pred,coll)], null);
  });
  /**
  * Applies f to each value in coll, splitting it each time f returns a
  * new value.  Returns a lazy seq of partitions.  Returns a stateful
  * transducer when no collection is provided.
  */
  cljs.core.partition_by = (function() {
  var partition_by = null;
  var partition_by__1 = (function (f){
  return (function (rf){
  var a = cljs.core.array_list();
  var pa = cljs.core.volatile_BANG_(new cljs.core.Keyword("cljs.core","none","cljs.core/none",926646439));
  return ((function (a,pa){
  return (function() {
  var G__12930 = null;
  var G__12930__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__12930__1 = (function (result){
  var result__$1 = (cljs.core.truth_(a.isEmpty())?result:(function (){var v = cljs.core.vec(a.toArray());
  a.clear();
  
  return cljs.core.unreduced((function (){var G__12921 = result;
  var G__12922 = v;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12921,G__12922) : rf.call(null,G__12921,G__12922));
  })());
  })());
  var G__12923 = result__$1;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__12923) : rf.call(null,G__12923));
  });
  var G__12930__2 = (function (result,input){
  var pval = (function (){var G__12924 = pa;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__12924) : cljs.core.deref.call(null,G__12924));
  })();
  var val = (function (){var G__12925 = input;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12925) : f.call(null,G__12925));
  })();
  cljs.core.vreset_BANG_(pa,val);
  
  if((cljs.core.keyword_identical_QMARK_(pval,new cljs.core.Keyword("cljs.core","none","cljs.core/none",926646439))) || (cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(val,pval))){
  a.add(input);
  
  return result;
  } else {
  var v = cljs.core.vec(a.toArray());
  a.clear();
  
  var ret = (function (){var G__12926 = result;
  var G__12927 = v;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__12926,G__12927) : rf.call(null,G__12926,G__12927));
  })();
  if(cljs.core.reduced_QMARK_(ret)){
  } else {
  a.add(input);
  }
  
  return ret;
  }
  });
  G__12930 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__12930__0.call(this);
  case 1:
  return G__12930__1.call(this,result);
  case 2:
  return G__12930__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__12930.cljs$core$IFn$_invoke$arity$0 = G__12930__0;
  G__12930.cljs$core$IFn$_invoke$arity$1 = G__12930__1;
  G__12930.cljs$core$IFn$_invoke$arity$2 = G__12930__2;
  return G__12930;
  })()
  ;})(a,pa))
  });
  });
  var partition_by__2 = (function (f,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  var fst = cljs.core.first(s);
  var fv = (function (){var G__12928 = fst;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12928) : f.call(null,G__12928));
  })();
  var run = cljs.core.cons(fst,cljs.core.take_while.cljs$core$IFn$_invoke$arity$2(((function (fst,fv,s,temp__4126__auto__){
  return (function (p1__12909_SHARP_){
  return cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(fv,(function (){var G__12929 = p1__12909_SHARP_;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12929) : f.call(null,G__12929));
  })());
  });})(fst,fv,s,temp__4126__auto__))
  ,cljs.core.next(s)));
  return cljs.core.cons(run,partition_by.cljs$core$IFn$_invoke$arity$2(f,cljs.core.seq(cljs.core.drop.cljs$core$IFn$_invoke$arity$2(cljs.core.count(run),s))));
  } else {
  return null;
  }
  }),null,null));
  });
  partition_by = function(f,coll){
  switch(arguments.length){
  case 1:
  return partition_by__1.call(this,f);
  case 2:
  return partition_by__2.call(this,f,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  partition_by.cljs$core$IFn$_invoke$arity$1 = partition_by__1;
  partition_by.cljs$core$IFn$_invoke$arity$2 = partition_by__2;
  return partition_by;
  })()
  ;
  /**
  * Returns a map from distinct items in coll to the number of times
  * they appear.
  */
  cljs.core.frequencies = (function frequencies(coll){
  return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (counts,x){
  return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(counts,x,(cljs.core.get.cljs$core$IFn$_invoke$arity$3(counts,x,(0)) + (1)));
  }),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),coll));
  });
  /**
  * Returns a lazy seq of the intermediate values of the reduction (as
  * per reduce) of coll by f, starting with init.
  */
  cljs.core.reductions = (function() {
  var reductions = null;
  var reductions__2 = (function (f,coll){
  return (new cljs.core.LazySeq(null,(function (){
  var temp__4124__auto__ = cljs.core.seq(coll);
  if(temp__4124__auto__){
  var s = temp__4124__auto__;
  return reductions.cljs$core$IFn$_invoke$arity$3(f,cljs.core.first(s),cljs.core.rest(s));
  } else {
  return cljs.core._conj(cljs.core.List.EMPTY,(function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })());
  }
  }),null,null));
  });
  var reductions__3 = (function (f,init,coll){
  return cljs.core.cons(init,(new cljs.core.LazySeq(null,(function (){
  var temp__4126__auto__ = cljs.core.seq(coll);
  if(temp__4126__auto__){
  var s = temp__4126__auto__;
  return reductions.cljs$core$IFn$_invoke$arity$3(f,(function (){var G__12939 = init;
  var G__12940 = cljs.core.first(s);
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12939,G__12940) : f.call(null,G__12939,G__12940));
  })(),cljs.core.rest(s));
  } else {
  return null;
  }
  }),null,null)));
  });
  reductions = function(f,init,coll){
  switch(arguments.length){
  case 2:
  return reductions__2.call(this,f,init);
  case 3:
  return reductions__3.call(this,f,init,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  reductions.cljs$core$IFn$_invoke$arity$2 = reductions__2;
  reductions.cljs$core$IFn$_invoke$arity$3 = reductions__3;
  return reductions;
  })()
  ;
  /**
  * Takes a set of functions and returns a fn that is the juxtaposition
  * of those fns.  The returned fn takes a variable number of args, and
  * returns a vector containing the result of applying each fn to the
  * args (left-to-right).
  * ((juxt a b c) x) => [(a x) (b x) (c x)]
  * @param {...*} var_args
  */
  cljs.core.juxt = (function() {
  var juxt = null;
  var juxt__1 = (function (f){
  return (function() {
  var G__13035 = null;
  var G__13035__0 = (function (){
  return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })()],null));
  });
  var G__13035__1 = (function (x){
  return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__12993 = x;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12993) : f.call(null,G__12993));
  })()],null));
  });
  var G__13035__2 = (function (x,y){
  return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__12994 = x;
  var G__12995 = y;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__12994,G__12995) : f.call(null,G__12994,G__12995));
  })()],null));
  });
  var G__13035__3 = (function (x,y,z){
  return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__12996 = x;
  var G__12997 = y;
  var G__12998 = z;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__12996,G__12997,G__12998) : f.call(null,G__12996,G__12997,G__12998));
  })()],null));
  });
  var G__13035__4 = (function() { 
  var G__13036__delegate = function (x,y,z,args){
  return (new cljs.core.PersistentVector(null,1,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,x,y,z,args)],null));
  };
  var G__13036 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__13037__i = 0, G__13037__a = new Array(arguments.length -  3);
  while (G__13037__i < G__13037__a.length) {G__13037__a[G__13037__i] = arguments[G__13037__i + 3]; ++G__13037__i;}
    args = new cljs.core.IndexedSeq(G__13037__a,0);
  } 
  return G__13036__delegate.call(this,x,y,z,args);};
  G__13036.cljs$lang$maxFixedArity = 3;
  G__13036.cljs$lang$applyTo = (function (arglist__13038){
  var x = cljs.core.first(arglist__13038);
  arglist__13038 = cljs.core.next(arglist__13038);
  var y = cljs.core.first(arglist__13038);
  arglist__13038 = cljs.core.next(arglist__13038);
  var z = cljs.core.first(arglist__13038);
  var args = cljs.core.rest(arglist__13038);
  return G__13036__delegate(x,y,z,args);
  });
  G__13036.cljs$core$IFn$_invoke$arity$variadic = G__13036__delegate;
  return G__13036;
  })()
  ;
  G__13035 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__13035__0.call(this);
  case 1:
  return G__13035__1.call(this,x);
  case 2:
  return G__13035__2.call(this,x,y);
  case 3:
  return G__13035__3.call(this,x,y,z);
  default:
  var G__13039 = null;
  if (arguments.length > 3) {
  var G__13040__i = 0, G__13040__a = new Array(arguments.length -  3);
  while (G__13040__i < G__13040__a.length) {G__13040__a[G__13040__i] = arguments[G__13040__i + 3]; ++G__13040__i;}
  G__13039 = new cljs.core.IndexedSeq(G__13040__a,0);
  }
  return G__13035__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__13039);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__13035.cljs$lang$maxFixedArity = 3;
  G__13035.cljs$lang$applyTo = G__13035__4.cljs$lang$applyTo;
  G__13035.cljs$core$IFn$_invoke$arity$0 = G__13035__0;
  G__13035.cljs$core$IFn$_invoke$arity$1 = G__13035__1;
  G__13035.cljs$core$IFn$_invoke$arity$2 = G__13035__2;
  G__13035.cljs$core$IFn$_invoke$arity$3 = G__13035__3;
  G__13035.cljs$core$IFn$_invoke$arity$variadic = G__13035__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__13035;
  })()
  });
  var juxt__2 = (function (f,g){
  return (function() {
  var G__13041 = null;
  var G__13041__0 = (function (){
  return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })(),(function (){return (g.cljs$core$IFn$_invoke$arity$0 ? g.cljs$core$IFn$_invoke$arity$0() : g.call(null));
  })()],null));
  });
  var G__13041__1 = (function (x){
  return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__12999 = x;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__12999) : f.call(null,G__12999));
  })(),(function (){var G__13000 = x;
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__13000) : g.call(null,G__13000));
  })()],null));
  });
  var G__13041__2 = (function (x,y){
  return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__13001 = x;
  var G__13002 = y;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__13001,G__13002) : f.call(null,G__13001,G__13002));
  })(),(function (){var G__13003 = x;
  var G__13004 = y;
  return (g.cljs$core$IFn$_invoke$arity$2 ? g.cljs$core$IFn$_invoke$arity$2(G__13003,G__13004) : g.call(null,G__13003,G__13004));
  })()],null));
  });
  var G__13041__3 = (function (x,y,z){
  return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__13005 = x;
  var G__13006 = y;
  var G__13007 = z;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__13005,G__13006,G__13007) : f.call(null,G__13005,G__13006,G__13007));
  })(),(function (){var G__13008 = x;
  var G__13009 = y;
  var G__13010 = z;
  return (g.cljs$core$IFn$_invoke$arity$3 ? g.cljs$core$IFn$_invoke$arity$3(G__13008,G__13009,G__13010) : g.call(null,G__13008,G__13009,G__13010));
  })()],null));
  });
  var G__13041__4 = (function() { 
  var G__13042__delegate = function (x,y,z,args){
  return (new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,x,y,z,args),cljs.core.apply.cljs$core$IFn$_invoke$arity$5(g,x,y,z,args)],null));
  };
  var G__13042 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__13043__i = 0, G__13043__a = new Array(arguments.length -  3);
  while (G__13043__i < G__13043__a.length) {G__13043__a[G__13043__i] = arguments[G__13043__i + 3]; ++G__13043__i;}
    args = new cljs.core.IndexedSeq(G__13043__a,0);
  } 
  return G__13042__delegate.call(this,x,y,z,args);};
  G__13042.cljs$lang$maxFixedArity = 3;
  G__13042.cljs$lang$applyTo = (function (arglist__13044){
  var x = cljs.core.first(arglist__13044);
  arglist__13044 = cljs.core.next(arglist__13044);
  var y = cljs.core.first(arglist__13044);
  arglist__13044 = cljs.core.next(arglist__13044);
  var z = cljs.core.first(arglist__13044);
  var args = cljs.core.rest(arglist__13044);
  return G__13042__delegate(x,y,z,args);
  });
  G__13042.cljs$core$IFn$_invoke$arity$variadic = G__13042__delegate;
  return G__13042;
  })()
  ;
  G__13041 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__13041__0.call(this);
  case 1:
  return G__13041__1.call(this,x);
  case 2:
  return G__13041__2.call(this,x,y);
  case 3:
  return G__13041__3.call(this,x,y,z);
  default:
  var G__13045 = null;
  if (arguments.length > 3) {
  var G__13046__i = 0, G__13046__a = new Array(arguments.length -  3);
  while (G__13046__i < G__13046__a.length) {G__13046__a[G__13046__i] = arguments[G__13046__i + 3]; ++G__13046__i;}
  G__13045 = new cljs.core.IndexedSeq(G__13046__a,0);
  }
  return G__13041__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__13045);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__13041.cljs$lang$maxFixedArity = 3;
  G__13041.cljs$lang$applyTo = G__13041__4.cljs$lang$applyTo;
  G__13041.cljs$core$IFn$_invoke$arity$0 = G__13041__0;
  G__13041.cljs$core$IFn$_invoke$arity$1 = G__13041__1;
  G__13041.cljs$core$IFn$_invoke$arity$2 = G__13041__2;
  G__13041.cljs$core$IFn$_invoke$arity$3 = G__13041__3;
  G__13041.cljs$core$IFn$_invoke$arity$variadic = G__13041__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__13041;
  })()
  });
  var juxt__3 = (function (f,g,h){
  return (function() {
  var G__13047 = null;
  var G__13047__0 = (function (){
  return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })(),(function (){return (g.cljs$core$IFn$_invoke$arity$0 ? g.cljs$core$IFn$_invoke$arity$0() : g.call(null));
  })(),(function (){return (h.cljs$core$IFn$_invoke$arity$0 ? h.cljs$core$IFn$_invoke$arity$0() : h.call(null));
  })()],null));
  });
  var G__13047__1 = (function (x){
  return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__13011 = x;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__13011) : f.call(null,G__13011));
  })(),(function (){var G__13012 = x;
  return (g.cljs$core$IFn$_invoke$arity$1 ? g.cljs$core$IFn$_invoke$arity$1(G__13012) : g.call(null,G__13012));
  })(),(function (){var G__13013 = x;
  return (h.cljs$core$IFn$_invoke$arity$1 ? h.cljs$core$IFn$_invoke$arity$1(G__13013) : h.call(null,G__13013));
  })()],null));
  });
  var G__13047__2 = (function (x,y){
  return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__13014 = x;
  var G__13015 = y;
  return (f.cljs$core$IFn$_invoke$arity$2 ? f.cljs$core$IFn$_invoke$arity$2(G__13014,G__13015) : f.call(null,G__13014,G__13015));
  })(),(function (){var G__13016 = x;
  var G__13017 = y;
  return (g.cljs$core$IFn$_invoke$arity$2 ? g.cljs$core$IFn$_invoke$arity$2(G__13016,G__13017) : g.call(null,G__13016,G__13017));
  })(),(function (){var G__13018 = x;
  var G__13019 = y;
  return (h.cljs$core$IFn$_invoke$arity$2 ? h.cljs$core$IFn$_invoke$arity$2(G__13018,G__13019) : h.call(null,G__13018,G__13019));
  })()],null));
  });
  var G__13047__3 = (function (x,y,z){
  return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[(function (){var G__13020 = x;
  var G__13021 = y;
  var G__13022 = z;
  return (f.cljs$core$IFn$_invoke$arity$3 ? f.cljs$core$IFn$_invoke$arity$3(G__13020,G__13021,G__13022) : f.call(null,G__13020,G__13021,G__13022));
  })(),(function (){var G__13023 = x;
  var G__13024 = y;
  var G__13025 = z;
  return (g.cljs$core$IFn$_invoke$arity$3 ? g.cljs$core$IFn$_invoke$arity$3(G__13023,G__13024,G__13025) : g.call(null,G__13023,G__13024,G__13025));
  })(),(function (){var G__13026 = x;
  var G__13027 = y;
  var G__13028 = z;
  return (h.cljs$core$IFn$_invoke$arity$3 ? h.cljs$core$IFn$_invoke$arity$3(G__13026,G__13027,G__13028) : h.call(null,G__13026,G__13027,G__13028));
  })()],null));
  });
  var G__13047__4 = (function() { 
  var G__13048__delegate = function (x,y,z,args){
  return (new cljs.core.PersistentVector(null,3,(5),cljs.core.PersistentVector.EMPTY_NODE,[cljs.core.apply.cljs$core$IFn$_invoke$arity$5(f,x,y,z,args),cljs.core.apply.cljs$core$IFn$_invoke$arity$5(g,x,y,z,args),cljs.core.apply.cljs$core$IFn$_invoke$arity$5(h,x,y,z,args)],null));
  };
  var G__13048 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__13049__i = 0, G__13049__a = new Array(arguments.length -  3);
  while (G__13049__i < G__13049__a.length) {G__13049__a[G__13049__i] = arguments[G__13049__i + 3]; ++G__13049__i;}
    args = new cljs.core.IndexedSeq(G__13049__a,0);
  } 
  return G__13048__delegate.call(this,x,y,z,args);};
  G__13048.cljs$lang$maxFixedArity = 3;
  G__13048.cljs$lang$applyTo = (function (arglist__13050){
  var x = cljs.core.first(arglist__13050);
  arglist__13050 = cljs.core.next(arglist__13050);
  var y = cljs.core.first(arglist__13050);
  arglist__13050 = cljs.core.next(arglist__13050);
  var z = cljs.core.first(arglist__13050);
  var args = cljs.core.rest(arglist__13050);
  return G__13048__delegate(x,y,z,args);
  });
  G__13048.cljs$core$IFn$_invoke$arity$variadic = G__13048__delegate;
  return G__13048;
  })()
  ;
  G__13047 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__13047__0.call(this);
  case 1:
  return G__13047__1.call(this,x);
  case 2:
  return G__13047__2.call(this,x,y);
  case 3:
  return G__13047__3.call(this,x,y,z);
  default:
  var G__13051 = null;
  if (arguments.length > 3) {
  var G__13052__i = 0, G__13052__a = new Array(arguments.length -  3);
  while (G__13052__i < G__13052__a.length) {G__13052__a[G__13052__i] = arguments[G__13052__i + 3]; ++G__13052__i;}
  G__13051 = new cljs.core.IndexedSeq(G__13052__a,0);
  }
  return G__13047__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__13051);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__13047.cljs$lang$maxFixedArity = 3;
  G__13047.cljs$lang$applyTo = G__13047__4.cljs$lang$applyTo;
  G__13047.cljs$core$IFn$_invoke$arity$0 = G__13047__0;
  G__13047.cljs$core$IFn$_invoke$arity$1 = G__13047__1;
  G__13047.cljs$core$IFn$_invoke$arity$2 = G__13047__2;
  G__13047.cljs$core$IFn$_invoke$arity$3 = G__13047__3;
  G__13047.cljs$core$IFn$_invoke$arity$variadic = G__13047__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__13047;
  })()
  });
  var juxt__4 = (function() { 
  var G__13053__delegate = function (f,g,h,fs){
  var fs__$1 = cljs.core.list_STAR_.cljs$core$IFn$_invoke$arity$4(f,g,h,fs);
  return ((function (fs__$1){
  return (function() {
  var G__13054 = null;
  var G__13054__0 = (function (){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
  return (function (p1__12941_SHARP_,p2__12942_SHARP_){
  return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12941_SHARP_,(function (){return (p2__12942_SHARP_.cljs$core$IFn$_invoke$arity$0 ? p2__12942_SHARP_.cljs$core$IFn$_invoke$arity$0() : p2__12942_SHARP_.call(null));
  })());
  });})(fs__$1))
  ,cljs.core.PersistentVector.EMPTY,fs__$1);
  });
  var G__13054__1 = (function (x){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
  return (function (p1__12943_SHARP_,p2__12944_SHARP_){
  return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12943_SHARP_,(function (){var G__13029 = x;
  return (p2__12944_SHARP_.cljs$core$IFn$_invoke$arity$1 ? p2__12944_SHARP_.cljs$core$IFn$_invoke$arity$1(G__13029) : p2__12944_SHARP_.call(null,G__13029));
  })());
  });})(fs__$1))
  ,cljs.core.PersistentVector.EMPTY,fs__$1);
  });
  var G__13054__2 = (function (x,y){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
  return (function (p1__12945_SHARP_,p2__12946_SHARP_){
  return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12945_SHARP_,(function (){var G__13030 = x;
  var G__13031 = y;
  return (p2__12946_SHARP_.cljs$core$IFn$_invoke$arity$2 ? p2__12946_SHARP_.cljs$core$IFn$_invoke$arity$2(G__13030,G__13031) : p2__12946_SHARP_.call(null,G__13030,G__13031));
  })());
  });})(fs__$1))
  ,cljs.core.PersistentVector.EMPTY,fs__$1);
  });
  var G__13054__3 = (function (x,y,z){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
  return (function (p1__12947_SHARP_,p2__12948_SHARP_){
  return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12947_SHARP_,(function (){var G__13032 = x;
  var G__13033 = y;
  var G__13034 = z;
  return (p2__12948_SHARP_.cljs$core$IFn$_invoke$arity$3 ? p2__12948_SHARP_.cljs$core$IFn$_invoke$arity$3(G__13032,G__13033,G__13034) : p2__12948_SHARP_.call(null,G__13032,G__13033,G__13034));
  })());
  });})(fs__$1))
  ,cljs.core.PersistentVector.EMPTY,fs__$1);
  });
  var G__13054__4 = (function() { 
  var G__13055__delegate = function (x,y,z,args){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (fs__$1){
  return (function (p1__12949_SHARP_,p2__12950_SHARP_){
  return cljs.core.conj.cljs$core$IFn$_invoke$arity$2(p1__12949_SHARP_,cljs.core.apply.cljs$core$IFn$_invoke$arity$5(p2__12950_SHARP_,x,y,z,args));
  });})(fs__$1))
  ,cljs.core.PersistentVector.EMPTY,fs__$1);
  };
  var G__13055 = function (x,y,z,var_args){
  var args = null;
  if (arguments.length > 3) {
  var G__13056__i = 0, G__13056__a = new Array(arguments.length -  3);
  while (G__13056__i < G__13056__a.length) {G__13056__a[G__13056__i] = arguments[G__13056__i + 3]; ++G__13056__i;}
    args = new cljs.core.IndexedSeq(G__13056__a,0);
  } 
  return G__13055__delegate.call(this,x,y,z,args);};
  G__13055.cljs$lang$maxFixedArity = 3;
  G__13055.cljs$lang$applyTo = (function (arglist__13057){
  var x = cljs.core.first(arglist__13057);
  arglist__13057 = cljs.core.next(arglist__13057);
  var y = cljs.core.first(arglist__13057);
  arglist__13057 = cljs.core.next(arglist__13057);
  var z = cljs.core.first(arglist__13057);
  var args = cljs.core.rest(arglist__13057);
  return G__13055__delegate(x,y,z,args);
  });
  G__13055.cljs$core$IFn$_invoke$arity$variadic = G__13055__delegate;
  return G__13055;
  })()
  ;
  G__13054 = function(x,y,z,var_args){
  var args = var_args;
  switch(arguments.length){
  case 0:
  return G__13054__0.call(this);
  case 1:
  return G__13054__1.call(this,x);
  case 2:
  return G__13054__2.call(this,x,y);
  case 3:
  return G__13054__3.call(this,x,y,z);
  default:
  var G__13058 = null;
  if (arguments.length > 3) {
  var G__13059__i = 0, G__13059__a = new Array(arguments.length -  3);
  while (G__13059__i < G__13059__a.length) {G__13059__a[G__13059__i] = arguments[G__13059__i + 3]; ++G__13059__i;}
  G__13058 = new cljs.core.IndexedSeq(G__13059__a,0);
  }
  return G__13054__4.cljs$core$IFn$_invoke$arity$variadic(x,y,z, G__13058);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__13054.cljs$lang$maxFixedArity = 3;
  G__13054.cljs$lang$applyTo = G__13054__4.cljs$lang$applyTo;
  G__13054.cljs$core$IFn$_invoke$arity$0 = G__13054__0;
  G__13054.cljs$core$IFn$_invoke$arity$1 = G__13054__1;
  G__13054.cljs$core$IFn$_invoke$arity$2 = G__13054__2;
  G__13054.cljs$core$IFn$_invoke$arity$3 = G__13054__3;
  G__13054.cljs$core$IFn$_invoke$arity$variadic = G__13054__4.cljs$core$IFn$_invoke$arity$variadic;
  return G__13054;
  })()
  ;})(fs__$1))
  };
  var G__13053 = function (f,g,h,var_args){
  var fs = null;
  if (arguments.length > 3) {
  var G__13060__i = 0, G__13060__a = new Array(arguments.length -  3);
  while (G__13060__i < G__13060__a.length) {G__13060__a[G__13060__i] = arguments[G__13060__i + 3]; ++G__13060__i;}
    fs = new cljs.core.IndexedSeq(G__13060__a,0);
  } 
  return G__13053__delegate.call(this,f,g,h,fs);};
  G__13053.cljs$lang$maxFixedArity = 3;
  G__13053.cljs$lang$applyTo = (function (arglist__13061){
  var f = cljs.core.first(arglist__13061);
  arglist__13061 = cljs.core.next(arglist__13061);
  var g = cljs.core.first(arglist__13061);
  arglist__13061 = cljs.core.next(arglist__13061);
  var h = cljs.core.first(arglist__13061);
  var fs = cljs.core.rest(arglist__13061);
  return G__13053__delegate(f,g,h,fs);
  });
  G__13053.cljs$core$IFn$_invoke$arity$variadic = G__13053__delegate;
  return G__13053;
  })()
  ;
  juxt = function(f,g,h,var_args){
  var fs = var_args;
  switch(arguments.length){
  case 1:
  return juxt__1.call(this,f);
  case 2:
  return juxt__2.call(this,f,g);
  case 3:
  return juxt__3.call(this,f,g,h);
  default:
  var G__13062 = null;
  if (arguments.length > 3) {
  var G__13063__i = 0, G__13063__a = new Array(arguments.length -  3);
  while (G__13063__i < G__13063__a.length) {G__13063__a[G__13063__i] = arguments[G__13063__i + 3]; ++G__13063__i;}
  G__13062 = new cljs.core.IndexedSeq(G__13063__a,0);
  }
  return juxt__4.cljs$core$IFn$_invoke$arity$variadic(f,g,h, G__13062);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  juxt.cljs$lang$maxFixedArity = 3;
  juxt.cljs$lang$applyTo = juxt__4.cljs$lang$applyTo;
  juxt.cljs$core$IFn$_invoke$arity$1 = juxt__1;
  juxt.cljs$core$IFn$_invoke$arity$2 = juxt__2;
  juxt.cljs$core$IFn$_invoke$arity$3 = juxt__3;
  juxt.cljs$core$IFn$_invoke$arity$variadic = juxt__4.cljs$core$IFn$_invoke$arity$variadic;
  return juxt;
  })()
  ;
  /**
  * When lazy sequences are produced via functions that have side
  * effects, any effects other than those needed to produce the first
  * element in the seq do not occur until the seq is consumed. dorun can
  * be used to force any effects. Walks through the successive nexts of
  * the seq, does not retain the head and returns nil.
  */
  cljs.core.dorun = (function() {
  var dorun = null;
  var dorun__1 = (function (coll){
  while(true){
  if(cljs.core.seq(coll)){
  var G__13064 = cljs.core.next(coll);
  coll = G__13064;
  continue;
  } else {
  return null;
  }
  break;
  }
  });
  var dorun__2 = (function (n,coll){
  while(true){
  if((cljs.core.seq(coll)) && ((n > (0)))){
  var G__13065 = (n - (1));
  var G__13066 = cljs.core.next(coll);
  n = G__13065;
  coll = G__13066;
  continue;
  } else {
  return null;
  }
  break;
  }
  });
  dorun = function(n,coll){
  switch(arguments.length){
  case 1:
  return dorun__1.call(this,n);
  case 2:
  return dorun__2.call(this,n,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  dorun.cljs$core$IFn$_invoke$arity$1 = dorun__1;
  dorun.cljs$core$IFn$_invoke$arity$2 = dorun__2;
  return dorun;
  })()
  ;
  /**
  * When lazy sequences are produced via functions that have side
  * effects, any effects other than those needed to produce the first
  * element in the seq do not occur until the seq is consumed. doall can
  * be used to force any effects. Walks through the successive nexts of
  * the seq, retains the head and returns it, thus causing the entire
  * seq to reside in memory at one time.
  */
  cljs.core.doall = (function() {
  var doall = null;
  var doall__1 = (function (coll){
  cljs.core.dorun.cljs$core$IFn$_invoke$arity$1(coll);
  
  return coll;
  });
  var doall__2 = (function (n,coll){
  cljs.core.dorun.cljs$core$IFn$_invoke$arity$2(n,coll);
  
  return coll;
  });
  doall = function(n,coll){
  switch(arguments.length){
  case 1:
  return doall__1.call(this,n);
  case 2:
  return doall__2.call(this,n,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  doall.cljs$core$IFn$_invoke$arity$1 = doall__1;
  doall.cljs$core$IFn$_invoke$arity$2 = doall__2;
  return doall;
  })()
  ;
  cljs.core.regexp_QMARK_ = (function regexp_QMARK_(o){
  return (o instanceof RegExp);
  });
  /**
  * Returns the result of (re-find re s) if re fully matches s.
  */
  cljs.core.re_matches = (function re_matches(re,s){
  if(typeof s === 'string'){
  var matches = re.exec(s);
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(cljs.core.first(matches),s)){
  if((cljs.core.count(matches) === (1))){
  return cljs.core.first(matches);
  } else {
  return cljs.core.vec(matches);
  }
  } else {
  return null;
  }
  } else {
  throw (new TypeError("re-matches must match against a string."));
  }
  });
  /**
  * Returns the first regex match, if any, of s to re, using
  * re.exec(s). Returns a vector, containing first the matching
  * substring, then any capturing groups if the regular expression contains
  * capturing groups.
  */
  cljs.core.re_find = (function re_find(re,s){
  if(typeof s === 'string'){
  var matches = re.exec(s);
  if((matches == null)){
  return null;
  } else {
  if((cljs.core.count(matches) === (1))){
  return cljs.core.first(matches);
  } else {
  return cljs.core.vec(matches);
  }
  }
  } else {
  throw (new TypeError("re-find must match against a string."));
  }
  });
  /**
  * Returns a lazy sequence of successive matches of re in s.
  */
  cljs.core.re_seq = (function re_seq(re,s){
  var match_data = cljs.core.re_find(re,s);
  var match_idx = s.search(re);
  var match_str = ((cljs.core.coll_QMARK_(match_data))?cljs.core.first(match_data):match_data);
  var post_match = cljs.core.subs.cljs$core$IFn$_invoke$arity$2(s,(match_idx + cljs.core.count(match_str)));
  if(cljs.core.truth_(match_data)){
  return (new cljs.core.LazySeq(null,((function (match_data,match_idx,match_str,post_match){
  return (function (){
  return cljs.core.cons(match_data,((cljs.core.seq(post_match))?re_seq(re,post_match):null));
  });})(match_data,match_idx,match_str,post_match))
  ,null,null));
  } else {
  return null;
  }
  });
  /**
  * Returns an instance of RegExp which has compiled the provided string.
  */
  cljs.core.re_pattern = (function re_pattern(s){
  if((s instanceof RegExp)){
  return s;
  } else {
  var vec__13070 = cljs.core.re_find(/^(?:\(\?([idmsux]*)\))?(.*)/,s);
  var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13070,(0),null);
  var flags = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13070,(1),null);
  var pattern = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13070,(2),null);
  return (new RegExp(pattern,flags));
  }
  });
  cljs.core.pr_sequential_writer = (function pr_sequential_writer(writer,print_one,begin,sep,end,opts,coll){
  var _STAR_print_level_STAR_13078 = cljs.core._STAR_print_level_STAR_;
  try{cljs.core._STAR_print_level_STAR_ = (((cljs.core._STAR_print_level_STAR_ == null))?null:(cljs.core._STAR_print_level_STAR_ - (1)));
  
  if((!((cljs.core._STAR_print_level_STAR_ == null))) && ((cljs.core._STAR_print_level_STAR_ < (0)))){
  return cljs.core._write(writer,"#");
  } else {
  cljs.core._write(writer,begin);
  
  if(cljs.core.seq(coll)){
  var G__13079_13085 = cljs.core.first(coll);
  var G__13080_13086 = writer;
  var G__13081_13087 = opts;
  (print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__13079_13085,G__13080_13086,G__13081_13087) : print_one.call(null,G__13079_13085,G__13080_13086,G__13081_13087));
  } else {
  }
  
  var coll_13088__$1 = cljs.core.next(coll);
  var n_13089 = (new cljs.core.Keyword(null,"print-length","print-length",1931866356).cljs$core$IFn$_invoke$arity$1(opts) - (1));
  while(true){
  if((coll_13088__$1) && (((n_13089 == null)) || (!((n_13089 === (0)))))){
  cljs.core._write(writer,sep);
  
  var G__13082_13090 = cljs.core.first(coll_13088__$1);
  var G__13083_13091 = writer;
  var G__13084_13092 = opts;
  (print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__13082_13090,G__13083_13091,G__13084_13092) : print_one.call(null,G__13082_13090,G__13083_13091,G__13084_13092));
  
  var G__13093 = cljs.core.next(coll_13088__$1);
  var G__13094 = (n_13089 - (1));
  coll_13088__$1 = G__13093;
  n_13089 = G__13094;
  continue;
  } else {
  if((cljs.core.seq(coll_13088__$1)) && ((n_13089 === (0)))){
  cljs.core._write(writer,sep);
  
  cljs.core._write(writer,"...");
  } else {
  }
  }
  break;
  }
  
  return cljs.core._write(writer,end);
  }
  }finally {cljs.core._STAR_print_level_STAR_ = _STAR_print_level_STAR_13078;
  }});
  /**
  * @param {...*} var_args
  */
  cljs.core.write_all = (function() { 
  var write_all__delegate = function (writer,ss){
  var seq__13099 = cljs.core.seq(ss);
  var chunk__13100 = null;
  var count__13101 = (0);
  var i__13102 = (0);
  while(true){
  if((i__13102 < count__13101)){
  var s = chunk__13100.cljs$core$IIndexed$_nth$arity$2(null,i__13102);
  cljs.core._write(writer,s);
  
  var G__13103 = seq__13099;
  var G__13104 = chunk__13100;
  var G__13105 = count__13101;
  var G__13106 = (i__13102 + (1));
  seq__13099 = G__13103;
  chunk__13100 = G__13104;
  count__13101 = G__13105;
  i__13102 = G__13106;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__13099);
  if(temp__4126__auto__){
  var seq__13099__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__13099__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__13099__$1);
  var G__13107 = cljs.core.chunk_rest(seq__13099__$1);
  var G__13108 = c__4595__auto__;
  var G__13109 = cljs.core.count(c__4595__auto__);
  var G__13110 = (0);
  seq__13099 = G__13107;
  chunk__13100 = G__13108;
  count__13101 = G__13109;
  i__13102 = G__13110;
  continue;
  } else {
  var s = cljs.core.first(seq__13099__$1);
  cljs.core._write(writer,s);
  
  var G__13111 = cljs.core.next(seq__13099__$1);
  var G__13112 = null;
  var G__13113 = (0);
  var G__13114 = (0);
  seq__13099 = G__13111;
  chunk__13100 = G__13112;
  count__13101 = G__13113;
  i__13102 = G__13114;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  };
  var write_all = function (writer,var_args){
  var ss = null;
  if (arguments.length > 1) {
  var G__13115__i = 0, G__13115__a = new Array(arguments.length -  1);
  while (G__13115__i < G__13115__a.length) {G__13115__a[G__13115__i] = arguments[G__13115__i + 1]; ++G__13115__i;}
    ss = new cljs.core.IndexedSeq(G__13115__a,0);
  } 
  return write_all__delegate.call(this,writer,ss);};
  write_all.cljs$lang$maxFixedArity = 1;
  write_all.cljs$lang$applyTo = (function (arglist__13116){
  var writer = cljs.core.first(arglist__13116);
  var ss = cljs.core.rest(arglist__13116);
  return write_all__delegate(writer,ss);
  });
  write_all.cljs$core$IFn$_invoke$arity$variadic = write_all__delegate;
  return write_all;
  })()
  ;
  cljs.core.string_print = (function string_print(x){
  (cljs.core._STAR_print_fn_STAR_.cljs$core$IFn$_invoke$arity$1 ? cljs.core._STAR_print_fn_STAR_.cljs$core$IFn$_invoke$arity$1(x) : cljs.core._STAR_print_fn_STAR_.call(null,x));
  
  return null;
  });
  cljs.core.flush = (function flush(){
  return null;
  });
  cljs.core.char_escapes = (function (){var obj13118 = {"\"":"\\\"","\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"};
  return obj13118;
  })();
  cljs.core.quote_string = (function quote_string(s){
  return [cljs.core.str("\""),cljs.core.str(s.replace((function (){var G__13121 = "[\\\\\"\b\f\n\r\t]";
  var G__13122 = "g";
  return RegExp(G__13121,G__13122);
  })(),(function (match){
  return (cljs.core.char_escapes[match]);
  }))),cljs.core.str("\"")].join('');
  });
  /**
  * Prefer this to pr-seq, because it makes the printing function
  * configurable, allowing efficient implementations such as appending
  * to a StringBuffer.
  */
  cljs.core.pr_writer = (function pr_writer(obj,writer,opts){
  if((obj == null)){
  return cljs.core._write(writer,"nil");
  } else {
  if((void 0 === obj)){
  return cljs.core._write(writer,"#<undefined>");
  } else {
  if(cljs.core.truth_((function (){var and__3796__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$2(opts,new cljs.core.Keyword(null,"meta","meta",1499536964));
  if(cljs.core.truth_(and__3796__auto__)){
  var and__3796__auto____$1 = (function (){var G__13136 = obj;
  if(G__13136){
  var bit__4489__auto__ = (G__13136.cljs$lang$protocol_mask$partition0$ & (131072));
  if((bit__4489__auto__) || (G__13136.cljs$core$IMeta$)){
  return true;
  } else {
  if((!G__13136.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMeta,G__13136);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IMeta,G__13136);
  }
  })();
  if(and__3796__auto____$1){
  return cljs.core.meta(obj);
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  })())){
  cljs.core._write(writer,"^");
  
  pr_writer(cljs.core.meta(obj),writer,opts);
  
  cljs.core._write(writer," ");
  } else {
  }
  
  if((obj == null)){
  return cljs.core._write(writer,"nil");
  } else {
  if(obj.cljs$lang$type){
  return obj.cljs$lang$ctorPrWriter(obj,writer,opts);
  } else {
  if((function (){var G__13137 = obj;
  if(G__13137){
  var bit__4482__auto__ = (G__13137.cljs$lang$protocol_mask$partition0$ & (2147483648));
  if((bit__4482__auto__) || (G__13137.cljs$core$IPrintWithWriter$)){
  return true;
  } else {
  return false;
  }
  } else {
  return false;
  }
  })()){
  return obj.cljs$core$IPrintWithWriter$_pr_writer$arity$3(null,writer,opts);
  } else {
  if(((cljs.core.type(obj) === Boolean)) || (typeof obj === 'number')){
  return cljs.core._write(writer,[cljs.core.str(obj)].join(''));
  } else {
  if(cljs.core.object_QMARK_(obj)){
  cljs.core._write(writer,"#js ");
  
  var G__13138 = cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (k){
  return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.keyword.cljs$core$IFn$_invoke$arity$1(k),(obj[k])], null);
  }),cljs.core.js_keys(obj));
  var G__13139 = pr_writer;
  var G__13140 = writer;
  var G__13141 = opts;
  return (cljs.core.print_map.cljs$core$IFn$_invoke$arity$4 ? cljs.core.print_map.cljs$core$IFn$_invoke$arity$4(G__13138,G__13139,G__13140,G__13141) : cljs.core.print_map.call(null,G__13138,G__13139,G__13140,G__13141));
  } else {
  if(obj instanceof Array){
  return cljs.core.pr_sequential_writer(writer,pr_writer,"#js ["," ","]",opts,obj);
  } else {
  if(cljs.core.truth_((function (){var G__13142 = obj;
  return goog.isString(G__13142);
  })())){
  if(cljs.core.truth_(new cljs.core.Keyword(null,"readably","readably",1129599760).cljs$core$IFn$_invoke$arity$1(opts))){
  return cljs.core._write(writer,cljs.core.quote_string(obj));
  } else {
  return cljs.core._write(writer,obj);
  }
  } else {
  if(cljs.core.fn_QMARK_(obj)){
  return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.array_seq(["#<",[cljs.core.str(obj)].join(''),">"], 0));
  } else {
  if((obj instanceof Date)){
  var normalize = (function (n,len){
  var ns = [cljs.core.str(n)].join('');
  while(true){
  if((cljs.core.count(ns) < len)){
  var G__13144 = [cljs.core.str("0"),cljs.core.str(ns)].join('');
  ns = G__13144;
  continue;
  } else {
  return ns;
  }
  break;
  }
  });
  return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.array_seq(["#inst \"",[cljs.core.str(obj.getUTCFullYear())].join(''),"-",normalize((obj.getUTCMonth() + (1)),(2)),"-",normalize(obj.getUTCDate(),(2)),"T",normalize(obj.getUTCHours(),(2)),":",normalize(obj.getUTCMinutes(),(2)),":",normalize(obj.getUTCSeconds(),(2)),".",normalize(obj.getUTCMilliseconds(),(3)),"-","00:00\""], 0));
  } else {
  if(cljs.core.regexp_QMARK_(obj)){
  return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.array_seq(["#\"",obj.source,"\""], 0));
  } else {
  if((function (){var G__13143 = obj;
  if(G__13143){
  var bit__4489__auto__ = (G__13143.cljs$lang$protocol_mask$partition0$ & (2147483648));
  if((bit__4489__auto__) || (G__13143.cljs$core$IPrintWithWriter$)){
  return true;
  } else {
  if((!G__13143.cljs$lang$protocol_mask$partition0$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IPrintWithWriter,G__13143);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IPrintWithWriter,G__13143);
  }
  })()){
  return cljs.core._pr_writer(obj,writer,opts);
  } else {
  return cljs.core.write_all.cljs$core$IFn$_invoke$arity$variadic(writer,cljs.core.array_seq(["#<",[cljs.core.str(obj)].join(''),">"], 0));
  
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  }
  
  }
  }
  });
  cljs.core.pr_seq_writer = (function pr_seq_writer(objs,writer,opts){
  cljs.core.pr_writer(cljs.core.first(objs),writer,opts);
  
  var seq__13149 = cljs.core.seq(cljs.core.next(objs));
  var chunk__13150 = null;
  var count__13151 = (0);
  var i__13152 = (0);
  while(true){
  if((i__13152 < count__13151)){
  var obj = chunk__13150.cljs$core$IIndexed$_nth$arity$2(null,i__13152);
  cljs.core._write(writer," ");
  
  cljs.core.pr_writer(obj,writer,opts);
  
  var G__13153 = seq__13149;
  var G__13154 = chunk__13150;
  var G__13155 = count__13151;
  var G__13156 = (i__13152 + (1));
  seq__13149 = G__13153;
  chunk__13150 = G__13154;
  count__13151 = G__13155;
  i__13152 = G__13156;
  continue;
  } else {
  var temp__4126__auto__ = cljs.core.seq(seq__13149);
  if(temp__4126__auto__){
  var seq__13149__$1 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(seq__13149__$1)){
  var c__4595__auto__ = cljs.core.chunk_first(seq__13149__$1);
  var G__13157 = cljs.core.chunk_rest(seq__13149__$1);
  var G__13158 = c__4595__auto__;
  var G__13159 = cljs.core.count(c__4595__auto__);
  var G__13160 = (0);
  seq__13149 = G__13157;
  chunk__13150 = G__13158;
  count__13151 = G__13159;
  i__13152 = G__13160;
  continue;
  } else {
  var obj = cljs.core.first(seq__13149__$1);
  cljs.core._write(writer," ");
  
  cljs.core.pr_writer(obj,writer,opts);
  
  var G__13161 = cljs.core.next(seq__13149__$1);
  var G__13162 = null;
  var G__13163 = (0);
  var G__13164 = (0);
  seq__13149 = G__13161;
  chunk__13150 = G__13162;
  count__13151 = G__13163;
  i__13152 = G__13164;
  continue;
  }
  } else {
  return null;
  }
  }
  break;
  }
  });
  cljs.core.pr_sb_with_opts = (function pr_sb_with_opts(objs,opts){
  var sb = (new goog.string.StringBuffer());
  var writer = (new cljs.core.StringBufferWriter(sb));
  cljs.core.pr_seq_writer(objs,writer,opts);
  
  writer.cljs$core$IWriter$_flush$arity$1(null);
  
  return sb;
  });
  /**
  * Prints a sequence of objects to a string, observing all the
  * options given in opts
  */
  cljs.core.pr_str_with_opts = (function pr_str_with_opts(objs,opts){
  if(cljs.core.empty_QMARK_(objs)){
  return "";
  } else {
  return [cljs.core.str(cljs.core.pr_sb_with_opts(objs,opts))].join('');
  }
  });
  /**
  * Same as pr-str-with-opts followed by (newline)
  */
  cljs.core.prn_str_with_opts = (function prn_str_with_opts(objs,opts){
  if(cljs.core.empty_QMARK_(objs)){
  return "\n";
  } else {
  var sb = cljs.core.pr_sb_with_opts(objs,opts);
  sb.append("\n");
  
  return [cljs.core.str(sb)].join('');
  }
  });
  /**
  * Prints a sequence of objects using string-print, observing all
  * the options given in opts
  */
  cljs.core.pr_with_opts = (function pr_with_opts(objs,opts){
  return cljs.core.string_print(cljs.core.pr_str_with_opts(objs,opts));
  });
  cljs.core.newline = (function newline(opts){
  cljs.core.string_print("\n");
  
  if(cljs.core.truth_(cljs.core.get.cljs$core$IFn$_invoke$arity$2(opts,new cljs.core.Keyword(null,"flush-on-newline","flush-on-newline",-151457939)))){
  return cljs.core.flush();
  } else {
  return null;
  }
  });
  /**
  * pr to a string, returning it. Fundamental entrypoint to IPrintWithWriter.
  * @param {...*} var_args
  */
  cljs.core.pr_str = (function() { 
  var pr_str__delegate = function (objs){
  return cljs.core.pr_str_with_opts(objs,cljs.core.pr_opts());
  };
  var pr_str = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13165__i = 0, G__13165__a = new Array(arguments.length -  0);
  while (G__13165__i < G__13165__a.length) {G__13165__a[G__13165__i] = arguments[G__13165__i + 0]; ++G__13165__i;}
    objs = new cljs.core.IndexedSeq(G__13165__a,0);
  } 
  return pr_str__delegate.call(this,objs);};
  pr_str.cljs$lang$maxFixedArity = 0;
  pr_str.cljs$lang$applyTo = (function (arglist__13166){
  var objs = cljs.core.seq(arglist__13166);
  return pr_str__delegate(objs);
  });
  pr_str.cljs$core$IFn$_invoke$arity$variadic = pr_str__delegate;
  return pr_str;
  })()
  ;
  /**
  * Same as pr-str followed by (newline)
  * @param {...*} var_args
  */
  cljs.core.prn_str = (function() { 
  var prn_str__delegate = function (objs){
  return cljs.core.prn_str_with_opts(objs,cljs.core.pr_opts());
  };
  var prn_str = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13167__i = 0, G__13167__a = new Array(arguments.length -  0);
  while (G__13167__i < G__13167__a.length) {G__13167__a[G__13167__i] = arguments[G__13167__i + 0]; ++G__13167__i;}
    objs = new cljs.core.IndexedSeq(G__13167__a,0);
  } 
  return prn_str__delegate.call(this,objs);};
  prn_str.cljs$lang$maxFixedArity = 0;
  prn_str.cljs$lang$applyTo = (function (arglist__13168){
  var objs = cljs.core.seq(arglist__13168);
  return prn_str__delegate(objs);
  });
  prn_str.cljs$core$IFn$_invoke$arity$variadic = prn_str__delegate;
  return prn_str;
  })()
  ;
  /**
  * Prints the object(s) using string-print.  Prints the
  * object(s), separated by spaces if there is more than one.
  * By default, pr and prn print in a way that objects can be
  * read by the reader
  * @param {...*} var_args
  */
  cljs.core.pr = (function() { 
  var pr__delegate = function (objs){
  return cljs.core.pr_with_opts(objs,cljs.core.pr_opts());
  };
  var pr = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13169__i = 0, G__13169__a = new Array(arguments.length -  0);
  while (G__13169__i < G__13169__a.length) {G__13169__a[G__13169__i] = arguments[G__13169__i + 0]; ++G__13169__i;}
    objs = new cljs.core.IndexedSeq(G__13169__a,0);
  } 
  return pr__delegate.call(this,objs);};
  pr.cljs$lang$maxFixedArity = 0;
  pr.cljs$lang$applyTo = (function (arglist__13170){
  var objs = cljs.core.seq(arglist__13170);
  return pr__delegate(objs);
  });
  pr.cljs$core$IFn$_invoke$arity$variadic = pr__delegate;
  return pr;
  })()
  ;
  /**
  * Prints the object(s) using string-print.
  * print and println produce output for human consumption.
  * @param {...*} var_args
  */
  cljs.core.print = (function() { 
  var cljs_core_print__delegate = function (objs){
  return cljs.core.pr_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
  };
  var cljs_core_print = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13171__i = 0, G__13171__a = new Array(arguments.length -  0);
  while (G__13171__i < G__13171__a.length) {G__13171__a[G__13171__i] = arguments[G__13171__i + 0]; ++G__13171__i;}
    objs = new cljs.core.IndexedSeq(G__13171__a,0);
  } 
  return cljs_core_print__delegate.call(this,objs);};
  cljs_core_print.cljs$lang$maxFixedArity = 0;
  cljs_core_print.cljs$lang$applyTo = (function (arglist__13172){
  var objs = cljs.core.seq(arglist__13172);
  return cljs_core_print__delegate(objs);
  });
  cljs_core_print.cljs$core$IFn$_invoke$arity$variadic = cljs_core_print__delegate;
  return cljs_core_print;
  })()
  ;
  /**
  * print to a string, returning it
  * @param {...*} var_args
  */
  cljs.core.print_str = (function() { 
  var print_str__delegate = function (objs){
  return cljs.core.pr_str_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
  };
  var print_str = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13173__i = 0, G__13173__a = new Array(arguments.length -  0);
  while (G__13173__i < G__13173__a.length) {G__13173__a[G__13173__i] = arguments[G__13173__i + 0]; ++G__13173__i;}
    objs = new cljs.core.IndexedSeq(G__13173__a,0);
  } 
  return print_str__delegate.call(this,objs);};
  print_str.cljs$lang$maxFixedArity = 0;
  print_str.cljs$lang$applyTo = (function (arglist__13174){
  var objs = cljs.core.seq(arglist__13174);
  return print_str__delegate(objs);
  });
  print_str.cljs$core$IFn$_invoke$arity$variadic = print_str__delegate;
  return print_str;
  })()
  ;
  /**
  * Same as print followed by (newline)
  * @param {...*} var_args
  */
  cljs.core.println = (function() { 
  var println__delegate = function (objs){
  cljs.core.pr_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
  
  if(cljs.core.truth_(cljs.core._STAR_print_newline_STAR_)){
  return cljs.core.newline(cljs.core.pr_opts());
  } else {
  return null;
  }
  };
  var println = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13175__i = 0, G__13175__a = new Array(arguments.length -  0);
  while (G__13175__i < G__13175__a.length) {G__13175__a[G__13175__i] = arguments[G__13175__i + 0]; ++G__13175__i;}
    objs = new cljs.core.IndexedSeq(G__13175__a,0);
  } 
  return println__delegate.call(this,objs);};
  println.cljs$lang$maxFixedArity = 0;
  println.cljs$lang$applyTo = (function (arglist__13176){
  var objs = cljs.core.seq(arglist__13176);
  return println__delegate(objs);
  });
  println.cljs$core$IFn$_invoke$arity$variadic = println__delegate;
  return println;
  })()
  ;
  /**
  * println to a string, returning it
  * @param {...*} var_args
  */
  cljs.core.println_str = (function() { 
  var println_str__delegate = function (objs){
  return cljs.core.prn_str_with_opts(objs,cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(cljs.core.pr_opts(),new cljs.core.Keyword(null,"readably","readably",1129599760),false));
  };
  var println_str = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13177__i = 0, G__13177__a = new Array(arguments.length -  0);
  while (G__13177__i < G__13177__a.length) {G__13177__a[G__13177__i] = arguments[G__13177__i + 0]; ++G__13177__i;}
    objs = new cljs.core.IndexedSeq(G__13177__a,0);
  } 
  return println_str__delegate.call(this,objs);};
  println_str.cljs$lang$maxFixedArity = 0;
  println_str.cljs$lang$applyTo = (function (arglist__13178){
  var objs = cljs.core.seq(arglist__13178);
  return println_str__delegate(objs);
  });
  println_str.cljs$core$IFn$_invoke$arity$variadic = println_str__delegate;
  return println_str;
  })()
  ;
  /**
  * Same as pr followed by (newline).
  * @param {...*} var_args
  */
  cljs.core.prn = (function() { 
  var prn__delegate = function (objs){
  cljs.core.pr_with_opts(objs,cljs.core.pr_opts());
  
  if(cljs.core.truth_(cljs.core._STAR_print_newline_STAR_)){
  return cljs.core.newline(cljs.core.pr_opts());
  } else {
  return null;
  }
  };
  var prn = function (var_args){
  var objs = null;
  if (arguments.length > 0) {
  var G__13179__i = 0, G__13179__a = new Array(arguments.length -  0);
  while (G__13179__i < G__13179__a.length) {G__13179__a[G__13179__i] = arguments[G__13179__i + 0]; ++G__13179__i;}
    objs = new cljs.core.IndexedSeq(G__13179__a,0);
  } 
  return prn__delegate.call(this,objs);};
  prn.cljs$lang$maxFixedArity = 0;
  prn.cljs$lang$applyTo = (function (arglist__13180){
  var objs = cljs.core.seq(arglist__13180);
  return prn__delegate(objs);
  });
  prn.cljs$core$IFn$_invoke$arity$variadic = prn__delegate;
  return prn;
  })()
  ;
  cljs.core.print_map = (function print_map(m,print_one,writer,opts){
  return cljs.core.pr_sequential_writer(writer,(function (e,w,opts__$1){
  var G__13187_13193 = cljs.core.key(e);
  var G__13188_13194 = w;
  var G__13189_13195 = opts__$1;
  (print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__13187_13193,G__13188_13194,G__13189_13195) : print_one.call(null,G__13187_13193,G__13188_13194,G__13189_13195));
  
  cljs.core._write(w," ");
  
  var G__13190 = cljs.core.val(e);
  var G__13191 = w;
  var G__13192 = opts__$1;
  return (print_one.cljs$core$IFn$_invoke$arity$3 ? print_one.cljs$core$IFn$_invoke$arity$3(G__13190,G__13191,G__13192) : print_one.call(null,G__13190,G__13191,G__13192));
  }),"{",", ","}",opts,cljs.core.seq(m));
  });
  cljs.core.Volatile.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.Volatile.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (a,writer,opts){
  var a__$1 = this;
  cljs.core._write(writer,"#<Volatile: ");
  
  cljs.core.pr_writer(a__$1.state,writer,opts);
  
  return cljs.core._write(writer,">");
  });
  
  cljs.core.Var.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.Var.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (a,writer,opts){
  var a__$1 = this;
  cljs.core._write(writer,"#'");
  
  return cljs.core.pr_writer(a__$1.sym,writer,opts);
  });
  
  cljs.core.IndexedSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.IndexedSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.LazySeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.LazySeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentTreeMapSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.NodeSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.NodeSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.BlackNode.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.BlackNode.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
  });
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentArrayMapSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.ES6IteratorSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ES6IteratorSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentTreeSet.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#{"," ","}",opts,coll__$1);
  });
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ChunkedSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.ObjMap.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ObjMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
  });
  
  cljs.core.Cons.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.Cons.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.RSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.RSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentHashMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
  });
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ArrayNodeSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.Subvec.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
  });
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentTreeMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
  });
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentHashSet.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#{"," ","}",opts,coll__$1);
  });
  
  cljs.core.ChunkedCons.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ChunkedCons.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.Atom.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.Atom.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (a,writer,opts){
  var a__$1 = this;
  cljs.core._write(writer,"#<Atom: ");
  
  cljs.core.pr_writer(a__$1.state,writer,opts);
  
  return cljs.core._write(writer,">");
  });
  
  cljs.core.ValSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ValSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.RedNode.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.RedNode.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
  });
  
  cljs.core.PersistentVector.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentVector.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"["," ","]",opts,coll__$1);
  });
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentQueueSeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.EmptyList.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.EmptyList.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core._write(writer,"()");
  });
  
  cljs.core.LazyTransformer.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.LazyTransformer.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.PersistentQueue.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentQueue.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"#queue ["," ","]",opts,cljs.core.seq(coll__$1));
  });
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.PersistentArrayMap.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.print_map(coll__$1,cljs.core.pr_writer,writer,opts);
  });
  
  cljs.core.Range.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.Range.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.KeySeq.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.KeySeq.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  
  cljs.core.List.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.List.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
  var coll__$1 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$1);
  });
  cljs.core.PersistentVector.prototype.cljs$core$IComparable$ = true;
  
  cljs.core.PersistentVector.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
  var x__$1 = this;
  return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
  });
  
  cljs.core.Subvec.prototype.cljs$core$IComparable$ = true;
  
  cljs.core.Subvec.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
  var x__$1 = this;
  return cljs.core.compare_indexed.cljs$core$IFn$_invoke$arity$2(x__$1,y);
  });
  
  cljs.core.Keyword.prototype.cljs$core$IComparable$ = true;
  
  cljs.core.Keyword.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
  var x__$1 = this;
  return cljs.core.compare_keywords(x__$1,y);
  });
  
  cljs.core.Symbol.prototype.cljs$core$IComparable$ = true;
  
  cljs.core.Symbol.prototype.cljs$core$IComparable$_compare$arity$2 = (function (x,y){
  var x__$1 = this;
  return cljs.core.compare_symbols(x__$1,y);
  });
  /**
  * Atomically sets the metadata for a namespace/var/ref/agent/atom to be:
  * 
  * (apply f its-current-meta args)
  * 
  * f must be free of side-effects
  * @param {...*} var_args
  */
  cljs.core.alter_meta_BANG_ = (function() { 
  var alter_meta_BANG___delegate = function (iref,f,args){
  return iref.meta = cljs.core.apply.cljs$core$IFn$_invoke$arity$3(f,iref.meta,args);
  };
  var alter_meta_BANG_ = function (iref,f,var_args){
  var args = null;
  if (arguments.length > 2) {
  var G__13196__i = 0, G__13196__a = new Array(arguments.length -  2);
  while (G__13196__i < G__13196__a.length) {G__13196__a[G__13196__i] = arguments[G__13196__i + 2]; ++G__13196__i;}
    args = new cljs.core.IndexedSeq(G__13196__a,0);
  } 
  return alter_meta_BANG___delegate.call(this,iref,f,args);};
  alter_meta_BANG_.cljs$lang$maxFixedArity = 2;
  alter_meta_BANG_.cljs$lang$applyTo = (function (arglist__13197){
  var iref = cljs.core.first(arglist__13197);
  arglist__13197 = cljs.core.next(arglist__13197);
  var f = cljs.core.first(arglist__13197);
  var args = cljs.core.rest(arglist__13197);
  return alter_meta_BANG___delegate(iref,f,args);
  });
  alter_meta_BANG_.cljs$core$IFn$_invoke$arity$variadic = alter_meta_BANG___delegate;
  return alter_meta_BANG_;
  })()
  ;
  /**
  * Atomically resets the metadata for an atom
  */
  cljs.core.reset_meta_BANG_ = (function reset_meta_BANG_(iref,m){
  return iref.meta = m;
  });
  /**
  * Alpha - subject to change.
  * 
  * Adds a watch function to an atom reference. The watch fn must be a
  * fn of 4 args: a key, the reference, its old-state, its
  * new-state. Whenever the reference's state might have been changed,
  * any registered watches will have their functions called. The watch
  * fn will be called synchronously. Note that an atom's state
  * may have changed again prior to the fn call, so use old/new-state
  * rather than derefing the reference. Keys must be unique per
  * reference, and can be used to remove the watch with remove-watch,
  * but are otherwise considered opaque by the watch mechanism.  Bear in
  * mind that regardless of the result or action of the watch fns the
  * atom's value will change.  Example:
  * 
  * (def a (atom 0))
  * (add-watch a :inc (fn [k r o n] (assert (== 0 n))))
  * (swap! a inc)
  * ;; Assertion Error
  * (deref a)
  * ;=> 1
  */
  cljs.core.add_watch = (function add_watch(iref,key,f){
  cljs.core._add_watch(iref,key,f);
  
  return iref;
  });
  /**
  * Alpha - subject to change.
  * 
  * Removes a watch (set by add-watch) from a reference
  */
  cljs.core.remove_watch = (function remove_watch(iref,key){
  cljs.core._remove_watch(iref,key);
  
  return iref;
  });
  cljs.core.gensym_counter = null;
  /**
  * Returns a new symbol with a unique name. If a prefix string is
  * supplied, the name is prefix# where # is some unique number. If
  * prefix is not supplied, the prefix is 'G__'.
  */
  cljs.core.gensym = (function() {
  var gensym = null;
  var gensym__0 = (function (){
  return gensym.cljs$core$IFn$_invoke$arity$1("G__");
  });
  var gensym__1 = (function (prefix_string){
  if((cljs.core.gensym_counter == null)){
  cljs.core.gensym_counter = (function (){var G__13200 = (0);
  return (cljs.core.atom.cljs$core$IFn$_invoke$arity$1 ? cljs.core.atom.cljs$core$IFn$_invoke$arity$1(G__13200) : cljs.core.atom.call(null,G__13200));
  })();
  } else {
  }
  
  return cljs.core.symbol.cljs$core$IFn$_invoke$arity$1([cljs.core.str(prefix_string),cljs.core.str(cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(cljs.core.gensym_counter,cljs.core.inc))].join(''));
  });
  gensym = function(prefix_string){
  switch(arguments.length){
  case 0:
  return gensym__0.call(this);
  case 1:
  return gensym__1.call(this,prefix_string);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  gensym.cljs$core$IFn$_invoke$arity$0 = gensym__0;
  gensym.cljs$core$IFn$_invoke$arity$1 = gensym__1;
  return gensym;
  })()
  ;
  cljs.core.fixture1 = (1);
  cljs.core.fixture2 = (2);
  
  /**
  * @constructor
  */
  cljs.core.Delay = (function (f,value){
  this.f = f;
  this.value = value;
  this.cljs$lang$protocol_mask$partition1$ = 1;
  this.cljs$lang$protocol_mask$partition0$ = 32768;
  })
  cljs.core.Delay.prototype.cljs$core$IPending$_realized_QMARK_$arity$1 = (function (d){
  var self__ = this;
  var d__$1 = this;
  return cljs.core.not(self__.f);
  });
  
  cljs.core.Delay.prototype.cljs$core$IDeref$_deref$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  if(cljs.core.truth_(self__.f)){
  self__.value = (function (){return (self__.f.cljs$core$IFn$_invoke$arity$0 ? self__.f.cljs$core$IFn$_invoke$arity$0() : self__.f.call(null));
  })();
  
  self__.f = null;
  } else {
  }
  
  return self__.value;
  });
  
  cljs.core.Delay.cljs$lang$type = true;
  
  cljs.core.Delay.cljs$lang$ctorStr = "cljs.core/Delay";
  
  cljs.core.Delay.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Delay");
  });
  
  cljs.core.__GT_Delay = (function __GT_Delay(f,value){
  return (new cljs.core.Delay(f,value));
  });
  
  /**
  * returns true if x is a Delay created with delay
  */
  cljs.core.delay_QMARK_ = (function delay_QMARK_(x){
  return (x instanceof cljs.core.Delay);
  });
  /**
  * If x is a Delay, returns the (possibly cached) value of its expression, else returns x
  */
  cljs.core.force = (function force(x){
  if(cljs.core.delay_QMARK_(x)){
  var G__13202 = x;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13202) : cljs.core.deref.call(null,G__13202));
  } else {
  return x;
  }
  });
  /**
  * Returns true if a value has been produced for a promise, delay, future or lazy sequence.
  */
  cljs.core.realized_QMARK_ = (function realized_QMARK_(d){
  return cljs.core._realized_QMARK_(d);
  });
  cljs.core.preserving_reduced = (function preserving_reduced(rf){
  return (function (p1__13203_SHARP_,p2__13204_SHARP_){
  var ret = (function (){var G__13207 = p1__13203_SHARP_;
  var G__13208 = p2__13204_SHARP_;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__13207,G__13208) : rf.call(null,G__13207,G__13208));
  })();
  if(cljs.core.reduced_QMARK_(ret)){
  return cljs.core.reduced(ret);
  } else {
  return ret;
  }
  });
  });
  /**
  * A transducer which concatenates the contents of each input, which must be a
  * collection, into the reduction.
  */
  cljs.core.cat = (function cat(rf){
  var rf1 = cljs.core.preserving_reduced(rf);
  return ((function (rf1){
  return (function() {
  var G__13211 = null;
  var G__13211__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__13211__1 = (function (result){
  var G__13210 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__13210) : rf.call(null,G__13210));
  });
  var G__13211__2 = (function (result,input){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(rf1,result,input);
  });
  G__13211 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__13211__0.call(this);
  case 1:
  return G__13211__1.call(this,result);
  case 2:
  return G__13211__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__13211.cljs$core$IFn$_invoke$arity$0 = G__13211__0;
  G__13211.cljs$core$IFn$_invoke$arity$1 = G__13211__1;
  G__13211.cljs$core$IFn$_invoke$arity$2 = G__13211__2;
  return G__13211;
  })()
  ;})(rf1))
  });
  /**
  * Returns a lazy sequence removing consecutive duplicates in coll.
  * Returns a transducer when no collection is provided.
  */
  cljs.core.dedupe = (function() {
  var dedupe = null;
  var dedupe__0 = (function (){
  return (function (rf){
  var pa = cljs.core.volatile_BANG_(new cljs.core.Keyword("cljs.core","none","cljs.core/none",926646439));
  return ((function (pa){
  return (function() {
  var G__13220 = null;
  var G__13220__0 = (function (){
  return (rf.cljs$core$IFn$_invoke$arity$0 ? rf.cljs$core$IFn$_invoke$arity$0() : rf.call(null));
  });
  var G__13220__1 = (function (result){
  var G__13216 = result;
  return (rf.cljs$core$IFn$_invoke$arity$1 ? rf.cljs$core$IFn$_invoke$arity$1(G__13216) : rf.call(null,G__13216));
  });
  var G__13220__2 = (function (result,input){
  var prior = (function (){var G__13217 = pa;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13217) : cljs.core.deref.call(null,G__13217));
  })();
  cljs.core.vreset_BANG_(pa,input);
  
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(prior,input)){
  return result;
  } else {
  var G__13218 = result;
  var G__13219 = input;
  return (rf.cljs$core$IFn$_invoke$arity$2 ? rf.cljs$core$IFn$_invoke$arity$2(G__13218,G__13219) : rf.call(null,G__13218,G__13219));
  }
  });
  G__13220 = function(result,input){
  switch(arguments.length){
  case 0:
  return G__13220__0.call(this);
  case 1:
  return G__13220__1.call(this,result);
  case 2:
  return G__13220__2.call(this,result,input);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__13220.cljs$core$IFn$_invoke$arity$0 = G__13220__0;
  G__13220.cljs$core$IFn$_invoke$arity$1 = G__13220__1;
  G__13220.cljs$core$IFn$_invoke$arity$2 = G__13220__2;
  return G__13220;
  })()
  ;})(pa))
  });
  });
  var dedupe__1 = (function (coll){
  return cljs.core.sequence.cljs$core$IFn$_invoke$arity$2(dedupe.cljs$core$IFn$_invoke$arity$0(),coll);
  });
  dedupe = function(coll){
  switch(arguments.length){
  case 0:
  return dedupe__0.call(this);
  case 1:
  return dedupe__1.call(this,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  dedupe.cljs$core$IFn$_invoke$arity$0 = dedupe__0;
  dedupe.cljs$core$IFn$_invoke$arity$1 = dedupe__1;
  return dedupe;
  })()
  ;
  /**
  * Returns items from coll with random probability of prob (0.0 -
  * 1.0).  Returns a transducer when no collection is provided.
  */
  cljs.core.random_sample = (function() {
  var random_sample = null;
  var random_sample__1 = (function (prob){
  return cljs.core.filter.cljs$core$IFn$_invoke$arity$1((function (_){
  return ((function (){return (cljs.core.rand.cljs$core$IFn$_invoke$arity$0 ? cljs.core.rand.cljs$core$IFn$_invoke$arity$0() : cljs.core.rand.call(null));
  })() < prob);
  }));
  });
  var random_sample__2 = (function (prob,coll){
  return cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (_){
  return ((function (){return (cljs.core.rand.cljs$core$IFn$_invoke$arity$0 ? cljs.core.rand.cljs$core$IFn$_invoke$arity$0() : cljs.core.rand.call(null));
  })() < prob);
  }),coll);
  });
  random_sample = function(prob,coll){
  switch(arguments.length){
  case 1:
  return random_sample__1.call(this,prob);
  case 2:
  return random_sample__2.call(this,prob,coll);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  random_sample.cljs$core$IFn$_invoke$arity$1 = random_sample__1;
  random_sample.cljs$core$IFn$_invoke$arity$2 = random_sample__2;
  return random_sample;
  })()
  ;
  
  /**
  * @constructor
  */
  cljs.core.Eduction = (function (xform,coll){
  this.xform = xform;
  this.coll = coll;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 2173173760;
  })
  cljs.core.Eduction.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll__$1,writer,opts){
  var self__ = this;
  var coll__$2 = this;
  return cljs.core.pr_sequential_writer(writer,cljs.core.pr_writer,"("," ",")",opts,coll__$2);
  });
  
  cljs.core.Eduction.prototype.cljs$core$IReduce$_reduce$arity$3 = (function (_,f,init){
  var self__ = this;
  var ___$1 = this;
  return cljs.core.transduce.cljs$core$IFn$_invoke$arity$4(self__.xform,f,init,self__.coll);
  });
  
  cljs.core.Eduction.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (_){
  var self__ = this;
  var ___$1 = this;
  return cljs.core.seq(cljs.core.sequence.cljs$core$IFn$_invoke$arity$2(self__.xform,self__.coll));
  });
  
  cljs.core.Eduction.cljs$lang$type = true;
  
  cljs.core.Eduction.cljs$lang$ctorStr = "cljs.core/Eduction";
  
  cljs.core.Eduction.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/Eduction");
  });
  
  cljs.core.__GT_Eduction = (function __GT_Eduction(xform,coll){
  return (new cljs.core.Eduction(xform,coll));
  });
  
  (cljs.core.Eduction.prototype[cljs.core.ITER_SYMBOL] = (function (){
  var this__4786__auto__ = this;
  return cljs.core.es6_iterator(this__4786__auto__);
  }));
  /**
  * Returns a reducible/iterable/seqable application of
  * the transducer to the items in coll. Note that these applications
  * will be performed every time iterator/seq/reduce is called.
  */
  cljs.core.eduction = (function eduction(xform,coll){
  return (new cljs.core.Eduction(xform,coll));
  });
  /**
  * Runs the supplied procedure (via reduce), for purposes of side
  * effects, on successive items in the collection. Returns nil
  */
  cljs.core.run_BANG_ = (function run_BANG_(proc,coll){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (p1__13222_SHARP_,p2__13221_SHARP_){
  var G__13224 = p2__13221_SHARP_;
  return (proc.cljs$core$IFn$_invoke$arity$1 ? proc.cljs$core$IFn$_invoke$arity$1(G__13224) : proc.call(null,G__13224));
  }),null,coll);
  });
  
  cljs.core.IEncodeJS = (function (){var obj13226 = {};
  return obj13226;
  })();
  
  cljs.core._clj__GT_js = (function _clj__GT_js(x){
  if((function (){var and__3796__auto__ = x;
  if(and__3796__auto__){
  return x.cljs$core$IEncodeJS$_clj__GT_js$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return x.cljs$core$IEncodeJS$_clj__GT_js$arity$1(x);
  } else {
  var x__4452__auto__ = (((x == null))?null:x);
  return (function (){var or__3808__auto__ = (cljs.core._clj__GT_js[(function (){var G__13230 = x__4452__auto__;
  return goog.typeOf(G__13230);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._clj__GT_js["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IEncodeJS.-clj->js",x);
  }
  }
  })().call(null,x);
  }
  });
  
  cljs.core._key__GT_js = (function _key__GT_js(x){
  if((function (){var and__3796__auto__ = x;
  if(and__3796__auto__){
  return x.cljs$core$IEncodeJS$_key__GT_js$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return x.cljs$core$IEncodeJS$_key__GT_js$arity$1(x);
  } else {
  var x__4452__auto__ = (((x == null))?null:x);
  return (function (){var or__3808__auto__ = (cljs.core._key__GT_js[(function (){var G__13234 = x__4452__auto__;
  return goog.typeOf(G__13234);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._key__GT_js["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IEncodeJS.-key->js",x);
  }
  }
  })().call(null,x);
  }
  });
  
  cljs.core.key__GT_js = (function key__GT_js(k){
  if((function (){var G__13237 = k;
  if(G__13237){
  var bit__4489__auto__ = null;
  if(cljs.core.truth_((function (){var or__3808__auto__ = bit__4489__auto__;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return G__13237.cljs$core$IEncodeJS$;
  }
  })())){
  return true;
  } else {
  if((!G__13237.cljs$lang$protocol_mask$partition$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,G__13237);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,G__13237);
  }
  })()){
  return cljs.core._clj__GT_js(k);
  } else {
  if((typeof k === 'string') || (typeof k === 'number') || ((k instanceof cljs.core.Keyword)) || ((k instanceof cljs.core.Symbol))){
  var G__13238 = k;
  return (cljs.core.clj__GT_js.cljs$core$IFn$_invoke$arity$1 ? cljs.core.clj__GT_js.cljs$core$IFn$_invoke$arity$1(G__13238) : cljs.core.clj__GT_js.call(null,G__13238));
  } else {
  return cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.array_seq([k], 0));
  }
  }
  });
  /**
  * Recursively transforms ClojureScript values to JavaScript.
  * sets/vectors/lists become Arrays, Keywords and Symbol become Strings,
  * Maps become Objects. Arbitrary keys are encoded to by key->js.
  */
  cljs.core.clj__GT_js = (function clj__GT_js(x){
  if((x == null)){
  return null;
  } else {
  if((function (){var G__13254 = x;
  if(G__13254){
  var bit__4489__auto__ = null;
  if(cljs.core.truth_((function (){var or__3808__auto__ = bit__4489__auto__;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return G__13254.cljs$core$IEncodeJS$;
  }
  })())){
  return true;
  } else {
  if((!G__13254.cljs$lang$protocol_mask$partition$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,G__13254);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeJS,G__13254);
  }
  })()){
  return cljs.core._clj__GT_js(x);
  } else {
  if((x instanceof cljs.core.Keyword)){
  return cljs.core.name(x);
  } else {
  if((x instanceof cljs.core.Symbol)){
  return [cljs.core.str(x)].join('');
  } else {
  if(cljs.core.map_QMARK_(x)){
  var m = (function (){var obj13256 = {};
  return obj13256;
  })();
  var seq__13257_13267 = cljs.core.seq(x);
  var chunk__13258_13268 = null;
  var count__13259_13269 = (0);
  var i__13260_13270 = (0);
  while(true){
  if((i__13260_13270 < count__13259_13269)){
  var vec__13261_13271 = chunk__13258_13268.cljs$core$IIndexed$_nth$arity$2(null,i__13260_13270);
  var k_13272 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13261_13271,(0),null);
  var v_13273 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13261_13271,(1),null);
  (m[cljs.core.key__GT_js(k_13272)] = clj__GT_js(v_13273));
  
  var G__13274 = seq__13257_13267;
  var G__13275 = chunk__13258_13268;
  var G__13276 = count__13259_13269;
  var G__13277 = (i__13260_13270 + (1));
  seq__13257_13267 = G__13274;
  chunk__13258_13268 = G__13275;
  count__13259_13269 = G__13276;
  i__13260_13270 = G__13277;
  continue;
  } else {
  var temp__4126__auto___13278 = cljs.core.seq(seq__13257_13267);
  if(temp__4126__auto___13278){
  var seq__13257_13279__$1 = temp__4126__auto___13278;
  if(cljs.core.chunked_seq_QMARK_(seq__13257_13279__$1)){
  var c__4595__auto___13280 = cljs.core.chunk_first(seq__13257_13279__$1);
  var G__13281 = cljs.core.chunk_rest(seq__13257_13279__$1);
  var G__13282 = c__4595__auto___13280;
  var G__13283 = cljs.core.count(c__4595__auto___13280);
  var G__13284 = (0);
  seq__13257_13267 = G__13281;
  chunk__13258_13268 = G__13282;
  count__13259_13269 = G__13283;
  i__13260_13270 = G__13284;
  continue;
  } else {
  var vec__13262_13285 = cljs.core.first(seq__13257_13279__$1);
  var k_13286 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13262_13285,(0),null);
  var v_13287 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13262_13285,(1),null);
  (m[cljs.core.key__GT_js(k_13286)] = clj__GT_js(v_13287));
  
  var G__13288 = cljs.core.next(seq__13257_13279__$1);
  var G__13289 = null;
  var G__13290 = (0);
  var G__13291 = (0);
  seq__13257_13267 = G__13288;
  chunk__13258_13268 = G__13289;
  count__13259_13269 = G__13290;
  i__13260_13270 = G__13291;
  continue;
  }
  } else {
  }
  }
  break;
  }
  
  return m;
  } else {
  if(cljs.core.coll_QMARK_(x)){
  var arr = [];
  var seq__13263_13292 = cljs.core.seq(cljs.core.map.cljs$core$IFn$_invoke$arity$2(clj__GT_js,x));
  var chunk__13264_13293 = null;
  var count__13265_13294 = (0);
  var i__13266_13295 = (0);
  while(true){
  if((i__13266_13295 < count__13265_13294)){
  var x_13296__$1 = chunk__13264_13293.cljs$core$IIndexed$_nth$arity$2(null,i__13266_13295);
  arr.push(x_13296__$1);
  
  var G__13297 = seq__13263_13292;
  var G__13298 = chunk__13264_13293;
  var G__13299 = count__13265_13294;
  var G__13300 = (i__13266_13295 + (1));
  seq__13263_13292 = G__13297;
  chunk__13264_13293 = G__13298;
  count__13265_13294 = G__13299;
  i__13266_13295 = G__13300;
  continue;
  } else {
  var temp__4126__auto___13301 = cljs.core.seq(seq__13263_13292);
  if(temp__4126__auto___13301){
  var seq__13263_13302__$1 = temp__4126__auto___13301;
  if(cljs.core.chunked_seq_QMARK_(seq__13263_13302__$1)){
  var c__4595__auto___13303 = cljs.core.chunk_first(seq__13263_13302__$1);
  var G__13304 = cljs.core.chunk_rest(seq__13263_13302__$1);
  var G__13305 = c__4595__auto___13303;
  var G__13306 = cljs.core.count(c__4595__auto___13303);
  var G__13307 = (0);
  seq__13263_13292 = G__13304;
  chunk__13264_13293 = G__13305;
  count__13265_13294 = G__13306;
  i__13266_13295 = G__13307;
  continue;
  } else {
  var x_13308__$1 = cljs.core.first(seq__13263_13302__$1);
  arr.push(x_13308__$1);
  
  var G__13309 = cljs.core.next(seq__13263_13302__$1);
  var G__13310 = null;
  var G__13311 = (0);
  var G__13312 = (0);
  seq__13263_13292 = G__13309;
  chunk__13264_13293 = G__13310;
  count__13265_13294 = G__13311;
  i__13266_13295 = G__13312;
  continue;
  }
  } else {
  }
  }
  break;
  }
  
  return arr;
  } else {
  return x;
  
  }
  }
  }
  }
  }
  }
  });
  
  cljs.core.IEncodeClojure = (function (){var obj13314 = {};
  return obj13314;
  })();
  
  cljs.core._js__GT_clj = (function _js__GT_clj(x,options){
  if((function (){var and__3796__auto__ = x;
  if(and__3796__auto__){
  return x.cljs$core$IEncodeClojure$_js__GT_clj$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return x.cljs$core$IEncodeClojure$_js__GT_clj$arity$2(x,options);
  } else {
  var x__4452__auto__ = (((x == null))?null:x);
  return (function (){var or__3808__auto__ = (cljs.core._js__GT_clj[(function (){var G__13318 = x__4452__auto__;
  return goog.typeOf(G__13318);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._js__GT_clj["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IEncodeClojure.-js->clj",x);
  }
  }
  })().call(null,x,options);
  }
  });
  
  /**
  * Recursively transforms JavaScript arrays into ClojureScript
  * vectors, and JavaScript objects into ClojureScript maps.  With
  * option ':keywordize-keys true' will convert object fields from
  * strings to keywords.
  * @param {...*} var_args
  */
  cljs.core.js__GT_clj = (function() {
  var js__GT_clj = null;
  var js__GT_clj__1 = (function (x){
  return js__GT_clj.cljs$core$IFn$_invoke$arity$variadic(x,cljs.core.array_seq([new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252),false], null)], 0));
  });
  var js__GT_clj__2 = (function() { 
  var G__13375__delegate = function (x,opts){
  var map__13348 = opts;
  var map__13348__$1 = ((cljs.core.seq_QMARK_(map__13348))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__13348):map__13348);
  var keywordize_keys = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__13348__$1,new cljs.core.Keyword(null,"keywordize-keys","keywordize-keys",1310784252));
  var keyfn = (cljs.core.truth_(keywordize_keys)?cljs.core.keyword:cljs.core.str);
  var f = ((function (map__13348,map__13348__$1,keywordize_keys,keyfn){
  return (function thisfn(x__$1){
  if((function (){var G__13364 = x__$1;
  if(G__13364){
  var bit__4489__auto__ = null;
  if(cljs.core.truth_((function (){var or__3808__auto__ = bit__4489__auto__;
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return G__13364.cljs$core$IEncodeClojure$;
  }
  })())){
  return true;
  } else {
  if((!G__13364.cljs$lang$protocol_mask$partition$)){
  return cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeClojure,G__13364);
  } else {
  return false;
  }
  }
  } else {
  return cljs.core.native_satisfies_QMARK_(cljs.core.IEncodeClojure,G__13364);
  }
  })()){
  return cljs.core._js__GT_clj(x__$1,cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.array_map,opts));
  } else {
  if(cljs.core.seq_QMARK_(x__$1)){
  return cljs.core.doall.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(thisfn,x__$1));
  } else {
  if(cljs.core.coll_QMARK_(x__$1)){
  return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.empty(x__$1),cljs.core.map.cljs$core$IFn$_invoke$arity$2(thisfn,x__$1));
  } else {
  if(x__$1 instanceof Array){
  return cljs.core.vec(cljs.core.map.cljs$core$IFn$_invoke$arity$2(thisfn,x__$1));
  } else {
  if((cljs.core.type(x__$1) === Object)){
  return cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,(function (){var iter__4564__auto__ = ((function (map__13348,map__13348__$1,keywordize_keys,keyfn){
  return (function iter__13365(s__13366){
  return (new cljs.core.LazySeq(null,((function (map__13348,map__13348__$1,keywordize_keys,keyfn){
  return (function (){
  var s__13366__$1 = s__13366;
  while(true){
  var temp__4126__auto__ = cljs.core.seq(s__13366__$1);
  if(temp__4126__auto__){
  var s__13366__$2 = temp__4126__auto__;
  if(cljs.core.chunked_seq_QMARK_(s__13366__$2)){
  var c__4562__auto__ = cljs.core.chunk_first(s__13366__$2);
  var size__4563__auto__ = cljs.core.count(c__4562__auto__);
  var b__13368 = cljs.core.chunk_buffer(size__4563__auto__);
  if((function (){var i__13367 = (0);
  while(true){
  if((i__13367 < size__4563__auto__)){
  var k = cljs.core._nth.cljs$core$IFn$_invoke$arity$2(c__4562__auto__,i__13367);
  cljs.core.chunk_append(b__13368,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(function (){var G__13373 = k;
  return (keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(G__13373) : keyfn.call(null,G__13373));
  })(),thisfn((x__$1[k]))], null));
  
  var G__13376 = (i__13367 + (1));
  i__13367 = G__13376;
  continue;
  } else {
  return true;
  }
  break;
  }
  })()){
  return cljs.core.chunk_cons(cljs.core.chunk(b__13368),iter__13365(cljs.core.chunk_rest(s__13366__$2)));
  } else {
  return cljs.core.chunk_cons(cljs.core.chunk(b__13368),null);
  }
  } else {
  var k = cljs.core.first(s__13366__$2);
  return cljs.core.cons(new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(function (){var G__13374 = k;
  return (keyfn.cljs$core$IFn$_invoke$arity$1 ? keyfn.cljs$core$IFn$_invoke$arity$1(G__13374) : keyfn.call(null,G__13374));
  })(),thisfn((x__$1[k]))], null),iter__13365(cljs.core.rest(s__13366__$2)));
  }
  } else {
  return null;
  }
  break;
  }
  });})(map__13348,map__13348__$1,keywordize_keys,keyfn))
  ,null,null));
  });})(map__13348,map__13348__$1,keywordize_keys,keyfn))
  ;
  return iter__4564__auto__(cljs.core.js_keys(x__$1));
  })());
  } else {
  return x__$1;
  
  }
  }
  }
  }
  }
  });})(map__13348,map__13348__$1,keywordize_keys,keyfn))
  ;
  return f(x);
  };
  var G__13375 = function (x,var_args){
  var opts = null;
  if (arguments.length > 1) {
  var G__13377__i = 0, G__13377__a = new Array(arguments.length -  1);
  while (G__13377__i < G__13377__a.length) {G__13377__a[G__13377__i] = arguments[G__13377__i + 1]; ++G__13377__i;}
    opts = new cljs.core.IndexedSeq(G__13377__a,0);
  } 
  return G__13375__delegate.call(this,x,opts);};
  G__13375.cljs$lang$maxFixedArity = 1;
  G__13375.cljs$lang$applyTo = (function (arglist__13378){
  var x = cljs.core.first(arglist__13378);
  var opts = cljs.core.rest(arglist__13378);
  return G__13375__delegate(x,opts);
  });
  G__13375.cljs$core$IFn$_invoke$arity$variadic = G__13375__delegate;
  return G__13375;
  })()
  ;
  js__GT_clj = function(x,var_args){
  var opts = var_args;
  switch(arguments.length){
  case 1:
  return js__GT_clj__1.call(this,x);
  default:
  var G__13379 = null;
  if (arguments.length > 1) {
  var G__13380__i = 0, G__13380__a = new Array(arguments.length -  1);
  while (G__13380__i < G__13380__a.length) {G__13380__a[G__13380__i] = arguments[G__13380__i + 1]; ++G__13380__i;}
  G__13379 = new cljs.core.IndexedSeq(G__13380__a,0);
  }
  return js__GT_clj__2.cljs$core$IFn$_invoke$arity$variadic(x, G__13379);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  js__GT_clj.cljs$lang$maxFixedArity = 1;
  js__GT_clj.cljs$lang$applyTo = js__GT_clj__2.cljs$lang$applyTo;
  js__GT_clj.cljs$core$IFn$_invoke$arity$1 = js__GT_clj__1;
  js__GT_clj.cljs$core$IFn$_invoke$arity$variadic = js__GT_clj__2.cljs$core$IFn$_invoke$arity$variadic;
  return js__GT_clj;
  })()
  ;
  /**
  * Returns a memoized version of a referentially transparent function. The
  * memoized version of the function keeps a cache of the mapping from arguments
  * to results and, when calls with the same arguments are repeated often, has
  * higher performance at the expense of higher memory use.
  */
  cljs.core.memoize = (function memoize(f){
  var mem = (function (){var G__13383 = cljs.core.PersistentArrayMap.EMPTY;
  return (cljs.core.atom.cljs$core$IFn$_invoke$arity$1 ? cljs.core.atom.cljs$core$IFn$_invoke$arity$1(G__13383) : cljs.core.atom.call(null,G__13383));
  })();
  return ((function (mem){
  return (function() { 
  var G__13385__delegate = function (args){
  var v = cljs.core.get.cljs$core$IFn$_invoke$arity$3((function (){var G__13384 = mem;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13384) : cljs.core.deref.call(null,G__13384));
  })(),args,cljs.core.lookup_sentinel);
  if((v === cljs.core.lookup_sentinel)){
  var ret = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,args);
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(mem,cljs.core.assoc,args,ret);
  
  return ret;
  } else {
  return v;
  }
  };
  var G__13385 = function (var_args){
  var args = null;
  if (arguments.length > 0) {
  var G__13386__i = 0, G__13386__a = new Array(arguments.length -  0);
  while (G__13386__i < G__13386__a.length) {G__13386__a[G__13386__i] = arguments[G__13386__i + 0]; ++G__13386__i;}
    args = new cljs.core.IndexedSeq(G__13386__a,0);
  } 
  return G__13385__delegate.call(this,args);};
  G__13385.cljs$lang$maxFixedArity = 0;
  G__13385.cljs$lang$applyTo = (function (arglist__13387){
  var args = cljs.core.seq(arglist__13387);
  return G__13385__delegate(args);
  });
  G__13385.cljs$core$IFn$_invoke$arity$variadic = G__13385__delegate;
  return G__13385;
  })()
  ;
  ;})(mem))
  });
  /**
  * trampoline can be used to convert algorithms requiring mutual
  * recursion without stack consumption. Calls f with supplied args, if
  * any. If f returns a fn, calls that fn with no arguments, and
  * continues to repeat, until the return value is not a fn, then
  * returns that non-fn value. Note that if you want to return a fn as a
  * final value, you must wrap it in some data structure and unpack it
  * after trampoline returns.
  * @param {...*} var_args
  */
  cljs.core.trampoline = (function() {
  var trampoline = null;
  var trampoline__1 = (function (f){
  while(true){
  var ret = (function (){return (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  })();
  if(cljs.core.fn_QMARK_(ret)){
  var G__13389 = ret;
  f = G__13389;
  continue;
  } else {
  return ret;
  }
  break;
  }
  });
  var trampoline__2 = (function() { 
  var G__13390__delegate = function (f,args){
  return trampoline.cljs$core$IFn$_invoke$arity$1((function (){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$2(f,args);
  }));
  };
  var G__13390 = function (f,var_args){
  var args = null;
  if (arguments.length > 1) {
  var G__13391__i = 0, G__13391__a = new Array(arguments.length -  1);
  while (G__13391__i < G__13391__a.length) {G__13391__a[G__13391__i] = arguments[G__13391__i + 1]; ++G__13391__i;}
    args = new cljs.core.IndexedSeq(G__13391__a,0);
  } 
  return G__13390__delegate.call(this,f,args);};
  G__13390.cljs$lang$maxFixedArity = 1;
  G__13390.cljs$lang$applyTo = (function (arglist__13392){
  var f = cljs.core.first(arglist__13392);
  var args = cljs.core.rest(arglist__13392);
  return G__13390__delegate(f,args);
  });
  G__13390.cljs$core$IFn$_invoke$arity$variadic = G__13390__delegate;
  return G__13390;
  })()
  ;
  trampoline = function(f,var_args){
  var args = var_args;
  switch(arguments.length){
  case 1:
  return trampoline__1.call(this,f);
  default:
  var G__13393 = null;
  if (arguments.length > 1) {
  var G__13394__i = 0, G__13394__a = new Array(arguments.length -  1);
  while (G__13394__i < G__13394__a.length) {G__13394__a[G__13394__i] = arguments[G__13394__i + 1]; ++G__13394__i;}
  G__13393 = new cljs.core.IndexedSeq(G__13394__a,0);
  }
  return trampoline__2.cljs$core$IFn$_invoke$arity$variadic(f, G__13393);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  trampoline.cljs$lang$maxFixedArity = 1;
  trampoline.cljs$lang$applyTo = trampoline__2.cljs$lang$applyTo;
  trampoline.cljs$core$IFn$_invoke$arity$1 = trampoline__1;
  trampoline.cljs$core$IFn$_invoke$arity$variadic = trampoline__2.cljs$core$IFn$_invoke$arity$variadic;
  return trampoline;
  })()
  ;
  /**
  * Returns a random floating point number between 0 (inclusive) and
  * n (default 1) (exclusive).
  */
  cljs.core.rand = (function() {
  var rand = null;
  var rand__0 = (function (){
  return rand.cljs$core$IFn$_invoke$arity$1((1));
  });
  var rand__1 = (function (n){
  return ((function (){return (Math.random.cljs$core$IFn$_invoke$arity$0 ? Math.random.cljs$core$IFn$_invoke$arity$0() : Math.random.call(null));
  })() * n);
  });
  rand = function(n){
  switch(arguments.length){
  case 0:
  return rand__0.call(this);
  case 1:
  return rand__1.call(this,n);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  rand.cljs$core$IFn$_invoke$arity$0 = rand__0;
  rand.cljs$core$IFn$_invoke$arity$1 = rand__1;
  return rand;
  })()
  ;
  /**
  * Returns a random integer between 0 (inclusive) and n (exclusive).
  */
  cljs.core.rand_int = (function rand_int(n){
  var G__13397 = ((function (){return (Math.random.cljs$core$IFn$_invoke$arity$0 ? Math.random.cljs$core$IFn$_invoke$arity$0() : Math.random.call(null));
  })() * n);
  return (Math.floor.cljs$core$IFn$_invoke$arity$1 ? Math.floor.cljs$core$IFn$_invoke$arity$1(G__13397) : Math.floor.call(null,G__13397));
  });
  /**
  * Return a random element of the (sequential) collection. Will have
  * the same performance characteristics as nth for the given
  * collection.
  */
  cljs.core.rand_nth = (function rand_nth(coll){
  return cljs.core.nth.cljs$core$IFn$_invoke$arity$2(coll,cljs.core.rand_int(cljs.core.count(coll)));
  });
  /**
  * Returns a map of the elements of coll keyed by the result of
  * f on each element. The value at each key will be a vector of the
  * corresponding elements, in the order they appeared in coll.
  */
  cljs.core.group_by = (function group_by(f,coll){
  return cljs.core.persistent_BANG_(cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (ret,x){
  var k = (function (){var G__13399 = x;
  return (f.cljs$core$IFn$_invoke$arity$1 ? f.cljs$core$IFn$_invoke$arity$1(G__13399) : f.call(null,G__13399));
  })();
  return cljs.core.assoc_BANG_.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.PersistentVector.EMPTY),x));
  }),cljs.core.transient$(cljs.core.PersistentArrayMap.EMPTY),coll));
  });
  /**
  * Creates a hierarchy object for use with derive, isa? etc.
  */
  cljs.core.make_hierarchy = (function make_hierarchy(){
  return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"parents","parents",-2027538891),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"descendants","descendants",1824886031),cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"ancestors","ancestors",-776045424),cljs.core.PersistentArrayMap.EMPTY], null);
  });
  cljs.core._global_hierarchy = null;
  cljs.core.get_global_hierarchy = (function get_global_hierarchy(){
  if((cljs.core._global_hierarchy == null)){
  cljs.core._global_hierarchy = (function (){var G__13401 = cljs.core.make_hierarchy();
  return (cljs.core.atom.cljs$core$IFn$_invoke$arity$1 ? cljs.core.atom.cljs$core$IFn$_invoke$arity$1(G__13401) : cljs.core.atom.call(null,G__13401));
  })();
  } else {
  }
  
  return cljs.core._global_hierarchy;
  });
  /**
  * @param {...*} var_args
  */
  cljs.core.swap_global_hierarchy_BANG_ = (function() { 
  var swap_global_hierarchy_BANG___delegate = function (f,args){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$4(cljs.core.swap_BANG_,cljs.core.get_global_hierarchy(),f,args);
  };
  var swap_global_hierarchy_BANG_ = function (f,var_args){
  var args = null;
  if (arguments.length > 1) {
  var G__13402__i = 0, G__13402__a = new Array(arguments.length -  1);
  while (G__13402__i < G__13402__a.length) {G__13402__a[G__13402__i] = arguments[G__13402__i + 1]; ++G__13402__i;}
    args = new cljs.core.IndexedSeq(G__13402__a,0);
  } 
  return swap_global_hierarchy_BANG___delegate.call(this,f,args);};
  swap_global_hierarchy_BANG_.cljs$lang$maxFixedArity = 1;
  swap_global_hierarchy_BANG_.cljs$lang$applyTo = (function (arglist__13403){
  var f = cljs.core.first(arglist__13403);
  var args = cljs.core.rest(arglist__13403);
  return swap_global_hierarchy_BANG___delegate(f,args);
  });
  swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic = swap_global_hierarchy_BANG___delegate;
  return swap_global_hierarchy_BANG_;
  })()
  ;
  /**
  * Returns true if (= child parent), or child is directly or indirectly derived from
  * parent, either via a JavaScript type inheritance relationship or a
  * relationship established via derive. h must be a hierarchy obtained
  * from make-hierarchy, if not supplied defaults to the global
  * hierarchy
  */
  cljs.core.isa_QMARK_ = (function() {
  var isa_QMARK_ = null;
  var isa_QMARK___2 = (function (child,parent){
  return isa_QMARK_.cljs$core$IFn$_invoke$arity$3((function (){var G__13468 = cljs.core.get_global_hierarchy();
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13468) : cljs.core.deref.call(null,G__13468));
  })(),child,parent);
  });
  var isa_QMARK___3 = (function (h,child,parent){
  var or__3808__auto__ = cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(child,parent);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = cljs.core.contains_QMARK_(new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h).call(null,child),parent);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  var and__3796__auto__ = cljs.core.vector_QMARK_(parent);
  if(and__3796__auto__){
  var and__3796__auto____$1 = cljs.core.vector_QMARK_(child);
  if(and__3796__auto____$1){
  var and__3796__auto____$2 = (cljs.core.count(parent) === cljs.core.count(child));
  if(and__3796__auto____$2){
  var ret = true;
  var i = (0);
  while(true){
  if((!(ret)) || ((i === cljs.core.count(parent)))){
  return ret;
  } else {
  var G__13493 = isa_QMARK_.cljs$core$IFn$_invoke$arity$3(h,(function (){var G__13491 = i;
  return (child.cljs$core$IFn$_invoke$arity$1 ? child.cljs$core$IFn$_invoke$arity$1(G__13491) : child.call(null,G__13491));
  })(),(function (){var G__13492 = i;
  return (parent.cljs$core$IFn$_invoke$arity$1 ? parent.cljs$core$IFn$_invoke$arity$1(G__13492) : parent.call(null,G__13492));
  })());
  var G__13494 = (i + (1));
  ret = G__13493;
  i = G__13494;
  continue;
  }
  break;
  }
  } else {
  return and__3796__auto____$2;
  }
  } else {
  return and__3796__auto____$1;
  }
  } else {
  return and__3796__auto__;
  }
  }
  }
  });
  isa_QMARK_ = function(h,child,parent){
  switch(arguments.length){
  case 2:
  return isa_QMARK___2.call(this,h,child);
  case 3:
  return isa_QMARK___3.call(this,h,child,parent);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  isa_QMARK_.cljs$core$IFn$_invoke$arity$2 = isa_QMARK___2;
  isa_QMARK_.cljs$core$IFn$_invoke$arity$3 = isa_QMARK___3;
  return isa_QMARK_;
  })()
  ;
  /**
  * Returns the immediate parents of tag, either via a JavaScript type
  * inheritance relationship or a relationship established via derive. h
  * must be a hierarchy obtained from make-hierarchy, if not supplied
  * defaults to the global hierarchy
  */
  cljs.core.parents = (function() {
  var parents = null;
  var parents__1 = (function (tag){
  return parents.cljs$core$IFn$_invoke$arity$2((function (){var G__13498 = cljs.core.get_global_hierarchy();
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13498) : cljs.core.deref.call(null,G__13498));
  })(),tag);
  });
  var parents__2 = (function (h,tag){
  return cljs.core.not_empty(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h),tag));
  });
  parents = function(h,tag){
  switch(arguments.length){
  case 1:
  return parents__1.call(this,h);
  case 2:
  return parents__2.call(this,h,tag);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  parents.cljs$core$IFn$_invoke$arity$1 = parents__1;
  parents.cljs$core$IFn$_invoke$arity$2 = parents__2;
  return parents;
  })()
  ;
  /**
  * Returns the immediate and indirect parents of tag, either via a JavaScript type
  * inheritance relationship or a relationship established via derive. h
  * must be a hierarchy obtained from make-hierarchy, if not supplied
  * defaults to the global hierarchy
  */
  cljs.core.ancestors = (function() {
  var ancestors = null;
  var ancestors__1 = (function (tag){
  return ancestors.cljs$core$IFn$_invoke$arity$2((function (){var G__13502 = cljs.core.get_global_hierarchy();
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13502) : cljs.core.deref.call(null,G__13502));
  })(),tag);
  });
  var ancestors__2 = (function (h,tag){
  return cljs.core.not_empty(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h),tag));
  });
  ancestors = function(h,tag){
  switch(arguments.length){
  case 1:
  return ancestors__1.call(this,h);
  case 2:
  return ancestors__2.call(this,h,tag);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  ancestors.cljs$core$IFn$_invoke$arity$1 = ancestors__1;
  ancestors.cljs$core$IFn$_invoke$arity$2 = ancestors__2;
  return ancestors;
  })()
  ;
  /**
  * Returns the immediate and indirect children of tag, through a
  * relationship established via derive. h must be a hierarchy obtained
  * from make-hierarchy, if not supplied defaults to the global
  * hierarchy. Note: does not work on JavaScript type inheritance
  * relationships.
  */
  cljs.core.descendants = (function() {
  var descendants = null;
  var descendants__1 = (function (tag){
  return descendants.cljs$core$IFn$_invoke$arity$2((function (){var G__13506 = cljs.core.get_global_hierarchy();
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13506) : cljs.core.deref.call(null,G__13506));
  })(),tag);
  });
  var descendants__2 = (function (h,tag){
  return cljs.core.not_empty(cljs.core.get.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,"descendants","descendants",1824886031).cljs$core$IFn$_invoke$arity$1(h),tag));
  });
  descendants = function(h,tag){
  switch(arguments.length){
  case 1:
  return descendants__1.call(this,h);
  case 2:
  return descendants__2.call(this,h,tag);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  descendants.cljs$core$IFn$_invoke$arity$1 = descendants__1;
  descendants.cljs$core$IFn$_invoke$arity$2 = descendants__2;
  return descendants;
  })()
  ;
  /**
  * Establishes a parent/child relationship between parent and
  * tag. Parent must be a namespace-qualified symbol or keyword and
  * child can be either a namespace-qualified symbol or keyword or a
  * class. h must be a hierarchy obtained from make-hierarchy, if not
  * supplied defaults to, and modifies, the global hierarchy.
  */
  cljs.core.derive = (function() {
  var derive = null;
  var derive__2 = (function (tag,parent){
  if(cljs.core.truth_(cljs.core.namespace(parent))){
  } else {
  throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str(cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.array_seq([cljs.core.list(new cljs.core.Symbol(null,"namespace","namespace",1263021155,null),new cljs.core.Symbol(null,"parent","parent",761652748,null))], 0)))].join('')));
  }
  
  cljs.core.swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic(derive,cljs.core.array_seq([tag,parent], 0));
  
  return null;
  });
  var derive__3 = (function (h,tag,parent){
  if(cljs.core.not_EQ_.cljs$core$IFn$_invoke$arity$2(tag,parent)){
  } else {
  throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str(cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.array_seq([cljs.core.list(new cljs.core.Symbol(null,"not=","not=",1466536204,null),new cljs.core.Symbol(null,"tag","tag",350170304,null),new cljs.core.Symbol(null,"parent","parent",761652748,null))], 0)))].join('')));
  }
  
  var tp = new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h);
  var td = new cljs.core.Keyword(null,"descendants","descendants",1824886031).cljs$core$IFn$_invoke$arity$1(h);
  var ta = new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h);
  var tf = ((function (tp,td,ta){
  return (function (m,source,sources,target,targets){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (tp,td,ta){
  return (function (ret,k){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(ret,k,cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(cljs.core.conj,cljs.core.get.cljs$core$IFn$_invoke$arity$3(targets,k,cljs.core.PersistentHashSet.EMPTY),cljs.core.cons(target,(function (){var G__13515 = target;
  return (targets.cljs$core$IFn$_invoke$arity$1 ? targets.cljs$core$IFn$_invoke$arity$1(G__13515) : targets.call(null,G__13515));
  })())));
  });})(tp,td,ta))
  ,m,cljs.core.cons(source,(function (){var G__13516 = source;
  return (sources.cljs$core$IFn$_invoke$arity$1 ? sources.cljs$core$IFn$_invoke$arity$1(G__13516) : sources.call(null,G__13516));
  })()));
  });})(tp,td,ta))
  ;
  var or__3808__auto__ = ((cljs.core.contains_QMARK_((function (){var G__13520 = tag;
  return (tp.cljs$core$IFn$_invoke$arity$1 ? tp.cljs$core$IFn$_invoke$arity$1(G__13520) : tp.call(null,G__13520));
  })(),parent))?null:(function (){
  if(cljs.core.contains_QMARK_((function (){var G__13521 = tag;
  return (ta.cljs$core$IFn$_invoke$arity$1 ? ta.cljs$core$IFn$_invoke$arity$1(G__13521) : ta.call(null,G__13521));
  })(),parent)){
  throw (new Error([cljs.core.str(tag),cljs.core.str("already has"),cljs.core.str(parent),cljs.core.str("as ancestor")].join('')));
  } else {
  }
  
  if(cljs.core.contains_QMARK_((function (){var G__13522 = parent;
  return (ta.cljs$core$IFn$_invoke$arity$1 ? ta.cljs$core$IFn$_invoke$arity$1(G__13522) : ta.call(null,G__13522));
  })(),tag)){
  throw (new Error([cljs.core.str("Cyclic derivation:"),cljs.core.str(parent),cljs.core.str("has"),cljs.core.str(tag),cljs.core.str("as ancestor")].join('')));
  } else {
  }
  
  return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"parents","parents",-2027538891),cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h),tag,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(tp,tag,cljs.core.PersistentHashSet.EMPTY),parent)),new cljs.core.Keyword(null,"ancestors","ancestors",-776045424),tf(new cljs.core.Keyword(null,"ancestors","ancestors",-776045424).cljs$core$IFn$_invoke$arity$1(h),tag,td,parent,ta),new cljs.core.Keyword(null,"descendants","descendants",1824886031),tf(new cljs.core.Keyword(null,"descendants","descendants",1824886031).cljs$core$IFn$_invoke$arity$1(h),parent,ta,tag,td)], null);
  })()
  );
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return h;
  }
  });
  derive = function(h,tag,parent){
  switch(arguments.length){
  case 2:
  return derive__2.call(this,h,tag);
  case 3:
  return derive__3.call(this,h,tag,parent);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  derive.cljs$core$IFn$_invoke$arity$2 = derive__2;
  derive.cljs$core$IFn$_invoke$arity$3 = derive__3;
  return derive;
  })()
  ;
  /**
  * Removes a parent/child relationship between parent and
  * tag. h must be a hierarchy obtained from make-hierarchy, if not
  * supplied defaults to, and modifies, the global hierarchy.
  */
  cljs.core.underive = (function() {
  var underive = null;
  var underive__2 = (function (tag,parent){
  cljs.core.swap_global_hierarchy_BANG_.cljs$core$IFn$_invoke$arity$variadic(underive,cljs.core.array_seq([tag,parent], 0));
  
  return null;
  });
  var underive__3 = (function (h,tag,parent){
  var parentMap = new cljs.core.Keyword(null,"parents","parents",-2027538891).cljs$core$IFn$_invoke$arity$1(h);
  var childsParents = (cljs.core.truth_((function (){var G__13529 = tag;
  return (parentMap.cljs$core$IFn$_invoke$arity$1 ? parentMap.cljs$core$IFn$_invoke$arity$1(G__13529) : parentMap.call(null,G__13529));
  })())?cljs.core.disj.cljs$core$IFn$_invoke$arity$2((function (){var G__13530 = tag;
  return (parentMap.cljs$core$IFn$_invoke$arity$1 ? parentMap.cljs$core$IFn$_invoke$arity$1(G__13530) : parentMap.call(null,G__13530));
  })(),parent):cljs.core.PersistentHashSet.EMPTY);
  var newParents = (cljs.core.truth_(cljs.core.not_empty(childsParents))?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(parentMap,tag,childsParents):cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(parentMap,tag));
  var deriv_seq = cljs.core.flatten(cljs.core.map.cljs$core$IFn$_invoke$arity$2(((function (parentMap,childsParents,newParents){
  return (function (p1__13523_SHARP_){
  return cljs.core.cons(cljs.core.first(p1__13523_SHARP_),cljs.core.interpose.cljs$core$IFn$_invoke$arity$2(cljs.core.first(p1__13523_SHARP_),cljs.core.second(p1__13523_SHARP_)));
  });})(parentMap,childsParents,newParents))
  ,cljs.core.seq(newParents)));
  if(cljs.core.contains_QMARK_((function (){var G__13531 = tag;
  return (parentMap.cljs$core$IFn$_invoke$arity$1 ? parentMap.cljs$core$IFn$_invoke$arity$1(G__13531) : parentMap.call(null,G__13531));
  })(),parent)){
  return cljs.core.reduce.cljs$core$IFn$_invoke$arity$3(((function (parentMap,childsParents,newParents,deriv_seq){
  return (function (p1__13524_SHARP_,p2__13525_SHARP_){
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$3(cljs.core.derive,p1__13524_SHARP_,p2__13525_SHARP_);
  });})(parentMap,childsParents,newParents,deriv_seq))
  ,cljs.core.make_hierarchy(),cljs.core.partition.cljs$core$IFn$_invoke$arity$2((2),deriv_seq));
  } else {
  return h;
  }
  });
  underive = function(h,tag,parent){
  switch(arguments.length){
  case 2:
  return underive__2.call(this,h,tag);
  case 3:
  return underive__3.call(this,h,tag,parent);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  underive.cljs$core$IFn$_invoke$arity$2 = underive__2;
  underive.cljs$core$IFn$_invoke$arity$3 = underive__3;
  return underive;
  })()
  ;
  cljs.core.reset_cache = (function reset_cache(method_cache,method_table,cached_hierarchy,hierarchy){
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(method_cache,(function (_){
  var G__13534 = method_table;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13534) : cljs.core.deref.call(null,G__13534));
  }));
  
  return cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(cached_hierarchy,(function (_){
  var G__13535 = hierarchy;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13535) : cljs.core.deref.call(null,G__13535));
  }));
  });
  cljs.core.prefers_STAR_ = (function prefers_STAR_(x,y,prefer_table){
  var xprefs = (function (){var G__13551 = prefer_table;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13551) : cljs.core.deref.call(null,G__13551));
  })().call(null,x);
  var or__3808__auto__ = (cljs.core.truth_((function (){var and__3796__auto__ = xprefs;
  if(cljs.core.truth_(and__3796__auto__)){
  var G__13553 = y;
  return (xprefs.cljs$core$IFn$_invoke$arity$1 ? xprefs.cljs$core$IFn$_invoke$arity$1(G__13553) : xprefs.call(null,G__13553));
  } else {
  return and__3796__auto__;
  }
  })())?true:null);
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (function (){var ps = cljs.core.parents.cljs$core$IFn$_invoke$arity$1(y);
  while(true){
  if((cljs.core.count(ps) > (0))){
  if(cljs.core.truth_(prefers_STAR_(x,cljs.core.first(ps),prefer_table))){
  } else {
  }
  
  var G__13554 = cljs.core.rest(ps);
  ps = G__13554;
  continue;
  } else {
  return null;
  }
  break;
  }
  })();
  if(cljs.core.truth_(or__3808__auto____$1)){
  return or__3808__auto____$1;
  } else {
  var or__3808__auto____$2 = (function (){var ps = cljs.core.parents.cljs$core$IFn$_invoke$arity$1(x);
  while(true){
  if((cljs.core.count(ps) > (0))){
  if(cljs.core.truth_(prefers_STAR_(cljs.core.first(ps),y,prefer_table))){
  } else {
  }
  
  var G__13555 = cljs.core.rest(ps);
  ps = G__13555;
  continue;
  } else {
  return null;
  }
  break;
  }
  })();
  if(cljs.core.truth_(or__3808__auto____$2)){
  return or__3808__auto____$2;
  } else {
  return false;
  }
  }
  }
  });
  cljs.core.dominates = (function dominates(x,y,prefer_table){
  var or__3808__auto__ = cljs.core.prefers_STAR_(x,y,prefer_table);
  if(cljs.core.truth_(or__3808__auto__)){
  return or__3808__auto__;
  } else {
  return cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$2(x,y);
  }
  });
  cljs.core.find_and_cache_best_method = (function find_and_cache_best_method(name,dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy){
  var best_entry = cljs.core.reduce.cljs$core$IFn$_invoke$arity$3((function (be,p__13569){
  var vec__13570 = p__13569;
  var k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13570,(0),null);
  var _ = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__13570,(1),null);
  var e = vec__13570;
  if(cljs.core.isa_QMARK_.cljs$core$IFn$_invoke$arity$3((function (){var G__13571 = hierarchy;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13571) : cljs.core.deref.call(null,G__13571));
  })(),dispatch_val,k)){
  var be2 = (cljs.core.truth_((function (){var or__3808__auto__ = (be == null);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  return cljs.core.dominates(k,cljs.core.first(be),prefer_table);
  }
  })())?e:be);
  if(cljs.core.truth_(cljs.core.dominates(cljs.core.first(be2),k,prefer_table))){
  } else {
  throw (new Error([cljs.core.str("Multiple methods in multimethod '"),cljs.core.str(name),cljs.core.str("' match dispatch value: "),cljs.core.str(dispatch_val),cljs.core.str(" -> "),cljs.core.str(k),cljs.core.str(" and "),cljs.core.str(cljs.core.first(be2)),cljs.core.str(", and neither is preferred")].join('')));
  }
  
  return be2;
  } else {
  return be;
  }
  }),null,(function (){var G__13572 = method_table;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13572) : cljs.core.deref.call(null,G__13572));
  })());
  if(cljs.core.truth_(best_entry)){
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((function (){var G__13573 = cached_hierarchy;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13573) : cljs.core.deref.call(null,G__13573));
  })(),(function (){var G__13574 = hierarchy;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13574) : cljs.core.deref.call(null,G__13574));
  })())){
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(method_cache,cljs.core.assoc,dispatch_val,cljs.core.second(best_entry));
  
  return cljs.core.second(best_entry);
  } else {
  cljs.core.reset_cache(method_cache,method_table,cached_hierarchy,hierarchy);
  
  return find_and_cache_best_method(name,dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy);
  }
  } else {
  return null;
  }
  });
  
  cljs.core.IMultiFn = (function (){var obj13576 = {};
  return obj13576;
  })();
  
  cljs.core._reset = (function _reset(mf){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_reset$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_reset$arity$1(mf);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._reset[(function (){var G__13580 = x__4452__auto__;
  return goog.typeOf(G__13580);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._reset["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-reset",mf);
  }
  }
  })().call(null,mf);
  }
  });
  
  cljs.core._add_method = (function _add_method(mf,dispatch_val,method){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_add_method$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_add_method$arity$3(mf,dispatch_val,method);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._add_method[(function (){var G__13584 = x__4452__auto__;
  return goog.typeOf(G__13584);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._add_method["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-add-method",mf);
  }
  }
  })().call(null,mf,dispatch_val,method);
  }
  });
  
  cljs.core._remove_method = (function _remove_method(mf,dispatch_val){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_remove_method$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_remove_method$arity$2(mf,dispatch_val);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._remove_method[(function (){var G__13588 = x__4452__auto__;
  return goog.typeOf(G__13588);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._remove_method["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-remove-method",mf);
  }
  }
  })().call(null,mf,dispatch_val);
  }
  });
  
  cljs.core._prefer_method = (function _prefer_method(mf,dispatch_val,dispatch_val_y){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_prefer_method$arity$3;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_prefer_method$arity$3(mf,dispatch_val,dispatch_val_y);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._prefer_method[(function (){var G__13592 = x__4452__auto__;
  return goog.typeOf(G__13592);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._prefer_method["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-prefer-method",mf);
  }
  }
  })().call(null,mf,dispatch_val,dispatch_val_y);
  }
  });
  
  cljs.core._get_method = (function _get_method(mf,dispatch_val){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_get_method$arity$2;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_get_method$arity$2(mf,dispatch_val);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._get_method[(function (){var G__13596 = x__4452__auto__;
  return goog.typeOf(G__13596);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._get_method["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-get-method",mf);
  }
  }
  })().call(null,mf,dispatch_val);
  }
  });
  
  cljs.core._methods = (function _methods(mf){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_methods$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_methods$arity$1(mf);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._methods[(function (){var G__13600 = x__4452__auto__;
  return goog.typeOf(G__13600);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._methods["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-methods",mf);
  }
  }
  })().call(null,mf);
  }
  });
  
  cljs.core._prefers = (function _prefers(mf){
  if((function (){var and__3796__auto__ = mf;
  if(and__3796__auto__){
  return mf.cljs$core$IMultiFn$_prefers$arity$1;
  } else {
  return and__3796__auto__;
  }
  })()){
  return mf.cljs$core$IMultiFn$_prefers$arity$1(mf);
  } else {
  var x__4452__auto__ = (((mf == null))?null:mf);
  return (function (){var or__3808__auto__ = (cljs.core._prefers[(function (){var G__13604 = x__4452__auto__;
  return goog.typeOf(G__13604);
  })()]);
  if(or__3808__auto__){
  return or__3808__auto__;
  } else {
  var or__3808__auto____$1 = (cljs.core._prefers["_"]);
  if(or__3808__auto____$1){
  return or__3808__auto____$1;
  } else {
  throw cljs.core.missing_protocol("IMultiFn.-prefers",mf);
  }
  }
  })().call(null,mf);
  }
  });
  
  cljs.core.throw_no_method_error = (function throw_no_method_error(name,dispatch_val){
  throw (new Error([cljs.core.str("No method in multimethod '"),cljs.core.str(name),cljs.core.str("' for dispatch value: "),cljs.core.str(dispatch_val)].join('')));
  });
  
  /**
  * @constructor
  */
  cljs.core.MultiFn = (function (name,dispatch_fn,default_dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy){
  this.name = name;
  this.dispatch_fn = dispatch_fn;
  this.default_dispatch_val = default_dispatch_val;
  this.hierarchy = hierarchy;
  this.method_table = method_table;
  this.prefer_table = prefer_table;
  this.method_cache = method_cache;
  this.cached_hierarchy = cached_hierarchy;
  this.cljs$lang$protocol_mask$partition0$ = 4194305;
  this.cljs$lang$protocol_mask$partition1$ = 4352;
  })
  cljs.core.MultiFn.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  var G__13606 = this$__$1;
  return goog.getUid(G__13606);
  });
  
  cljs.core.MultiFn.prototype.cljs$core$INamed$_name$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core._name(self__.name);
  });
  
  cljs.core.MultiFn.prototype.cljs$core$INamed$_namespace$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  return cljs.core._namespace(self__.name);
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_reset$arity$1 = (function (mf){
  var self__ = this;
  var mf__$1 = this;
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.method_table,((function (mf__$1){
  return (function (mf__$2){
  return cljs.core.PersistentArrayMap.EMPTY;
  });})(mf__$1))
  );
  
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.method_cache,((function (mf__$1){
  return (function (mf__$2){
  return cljs.core.PersistentArrayMap.EMPTY;
  });})(mf__$1))
  );
  
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.prefer_table,((function (mf__$1){
  return (function (mf__$2){
  return cljs.core.PersistentArrayMap.EMPTY;
  });})(mf__$1))
  );
  
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.cached_hierarchy,((function (mf__$1){
  return (function (mf__$2){
  return null;
  });})(mf__$1))
  );
  
  return mf__$1;
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_add_method$arity$3 = (function (mf,dispatch_val,method){
  var self__ = this;
  var mf__$1 = this;
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$4(self__.method_table,cljs.core.assoc,dispatch_val,method);
  
  cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
  
  return mf__$1;
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_remove_method$arity$2 = (function (mf,dispatch_val){
  var self__ = this;
  var mf__$1 = this;
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$3(self__.method_table,cljs.core.dissoc,dispatch_val);
  
  cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
  
  return mf__$1;
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_get_method$arity$2 = (function (mf,dispatch_val){
  var self__ = this;
  var mf__$1 = this;
  if(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2((function (){var G__13607 = self__.cached_hierarchy;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13607) : cljs.core.deref.call(null,G__13607));
  })(),(function (){var G__13608 = self__.hierarchy;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13608) : cljs.core.deref.call(null,G__13608));
  })())){
  } else {
  cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
  }
  
  var temp__4124__auto__ = (function (){var G__13609 = self__.method_cache;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13609) : cljs.core.deref.call(null,G__13609));
  })().call(null,dispatch_val);
  if(cljs.core.truth_(temp__4124__auto__)){
  var target_fn = temp__4124__auto__;
  return target_fn;
  } else {
  var temp__4124__auto____$1 = cljs.core.find_and_cache_best_method(self__.name,dispatch_val,self__.hierarchy,self__.method_table,self__.prefer_table,self__.method_cache,self__.cached_hierarchy);
  if(cljs.core.truth_(temp__4124__auto____$1)){
  var target_fn = temp__4124__auto____$1;
  return target_fn;
  } else {
  return (function (){var G__13610 = self__.method_table;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13610) : cljs.core.deref.call(null,G__13610));
  })().call(null,self__.default_dispatch_val);
  }
  }
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_prefer_method$arity$3 = (function (mf,dispatch_val_x,dispatch_val_y){
  var self__ = this;
  var mf__$1 = this;
  if(cljs.core.truth_(cljs.core.prefers_STAR_(dispatch_val_x,dispatch_val_y,self__.prefer_table))){
  throw (new Error([cljs.core.str("Preference conflict in multimethod '"),cljs.core.str(self__.name),cljs.core.str("': "),cljs.core.str(dispatch_val_y),cljs.core.str(" is already preferred to "),cljs.core.str(dispatch_val_x)].join('')));
  } else {
  }
  
  cljs.core.swap_BANG_.cljs$core$IFn$_invoke$arity$2(self__.prefer_table,((function (mf__$1){
  return (function (old){
  return cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(old,dispatch_val_x,cljs.core.conj.cljs$core$IFn$_invoke$arity$2(cljs.core.get.cljs$core$IFn$_invoke$arity$3(old,dispatch_val_x,cljs.core.PersistentHashSet.EMPTY),dispatch_val_y));
  });})(mf__$1))
  );
  
  return cljs.core.reset_cache(self__.method_cache,self__.method_table,self__.cached_hierarchy,self__.hierarchy);
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_methods$arity$1 = (function (mf){
  var self__ = this;
  var mf__$1 = this;
  var G__13611 = self__.method_table;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13611) : cljs.core.deref.call(null,G__13611));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IMultiFn$_prefers$arity$1 = (function (mf){
  var self__ = this;
  var mf__$1 = this;
  var G__13612 = self__.prefer_table;
  return (cljs.core.deref.cljs$core$IFn$_invoke$arity$1 ? cljs.core.deref.cljs$core$IFn$_invoke$arity$1(G__13612) : cljs.core.deref.call(null,G__13612));
  });
  
  cljs.core.MultiFn.prototype.call = (function() {
  var G__14453 = null;
  var G__14453__1 = (function (self__){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0() : self__.dispatch_fn.call(null));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  return (target_fn.cljs$core$IFn$_invoke$arity$0 ? target_fn.cljs$core$IFn$_invoke$arity$0() : target_fn.call(null));
  });
  var G__14453__2 = (function (self__,a){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13613 = a;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1(G__13613) : self__.dispatch_fn.call(null,G__13613));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13614 = a;
  return (target_fn.cljs$core$IFn$_invoke$arity$1 ? target_fn.cljs$core$IFn$_invoke$arity$1(G__13614) : target_fn.call(null,G__13614));
  });
  var G__14453__3 = (function (self__,a,b){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13615 = a;
  var G__13616 = b;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2(G__13615,G__13616) : self__.dispatch_fn.call(null,G__13615,G__13616));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13617 = a;
  var G__13618 = b;
  return (target_fn.cljs$core$IFn$_invoke$arity$2 ? target_fn.cljs$core$IFn$_invoke$arity$2(G__13617,G__13618) : target_fn.call(null,G__13617,G__13618));
  });
  var G__14453__4 = (function (self__,a,b,c){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13619 = a;
  var G__13620 = b;
  var G__13621 = c;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3(G__13619,G__13620,G__13621) : self__.dispatch_fn.call(null,G__13619,G__13620,G__13621));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13622 = a;
  var G__13623 = b;
  var G__13624 = c;
  return (target_fn.cljs$core$IFn$_invoke$arity$3 ? target_fn.cljs$core$IFn$_invoke$arity$3(G__13622,G__13623,G__13624) : target_fn.call(null,G__13622,G__13623,G__13624));
  });
  var G__14453__5 = (function (self__,a,b,c,d){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13625 = a;
  var G__13626 = b;
  var G__13627 = c;
  var G__13628 = d;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4(G__13625,G__13626,G__13627,G__13628) : self__.dispatch_fn.call(null,G__13625,G__13626,G__13627,G__13628));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13629 = a;
  var G__13630 = b;
  var G__13631 = c;
  var G__13632 = d;
  return (target_fn.cljs$core$IFn$_invoke$arity$4 ? target_fn.cljs$core$IFn$_invoke$arity$4(G__13629,G__13630,G__13631,G__13632) : target_fn.call(null,G__13629,G__13630,G__13631,G__13632));
  });
  var G__14453__6 = (function (self__,a,b,c,d,e){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13633 = a;
  var G__13634 = b;
  var G__13635 = c;
  var G__13636 = d;
  var G__13637 = e;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5(G__13633,G__13634,G__13635,G__13636,G__13637) : self__.dispatch_fn.call(null,G__13633,G__13634,G__13635,G__13636,G__13637));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13638 = a;
  var G__13639 = b;
  var G__13640 = c;
  var G__13641 = d;
  var G__13642 = e;
  return (target_fn.cljs$core$IFn$_invoke$arity$5 ? target_fn.cljs$core$IFn$_invoke$arity$5(G__13638,G__13639,G__13640,G__13641,G__13642) : target_fn.call(null,G__13638,G__13639,G__13640,G__13641,G__13642));
  });
  var G__14453__7 = (function (self__,a,b,c,d,e,f){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13643 = a;
  var G__13644 = b;
  var G__13645 = c;
  var G__13646 = d;
  var G__13647 = e;
  var G__13648 = f;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6(G__13643,G__13644,G__13645,G__13646,G__13647,G__13648) : self__.dispatch_fn.call(null,G__13643,G__13644,G__13645,G__13646,G__13647,G__13648));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13649 = a;
  var G__13650 = b;
  var G__13651 = c;
  var G__13652 = d;
  var G__13653 = e;
  var G__13654 = f;
  return (target_fn.cljs$core$IFn$_invoke$arity$6 ? target_fn.cljs$core$IFn$_invoke$arity$6(G__13649,G__13650,G__13651,G__13652,G__13653,G__13654) : target_fn.call(null,G__13649,G__13650,G__13651,G__13652,G__13653,G__13654));
  });
  var G__14453__8 = (function (self__,a,b,c,d,e,f,g){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13655 = a;
  var G__13656 = b;
  var G__13657 = c;
  var G__13658 = d;
  var G__13659 = e;
  var G__13660 = f;
  var G__13661 = g;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7(G__13655,G__13656,G__13657,G__13658,G__13659,G__13660,G__13661) : self__.dispatch_fn.call(null,G__13655,G__13656,G__13657,G__13658,G__13659,G__13660,G__13661));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13662 = a;
  var G__13663 = b;
  var G__13664 = c;
  var G__13665 = d;
  var G__13666 = e;
  var G__13667 = f;
  var G__13668 = g;
  return (target_fn.cljs$core$IFn$_invoke$arity$7 ? target_fn.cljs$core$IFn$_invoke$arity$7(G__13662,G__13663,G__13664,G__13665,G__13666,G__13667,G__13668) : target_fn.call(null,G__13662,G__13663,G__13664,G__13665,G__13666,G__13667,G__13668));
  });
  var G__14453__9 = (function (self__,a,b,c,d,e,f,g,h){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13669 = a;
  var G__13670 = b;
  var G__13671 = c;
  var G__13672 = d;
  var G__13673 = e;
  var G__13674 = f;
  var G__13675 = g;
  var G__13676 = h;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8(G__13669,G__13670,G__13671,G__13672,G__13673,G__13674,G__13675,G__13676) : self__.dispatch_fn.call(null,G__13669,G__13670,G__13671,G__13672,G__13673,G__13674,G__13675,G__13676));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13677 = a;
  var G__13678 = b;
  var G__13679 = c;
  var G__13680 = d;
  var G__13681 = e;
  var G__13682 = f;
  var G__13683 = g;
  var G__13684 = h;
  return (target_fn.cljs$core$IFn$_invoke$arity$8 ? target_fn.cljs$core$IFn$_invoke$arity$8(G__13677,G__13678,G__13679,G__13680,G__13681,G__13682,G__13683,G__13684) : target_fn.call(null,G__13677,G__13678,G__13679,G__13680,G__13681,G__13682,G__13683,G__13684));
  });
  var G__14453__10 = (function (self__,a,b,c,d,e,f,g,h,i){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13685 = a;
  var G__13686 = b;
  var G__13687 = c;
  var G__13688 = d;
  var G__13689 = e;
  var G__13690 = f;
  var G__13691 = g;
  var G__13692 = h;
  var G__13693 = i;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9(G__13685,G__13686,G__13687,G__13688,G__13689,G__13690,G__13691,G__13692,G__13693) : self__.dispatch_fn.call(null,G__13685,G__13686,G__13687,G__13688,G__13689,G__13690,G__13691,G__13692,G__13693));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13694 = a;
  var G__13695 = b;
  var G__13696 = c;
  var G__13697 = d;
  var G__13698 = e;
  var G__13699 = f;
  var G__13700 = g;
  var G__13701 = h;
  var G__13702 = i;
  return (target_fn.cljs$core$IFn$_invoke$arity$9 ? target_fn.cljs$core$IFn$_invoke$arity$9(G__13694,G__13695,G__13696,G__13697,G__13698,G__13699,G__13700,G__13701,G__13702) : target_fn.call(null,G__13694,G__13695,G__13696,G__13697,G__13698,G__13699,G__13700,G__13701,G__13702));
  });
  var G__14453__11 = (function (self__,a,b,c,d,e,f,g,h,i,j){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13703 = a;
  var G__13704 = b;
  var G__13705 = c;
  var G__13706 = d;
  var G__13707 = e;
  var G__13708 = f;
  var G__13709 = g;
  var G__13710 = h;
  var G__13711 = i;
  var G__13712 = j;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10(G__13703,G__13704,G__13705,G__13706,G__13707,G__13708,G__13709,G__13710,G__13711,G__13712) : self__.dispatch_fn.call(null,G__13703,G__13704,G__13705,G__13706,G__13707,G__13708,G__13709,G__13710,G__13711,G__13712));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13713 = a;
  var G__13714 = b;
  var G__13715 = c;
  var G__13716 = d;
  var G__13717 = e;
  var G__13718 = f;
  var G__13719 = g;
  var G__13720 = h;
  var G__13721 = i;
  var G__13722 = j;
  return (target_fn.cljs$core$IFn$_invoke$arity$10 ? target_fn.cljs$core$IFn$_invoke$arity$10(G__13713,G__13714,G__13715,G__13716,G__13717,G__13718,G__13719,G__13720,G__13721,G__13722) : target_fn.call(null,G__13713,G__13714,G__13715,G__13716,G__13717,G__13718,G__13719,G__13720,G__13721,G__13722));
  });
  var G__14453__12 = (function (self__,a,b,c,d,e,f,g,h,i,j,k){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13723 = a;
  var G__13724 = b;
  var G__13725 = c;
  var G__13726 = d;
  var G__13727 = e;
  var G__13728 = f;
  var G__13729 = g;
  var G__13730 = h;
  var G__13731 = i;
  var G__13732 = j;
  var G__13733 = k;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11(G__13723,G__13724,G__13725,G__13726,G__13727,G__13728,G__13729,G__13730,G__13731,G__13732,G__13733) : self__.dispatch_fn.call(null,G__13723,G__13724,G__13725,G__13726,G__13727,G__13728,G__13729,G__13730,G__13731,G__13732,G__13733));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13734 = a;
  var G__13735 = b;
  var G__13736 = c;
  var G__13737 = d;
  var G__13738 = e;
  var G__13739 = f;
  var G__13740 = g;
  var G__13741 = h;
  var G__13742 = i;
  var G__13743 = j;
  var G__13744 = k;
  return (target_fn.cljs$core$IFn$_invoke$arity$11 ? target_fn.cljs$core$IFn$_invoke$arity$11(G__13734,G__13735,G__13736,G__13737,G__13738,G__13739,G__13740,G__13741,G__13742,G__13743,G__13744) : target_fn.call(null,G__13734,G__13735,G__13736,G__13737,G__13738,G__13739,G__13740,G__13741,G__13742,G__13743,G__13744));
  });
  var G__14453__13 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13745 = a;
  var G__13746 = b;
  var G__13747 = c;
  var G__13748 = d;
  var G__13749 = e;
  var G__13750 = f;
  var G__13751 = g;
  var G__13752 = h;
  var G__13753 = i;
  var G__13754 = j;
  var G__13755 = k;
  var G__13756 = l;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12(G__13745,G__13746,G__13747,G__13748,G__13749,G__13750,G__13751,G__13752,G__13753,G__13754,G__13755,G__13756) : self__.dispatch_fn.call(null,G__13745,G__13746,G__13747,G__13748,G__13749,G__13750,G__13751,G__13752,G__13753,G__13754,G__13755,G__13756));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13757 = a;
  var G__13758 = b;
  var G__13759 = c;
  var G__13760 = d;
  var G__13761 = e;
  var G__13762 = f;
  var G__13763 = g;
  var G__13764 = h;
  var G__13765 = i;
  var G__13766 = j;
  var G__13767 = k;
  var G__13768 = l;
  return (target_fn.cljs$core$IFn$_invoke$arity$12 ? target_fn.cljs$core$IFn$_invoke$arity$12(G__13757,G__13758,G__13759,G__13760,G__13761,G__13762,G__13763,G__13764,G__13765,G__13766,G__13767,G__13768) : target_fn.call(null,G__13757,G__13758,G__13759,G__13760,G__13761,G__13762,G__13763,G__13764,G__13765,G__13766,G__13767,G__13768));
  });
  var G__14453__14 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13769 = a;
  var G__13770 = b;
  var G__13771 = c;
  var G__13772 = d;
  var G__13773 = e;
  var G__13774 = f;
  var G__13775 = g;
  var G__13776 = h;
  var G__13777 = i;
  var G__13778 = j;
  var G__13779 = k;
  var G__13780 = l;
  var G__13781 = m;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13(G__13769,G__13770,G__13771,G__13772,G__13773,G__13774,G__13775,G__13776,G__13777,G__13778,G__13779,G__13780,G__13781) : self__.dispatch_fn.call(null,G__13769,G__13770,G__13771,G__13772,G__13773,G__13774,G__13775,G__13776,G__13777,G__13778,G__13779,G__13780,G__13781));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13782 = a;
  var G__13783 = b;
  var G__13784 = c;
  var G__13785 = d;
  var G__13786 = e;
  var G__13787 = f;
  var G__13788 = g;
  var G__13789 = h;
  var G__13790 = i;
  var G__13791 = j;
  var G__13792 = k;
  var G__13793 = l;
  var G__13794 = m;
  return (target_fn.cljs$core$IFn$_invoke$arity$13 ? target_fn.cljs$core$IFn$_invoke$arity$13(G__13782,G__13783,G__13784,G__13785,G__13786,G__13787,G__13788,G__13789,G__13790,G__13791,G__13792,G__13793,G__13794) : target_fn.call(null,G__13782,G__13783,G__13784,G__13785,G__13786,G__13787,G__13788,G__13789,G__13790,G__13791,G__13792,G__13793,G__13794));
  });
  var G__14453__15 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13795 = a;
  var G__13796 = b;
  var G__13797 = c;
  var G__13798 = d;
  var G__13799 = e;
  var G__13800 = f;
  var G__13801 = g;
  var G__13802 = h;
  var G__13803 = i;
  var G__13804 = j;
  var G__13805 = k;
  var G__13806 = l;
  var G__13807 = m;
  var G__13808 = n;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14(G__13795,G__13796,G__13797,G__13798,G__13799,G__13800,G__13801,G__13802,G__13803,G__13804,G__13805,G__13806,G__13807,G__13808) : self__.dispatch_fn.call(null,G__13795,G__13796,G__13797,G__13798,G__13799,G__13800,G__13801,G__13802,G__13803,G__13804,G__13805,G__13806,G__13807,G__13808));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13809 = a;
  var G__13810 = b;
  var G__13811 = c;
  var G__13812 = d;
  var G__13813 = e;
  var G__13814 = f;
  var G__13815 = g;
  var G__13816 = h;
  var G__13817 = i;
  var G__13818 = j;
  var G__13819 = k;
  var G__13820 = l;
  var G__13821 = m;
  var G__13822 = n;
  return (target_fn.cljs$core$IFn$_invoke$arity$14 ? target_fn.cljs$core$IFn$_invoke$arity$14(G__13809,G__13810,G__13811,G__13812,G__13813,G__13814,G__13815,G__13816,G__13817,G__13818,G__13819,G__13820,G__13821,G__13822) : target_fn.call(null,G__13809,G__13810,G__13811,G__13812,G__13813,G__13814,G__13815,G__13816,G__13817,G__13818,G__13819,G__13820,G__13821,G__13822));
  });
  var G__14453__16 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13823 = a;
  var G__13824 = b;
  var G__13825 = c;
  var G__13826 = d;
  var G__13827 = e;
  var G__13828 = f;
  var G__13829 = g;
  var G__13830 = h;
  var G__13831 = i;
  var G__13832 = j;
  var G__13833 = k;
  var G__13834 = l;
  var G__13835 = m;
  var G__13836 = n;
  var G__13837 = o;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15(G__13823,G__13824,G__13825,G__13826,G__13827,G__13828,G__13829,G__13830,G__13831,G__13832,G__13833,G__13834,G__13835,G__13836,G__13837) : self__.dispatch_fn.call(null,G__13823,G__13824,G__13825,G__13826,G__13827,G__13828,G__13829,G__13830,G__13831,G__13832,G__13833,G__13834,G__13835,G__13836,G__13837));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13838 = a;
  var G__13839 = b;
  var G__13840 = c;
  var G__13841 = d;
  var G__13842 = e;
  var G__13843 = f;
  var G__13844 = g;
  var G__13845 = h;
  var G__13846 = i;
  var G__13847 = j;
  var G__13848 = k;
  var G__13849 = l;
  var G__13850 = m;
  var G__13851 = n;
  var G__13852 = o;
  return (target_fn.cljs$core$IFn$_invoke$arity$15 ? target_fn.cljs$core$IFn$_invoke$arity$15(G__13838,G__13839,G__13840,G__13841,G__13842,G__13843,G__13844,G__13845,G__13846,G__13847,G__13848,G__13849,G__13850,G__13851,G__13852) : target_fn.call(null,G__13838,G__13839,G__13840,G__13841,G__13842,G__13843,G__13844,G__13845,G__13846,G__13847,G__13848,G__13849,G__13850,G__13851,G__13852));
  });
  var G__14453__17 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13853 = a;
  var G__13854 = b;
  var G__13855 = c;
  var G__13856 = d;
  var G__13857 = e;
  var G__13858 = f;
  var G__13859 = g;
  var G__13860 = h;
  var G__13861 = i;
  var G__13862 = j;
  var G__13863 = k;
  var G__13864 = l;
  var G__13865 = m;
  var G__13866 = n;
  var G__13867 = o;
  var G__13868 = p;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16(G__13853,G__13854,G__13855,G__13856,G__13857,G__13858,G__13859,G__13860,G__13861,G__13862,G__13863,G__13864,G__13865,G__13866,G__13867,G__13868) : self__.dispatch_fn.call(null,G__13853,G__13854,G__13855,G__13856,G__13857,G__13858,G__13859,G__13860,G__13861,G__13862,G__13863,G__13864,G__13865,G__13866,G__13867,G__13868));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13869 = a;
  var G__13870 = b;
  var G__13871 = c;
  var G__13872 = d;
  var G__13873 = e;
  var G__13874 = f;
  var G__13875 = g;
  var G__13876 = h;
  var G__13877 = i;
  var G__13878 = j;
  var G__13879 = k;
  var G__13880 = l;
  var G__13881 = m;
  var G__13882 = n;
  var G__13883 = o;
  var G__13884 = p;
  return (target_fn.cljs$core$IFn$_invoke$arity$16 ? target_fn.cljs$core$IFn$_invoke$arity$16(G__13869,G__13870,G__13871,G__13872,G__13873,G__13874,G__13875,G__13876,G__13877,G__13878,G__13879,G__13880,G__13881,G__13882,G__13883,G__13884) : target_fn.call(null,G__13869,G__13870,G__13871,G__13872,G__13873,G__13874,G__13875,G__13876,G__13877,G__13878,G__13879,G__13880,G__13881,G__13882,G__13883,G__13884));
  });
  var G__14453__18 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13885 = a;
  var G__13886 = b;
  var G__13887 = c;
  var G__13888 = d;
  var G__13889 = e;
  var G__13890 = f;
  var G__13891 = g;
  var G__13892 = h;
  var G__13893 = i;
  var G__13894 = j;
  var G__13895 = k;
  var G__13896 = l;
  var G__13897 = m;
  var G__13898 = n;
  var G__13899 = o;
  var G__13900 = p;
  var G__13901 = q;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17(G__13885,G__13886,G__13887,G__13888,G__13889,G__13890,G__13891,G__13892,G__13893,G__13894,G__13895,G__13896,G__13897,G__13898,G__13899,G__13900,G__13901) : self__.dispatch_fn.call(null,G__13885,G__13886,G__13887,G__13888,G__13889,G__13890,G__13891,G__13892,G__13893,G__13894,G__13895,G__13896,G__13897,G__13898,G__13899,G__13900,G__13901));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13902 = a;
  var G__13903 = b;
  var G__13904 = c;
  var G__13905 = d;
  var G__13906 = e;
  var G__13907 = f;
  var G__13908 = g;
  var G__13909 = h;
  var G__13910 = i;
  var G__13911 = j;
  var G__13912 = k;
  var G__13913 = l;
  var G__13914 = m;
  var G__13915 = n;
  var G__13916 = o;
  var G__13917 = p;
  var G__13918 = q;
  return (target_fn.cljs$core$IFn$_invoke$arity$17 ? target_fn.cljs$core$IFn$_invoke$arity$17(G__13902,G__13903,G__13904,G__13905,G__13906,G__13907,G__13908,G__13909,G__13910,G__13911,G__13912,G__13913,G__13914,G__13915,G__13916,G__13917,G__13918) : target_fn.call(null,G__13902,G__13903,G__13904,G__13905,G__13906,G__13907,G__13908,G__13909,G__13910,G__13911,G__13912,G__13913,G__13914,G__13915,G__13916,G__13917,G__13918));
  });
  var G__14453__19 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13919 = a;
  var G__13920 = b;
  var G__13921 = c;
  var G__13922 = d;
  var G__13923 = e;
  var G__13924 = f;
  var G__13925 = g;
  var G__13926 = h;
  var G__13927 = i;
  var G__13928 = j;
  var G__13929 = k;
  var G__13930 = l;
  var G__13931 = m;
  var G__13932 = n;
  var G__13933 = o;
  var G__13934 = p;
  var G__13935 = q;
  var G__13936 = r;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18(G__13919,G__13920,G__13921,G__13922,G__13923,G__13924,G__13925,G__13926,G__13927,G__13928,G__13929,G__13930,G__13931,G__13932,G__13933,G__13934,G__13935,G__13936) : self__.dispatch_fn.call(null,G__13919,G__13920,G__13921,G__13922,G__13923,G__13924,G__13925,G__13926,G__13927,G__13928,G__13929,G__13930,G__13931,G__13932,G__13933,G__13934,G__13935,G__13936));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13937 = a;
  var G__13938 = b;
  var G__13939 = c;
  var G__13940 = d;
  var G__13941 = e;
  var G__13942 = f;
  var G__13943 = g;
  var G__13944 = h;
  var G__13945 = i;
  var G__13946 = j;
  var G__13947 = k;
  var G__13948 = l;
  var G__13949 = m;
  var G__13950 = n;
  var G__13951 = o;
  var G__13952 = p;
  var G__13953 = q;
  var G__13954 = r;
  return (target_fn.cljs$core$IFn$_invoke$arity$18 ? target_fn.cljs$core$IFn$_invoke$arity$18(G__13937,G__13938,G__13939,G__13940,G__13941,G__13942,G__13943,G__13944,G__13945,G__13946,G__13947,G__13948,G__13949,G__13950,G__13951,G__13952,G__13953,G__13954) : target_fn.call(null,G__13937,G__13938,G__13939,G__13940,G__13941,G__13942,G__13943,G__13944,G__13945,G__13946,G__13947,G__13948,G__13949,G__13950,G__13951,G__13952,G__13953,G__13954));
  });
  var G__14453__20 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13955 = a;
  var G__13956 = b;
  var G__13957 = c;
  var G__13958 = d;
  var G__13959 = e;
  var G__13960 = f;
  var G__13961 = g;
  var G__13962 = h;
  var G__13963 = i;
  var G__13964 = j;
  var G__13965 = k;
  var G__13966 = l;
  var G__13967 = m;
  var G__13968 = n;
  var G__13969 = o;
  var G__13970 = p;
  var G__13971 = q;
  var G__13972 = r;
  var G__13973 = s;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19(G__13955,G__13956,G__13957,G__13958,G__13959,G__13960,G__13961,G__13962,G__13963,G__13964,G__13965,G__13966,G__13967,G__13968,G__13969,G__13970,G__13971,G__13972,G__13973) : self__.dispatch_fn.call(null,G__13955,G__13956,G__13957,G__13958,G__13959,G__13960,G__13961,G__13962,G__13963,G__13964,G__13965,G__13966,G__13967,G__13968,G__13969,G__13970,G__13971,G__13972,G__13973));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__13974 = a;
  var G__13975 = b;
  var G__13976 = c;
  var G__13977 = d;
  var G__13978 = e;
  var G__13979 = f;
  var G__13980 = g;
  var G__13981 = h;
  var G__13982 = i;
  var G__13983 = j;
  var G__13984 = k;
  var G__13985 = l;
  var G__13986 = m;
  var G__13987 = n;
  var G__13988 = o;
  var G__13989 = p;
  var G__13990 = q;
  var G__13991 = r;
  var G__13992 = s;
  return (target_fn.cljs$core$IFn$_invoke$arity$19 ? target_fn.cljs$core$IFn$_invoke$arity$19(G__13974,G__13975,G__13976,G__13977,G__13978,G__13979,G__13980,G__13981,G__13982,G__13983,G__13984,G__13985,G__13986,G__13987,G__13988,G__13989,G__13990,G__13991,G__13992) : target_fn.call(null,G__13974,G__13975,G__13976,G__13977,G__13978,G__13979,G__13980,G__13981,G__13982,G__13983,G__13984,G__13985,G__13986,G__13987,G__13988,G__13989,G__13990,G__13991,G__13992));
  });
  var G__14453__21 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = (function (){var G__13993 = a;
  var G__13994 = b;
  var G__13995 = c;
  var G__13996 = d;
  var G__13997 = e;
  var G__13998 = f;
  var G__13999 = g;
  var G__14000 = h;
  var G__14001 = i;
  var G__14002 = j;
  var G__14003 = k;
  var G__14004 = l;
  var G__14005 = m;
  var G__14006 = n;
  var G__14007 = o;
  var G__14008 = p;
  var G__14009 = q;
  var G__14010 = r;
  var G__14011 = s;
  var G__14012 = t;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20(G__13993,G__13994,G__13995,G__13996,G__13997,G__13998,G__13999,G__14000,G__14001,G__14002,G__14003,G__14004,G__14005,G__14006,G__14007,G__14008,G__14009,G__14010,G__14011,G__14012) : self__.dispatch_fn.call(null,G__13993,G__13994,G__13995,G__13996,G__13997,G__13998,G__13999,G__14000,G__14001,G__14002,G__14003,G__14004,G__14005,G__14006,G__14007,G__14008,G__14009,G__14010,G__14011,G__14012));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14013 = a;
  var G__14014 = b;
  var G__14015 = c;
  var G__14016 = d;
  var G__14017 = e;
  var G__14018 = f;
  var G__14019 = g;
  var G__14020 = h;
  var G__14021 = i;
  var G__14022 = j;
  var G__14023 = k;
  var G__14024 = l;
  var G__14025 = m;
  var G__14026 = n;
  var G__14027 = o;
  var G__14028 = p;
  var G__14029 = q;
  var G__14030 = r;
  var G__14031 = s;
  var G__14032 = t;
  return (target_fn.cljs$core$IFn$_invoke$arity$20 ? target_fn.cljs$core$IFn$_invoke$arity$20(G__14013,G__14014,G__14015,G__14016,G__14017,G__14018,G__14019,G__14020,G__14021,G__14022,G__14023,G__14024,G__14025,G__14026,G__14027,G__14028,G__14029,G__14030,G__14031,G__14032) : target_fn.call(null,G__14013,G__14014,G__14015,G__14016,G__14017,G__14018,G__14019,G__14020,G__14021,G__14022,G__14023,G__14024,G__14025,G__14026,G__14027,G__14028,G__14029,G__14030,G__14031,G__14032));
  });
  var G__14453__22 = (function (self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  var self__ = this;
  var self____$1 = this;
  var mf = self____$1;
  var dispatch_val = cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(self__.dispatch_fn,a,b,c,d,cljs.core.array_seq([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(target_fn,a,b,c,d,cljs.core.array_seq([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
  });
  G__14453 = function(self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  switch(arguments.length){
  case 1:
  return G__14453__1.call(this,self__);
  case 2:
  return G__14453__2.call(this,self__,a);
  case 3:
  return G__14453__3.call(this,self__,a,b);
  case 4:
  return G__14453__4.call(this,self__,a,b,c);
  case 5:
  return G__14453__5.call(this,self__,a,b,c,d);
  case 6:
  return G__14453__6.call(this,self__,a,b,c,d,e);
  case 7:
  return G__14453__7.call(this,self__,a,b,c,d,e,f);
  case 8:
  return G__14453__8.call(this,self__,a,b,c,d,e,f,g);
  case 9:
  return G__14453__9.call(this,self__,a,b,c,d,e,f,g,h);
  case 10:
  return G__14453__10.call(this,self__,a,b,c,d,e,f,g,h,i);
  case 11:
  return G__14453__11.call(this,self__,a,b,c,d,e,f,g,h,i,j);
  case 12:
  return G__14453__12.call(this,self__,a,b,c,d,e,f,g,h,i,j,k);
  case 13:
  return G__14453__13.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l);
  case 14:
  return G__14453__14.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m);
  case 15:
  return G__14453__15.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n);
  case 16:
  return G__14453__16.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);
  case 17:
  return G__14453__17.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
  case 18:
  return G__14453__18.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
  case 19:
  return G__14453__19.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r);
  case 20:
  return G__14453__20.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s);
  case 21:
  return G__14453__21.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t);
  case 22:
  return G__14453__22.call(this,self__,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  G__14453.cljs$core$IFn$_invoke$arity$1 = G__14453__1;
  G__14453.cljs$core$IFn$_invoke$arity$2 = G__14453__2;
  G__14453.cljs$core$IFn$_invoke$arity$3 = G__14453__3;
  G__14453.cljs$core$IFn$_invoke$arity$4 = G__14453__4;
  G__14453.cljs$core$IFn$_invoke$arity$5 = G__14453__5;
  G__14453.cljs$core$IFn$_invoke$arity$6 = G__14453__6;
  G__14453.cljs$core$IFn$_invoke$arity$7 = G__14453__7;
  G__14453.cljs$core$IFn$_invoke$arity$8 = G__14453__8;
  G__14453.cljs$core$IFn$_invoke$arity$9 = G__14453__9;
  G__14453.cljs$core$IFn$_invoke$arity$10 = G__14453__10;
  G__14453.cljs$core$IFn$_invoke$arity$11 = G__14453__11;
  G__14453.cljs$core$IFn$_invoke$arity$12 = G__14453__12;
  G__14453.cljs$core$IFn$_invoke$arity$13 = G__14453__13;
  G__14453.cljs$core$IFn$_invoke$arity$14 = G__14453__14;
  G__14453.cljs$core$IFn$_invoke$arity$15 = G__14453__15;
  G__14453.cljs$core$IFn$_invoke$arity$16 = G__14453__16;
  G__14453.cljs$core$IFn$_invoke$arity$17 = G__14453__17;
  G__14453.cljs$core$IFn$_invoke$arity$18 = G__14453__18;
  G__14453.cljs$core$IFn$_invoke$arity$19 = G__14453__19;
  G__14453.cljs$core$IFn$_invoke$arity$20 = G__14453__20;
  G__14453.cljs$core$IFn$_invoke$arity$21 = G__14453__21;
  G__14453.cljs$core$IFn$_invoke$arity$22 = G__14453__22;
  return G__14453;
  })()
  ;
  
  cljs.core.MultiFn.prototype.apply = (function (self__,args13605){
  var self__ = this;
  var self____$1 = this;
  return self____$1.call.apply(self____$1,[self____$1].concat(cljs.core.aclone(args13605)));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$0 = (function (){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$0() : self__.dispatch_fn.call(null));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  return (target_fn.cljs$core$IFn$_invoke$arity$0 ? target_fn.cljs$core$IFn$_invoke$arity$0() : target_fn.call(null));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$1 = (function (a){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14033 = a;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$1(G__14033) : self__.dispatch_fn.call(null,G__14033));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14034 = a;
  return (target_fn.cljs$core$IFn$_invoke$arity$1 ? target_fn.cljs$core$IFn$_invoke$arity$1(G__14034) : target_fn.call(null,G__14034));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$2 = (function (a,b){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14035 = a;
  var G__14036 = b;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$2(G__14035,G__14036) : self__.dispatch_fn.call(null,G__14035,G__14036));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14037 = a;
  var G__14038 = b;
  return (target_fn.cljs$core$IFn$_invoke$arity$2 ? target_fn.cljs$core$IFn$_invoke$arity$2(G__14037,G__14038) : target_fn.call(null,G__14037,G__14038));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$3 = (function (a,b,c){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14039 = a;
  var G__14040 = b;
  var G__14041 = c;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$3(G__14039,G__14040,G__14041) : self__.dispatch_fn.call(null,G__14039,G__14040,G__14041));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14042 = a;
  var G__14043 = b;
  var G__14044 = c;
  return (target_fn.cljs$core$IFn$_invoke$arity$3 ? target_fn.cljs$core$IFn$_invoke$arity$3(G__14042,G__14043,G__14044) : target_fn.call(null,G__14042,G__14043,G__14044));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$4 = (function (a,b,c,d){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14045 = a;
  var G__14046 = b;
  var G__14047 = c;
  var G__14048 = d;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$4(G__14045,G__14046,G__14047,G__14048) : self__.dispatch_fn.call(null,G__14045,G__14046,G__14047,G__14048));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14049 = a;
  var G__14050 = b;
  var G__14051 = c;
  var G__14052 = d;
  return (target_fn.cljs$core$IFn$_invoke$arity$4 ? target_fn.cljs$core$IFn$_invoke$arity$4(G__14049,G__14050,G__14051,G__14052) : target_fn.call(null,G__14049,G__14050,G__14051,G__14052));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$5 = (function (a,b,c,d,e){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14053 = a;
  var G__14054 = b;
  var G__14055 = c;
  var G__14056 = d;
  var G__14057 = e;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$5(G__14053,G__14054,G__14055,G__14056,G__14057) : self__.dispatch_fn.call(null,G__14053,G__14054,G__14055,G__14056,G__14057));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14058 = a;
  var G__14059 = b;
  var G__14060 = c;
  var G__14061 = d;
  var G__14062 = e;
  return (target_fn.cljs$core$IFn$_invoke$arity$5 ? target_fn.cljs$core$IFn$_invoke$arity$5(G__14058,G__14059,G__14060,G__14061,G__14062) : target_fn.call(null,G__14058,G__14059,G__14060,G__14061,G__14062));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$6 = (function (a,b,c,d,e,f){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14063 = a;
  var G__14064 = b;
  var G__14065 = c;
  var G__14066 = d;
  var G__14067 = e;
  var G__14068 = f;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$6(G__14063,G__14064,G__14065,G__14066,G__14067,G__14068) : self__.dispatch_fn.call(null,G__14063,G__14064,G__14065,G__14066,G__14067,G__14068));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14069 = a;
  var G__14070 = b;
  var G__14071 = c;
  var G__14072 = d;
  var G__14073 = e;
  var G__14074 = f;
  return (target_fn.cljs$core$IFn$_invoke$arity$6 ? target_fn.cljs$core$IFn$_invoke$arity$6(G__14069,G__14070,G__14071,G__14072,G__14073,G__14074) : target_fn.call(null,G__14069,G__14070,G__14071,G__14072,G__14073,G__14074));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$7 = (function (a,b,c,d,e,f,g){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14075 = a;
  var G__14076 = b;
  var G__14077 = c;
  var G__14078 = d;
  var G__14079 = e;
  var G__14080 = f;
  var G__14081 = g;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$7(G__14075,G__14076,G__14077,G__14078,G__14079,G__14080,G__14081) : self__.dispatch_fn.call(null,G__14075,G__14076,G__14077,G__14078,G__14079,G__14080,G__14081));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14082 = a;
  var G__14083 = b;
  var G__14084 = c;
  var G__14085 = d;
  var G__14086 = e;
  var G__14087 = f;
  var G__14088 = g;
  return (target_fn.cljs$core$IFn$_invoke$arity$7 ? target_fn.cljs$core$IFn$_invoke$arity$7(G__14082,G__14083,G__14084,G__14085,G__14086,G__14087,G__14088) : target_fn.call(null,G__14082,G__14083,G__14084,G__14085,G__14086,G__14087,G__14088));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$8 = (function (a,b,c,d,e,f,g,h){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14089 = a;
  var G__14090 = b;
  var G__14091 = c;
  var G__14092 = d;
  var G__14093 = e;
  var G__14094 = f;
  var G__14095 = g;
  var G__14096 = h;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$8(G__14089,G__14090,G__14091,G__14092,G__14093,G__14094,G__14095,G__14096) : self__.dispatch_fn.call(null,G__14089,G__14090,G__14091,G__14092,G__14093,G__14094,G__14095,G__14096));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14097 = a;
  var G__14098 = b;
  var G__14099 = c;
  var G__14100 = d;
  var G__14101 = e;
  var G__14102 = f;
  var G__14103 = g;
  var G__14104 = h;
  return (target_fn.cljs$core$IFn$_invoke$arity$8 ? target_fn.cljs$core$IFn$_invoke$arity$8(G__14097,G__14098,G__14099,G__14100,G__14101,G__14102,G__14103,G__14104) : target_fn.call(null,G__14097,G__14098,G__14099,G__14100,G__14101,G__14102,G__14103,G__14104));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$9 = (function (a,b,c,d,e,f,g,h,i){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14105 = a;
  var G__14106 = b;
  var G__14107 = c;
  var G__14108 = d;
  var G__14109 = e;
  var G__14110 = f;
  var G__14111 = g;
  var G__14112 = h;
  var G__14113 = i;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$9(G__14105,G__14106,G__14107,G__14108,G__14109,G__14110,G__14111,G__14112,G__14113) : self__.dispatch_fn.call(null,G__14105,G__14106,G__14107,G__14108,G__14109,G__14110,G__14111,G__14112,G__14113));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14114 = a;
  var G__14115 = b;
  var G__14116 = c;
  var G__14117 = d;
  var G__14118 = e;
  var G__14119 = f;
  var G__14120 = g;
  var G__14121 = h;
  var G__14122 = i;
  return (target_fn.cljs$core$IFn$_invoke$arity$9 ? target_fn.cljs$core$IFn$_invoke$arity$9(G__14114,G__14115,G__14116,G__14117,G__14118,G__14119,G__14120,G__14121,G__14122) : target_fn.call(null,G__14114,G__14115,G__14116,G__14117,G__14118,G__14119,G__14120,G__14121,G__14122));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$10 = (function (a,b,c,d,e,f,g,h,i,j){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14123 = a;
  var G__14124 = b;
  var G__14125 = c;
  var G__14126 = d;
  var G__14127 = e;
  var G__14128 = f;
  var G__14129 = g;
  var G__14130 = h;
  var G__14131 = i;
  var G__14132 = j;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$10(G__14123,G__14124,G__14125,G__14126,G__14127,G__14128,G__14129,G__14130,G__14131,G__14132) : self__.dispatch_fn.call(null,G__14123,G__14124,G__14125,G__14126,G__14127,G__14128,G__14129,G__14130,G__14131,G__14132));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14133 = a;
  var G__14134 = b;
  var G__14135 = c;
  var G__14136 = d;
  var G__14137 = e;
  var G__14138 = f;
  var G__14139 = g;
  var G__14140 = h;
  var G__14141 = i;
  var G__14142 = j;
  return (target_fn.cljs$core$IFn$_invoke$arity$10 ? target_fn.cljs$core$IFn$_invoke$arity$10(G__14133,G__14134,G__14135,G__14136,G__14137,G__14138,G__14139,G__14140,G__14141,G__14142) : target_fn.call(null,G__14133,G__14134,G__14135,G__14136,G__14137,G__14138,G__14139,G__14140,G__14141,G__14142));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$11 = (function (a,b,c,d,e,f,g,h,i,j,k){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14143 = a;
  var G__14144 = b;
  var G__14145 = c;
  var G__14146 = d;
  var G__14147 = e;
  var G__14148 = f;
  var G__14149 = g;
  var G__14150 = h;
  var G__14151 = i;
  var G__14152 = j;
  var G__14153 = k;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$11(G__14143,G__14144,G__14145,G__14146,G__14147,G__14148,G__14149,G__14150,G__14151,G__14152,G__14153) : self__.dispatch_fn.call(null,G__14143,G__14144,G__14145,G__14146,G__14147,G__14148,G__14149,G__14150,G__14151,G__14152,G__14153));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14154 = a;
  var G__14155 = b;
  var G__14156 = c;
  var G__14157 = d;
  var G__14158 = e;
  var G__14159 = f;
  var G__14160 = g;
  var G__14161 = h;
  var G__14162 = i;
  var G__14163 = j;
  var G__14164 = k;
  return (target_fn.cljs$core$IFn$_invoke$arity$11 ? target_fn.cljs$core$IFn$_invoke$arity$11(G__14154,G__14155,G__14156,G__14157,G__14158,G__14159,G__14160,G__14161,G__14162,G__14163,G__14164) : target_fn.call(null,G__14154,G__14155,G__14156,G__14157,G__14158,G__14159,G__14160,G__14161,G__14162,G__14163,G__14164));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$12 = (function (a,b,c,d,e,f,g,h,i,j,k,l){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14165 = a;
  var G__14166 = b;
  var G__14167 = c;
  var G__14168 = d;
  var G__14169 = e;
  var G__14170 = f;
  var G__14171 = g;
  var G__14172 = h;
  var G__14173 = i;
  var G__14174 = j;
  var G__14175 = k;
  var G__14176 = l;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$12(G__14165,G__14166,G__14167,G__14168,G__14169,G__14170,G__14171,G__14172,G__14173,G__14174,G__14175,G__14176) : self__.dispatch_fn.call(null,G__14165,G__14166,G__14167,G__14168,G__14169,G__14170,G__14171,G__14172,G__14173,G__14174,G__14175,G__14176));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14177 = a;
  var G__14178 = b;
  var G__14179 = c;
  var G__14180 = d;
  var G__14181 = e;
  var G__14182 = f;
  var G__14183 = g;
  var G__14184 = h;
  var G__14185 = i;
  var G__14186 = j;
  var G__14187 = k;
  var G__14188 = l;
  return (target_fn.cljs$core$IFn$_invoke$arity$12 ? target_fn.cljs$core$IFn$_invoke$arity$12(G__14177,G__14178,G__14179,G__14180,G__14181,G__14182,G__14183,G__14184,G__14185,G__14186,G__14187,G__14188) : target_fn.call(null,G__14177,G__14178,G__14179,G__14180,G__14181,G__14182,G__14183,G__14184,G__14185,G__14186,G__14187,G__14188));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$13 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14189 = a;
  var G__14190 = b;
  var G__14191 = c;
  var G__14192 = d;
  var G__14193 = e;
  var G__14194 = f;
  var G__14195 = g;
  var G__14196 = h;
  var G__14197 = i;
  var G__14198 = j;
  var G__14199 = k;
  var G__14200 = l;
  var G__14201 = m;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$13(G__14189,G__14190,G__14191,G__14192,G__14193,G__14194,G__14195,G__14196,G__14197,G__14198,G__14199,G__14200,G__14201) : self__.dispatch_fn.call(null,G__14189,G__14190,G__14191,G__14192,G__14193,G__14194,G__14195,G__14196,G__14197,G__14198,G__14199,G__14200,G__14201));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14202 = a;
  var G__14203 = b;
  var G__14204 = c;
  var G__14205 = d;
  var G__14206 = e;
  var G__14207 = f;
  var G__14208 = g;
  var G__14209 = h;
  var G__14210 = i;
  var G__14211 = j;
  var G__14212 = k;
  var G__14213 = l;
  var G__14214 = m;
  return (target_fn.cljs$core$IFn$_invoke$arity$13 ? target_fn.cljs$core$IFn$_invoke$arity$13(G__14202,G__14203,G__14204,G__14205,G__14206,G__14207,G__14208,G__14209,G__14210,G__14211,G__14212,G__14213,G__14214) : target_fn.call(null,G__14202,G__14203,G__14204,G__14205,G__14206,G__14207,G__14208,G__14209,G__14210,G__14211,G__14212,G__14213,G__14214));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$14 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14215 = a;
  var G__14216 = b;
  var G__14217 = c;
  var G__14218 = d;
  var G__14219 = e;
  var G__14220 = f;
  var G__14221 = g;
  var G__14222 = h;
  var G__14223 = i;
  var G__14224 = j;
  var G__14225 = k;
  var G__14226 = l;
  var G__14227 = m;
  var G__14228 = n;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$14(G__14215,G__14216,G__14217,G__14218,G__14219,G__14220,G__14221,G__14222,G__14223,G__14224,G__14225,G__14226,G__14227,G__14228) : self__.dispatch_fn.call(null,G__14215,G__14216,G__14217,G__14218,G__14219,G__14220,G__14221,G__14222,G__14223,G__14224,G__14225,G__14226,G__14227,G__14228));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14229 = a;
  var G__14230 = b;
  var G__14231 = c;
  var G__14232 = d;
  var G__14233 = e;
  var G__14234 = f;
  var G__14235 = g;
  var G__14236 = h;
  var G__14237 = i;
  var G__14238 = j;
  var G__14239 = k;
  var G__14240 = l;
  var G__14241 = m;
  var G__14242 = n;
  return (target_fn.cljs$core$IFn$_invoke$arity$14 ? target_fn.cljs$core$IFn$_invoke$arity$14(G__14229,G__14230,G__14231,G__14232,G__14233,G__14234,G__14235,G__14236,G__14237,G__14238,G__14239,G__14240,G__14241,G__14242) : target_fn.call(null,G__14229,G__14230,G__14231,G__14232,G__14233,G__14234,G__14235,G__14236,G__14237,G__14238,G__14239,G__14240,G__14241,G__14242));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$15 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14243 = a;
  var G__14244 = b;
  var G__14245 = c;
  var G__14246 = d;
  var G__14247 = e;
  var G__14248 = f;
  var G__14249 = g;
  var G__14250 = h;
  var G__14251 = i;
  var G__14252 = j;
  var G__14253 = k;
  var G__14254 = l;
  var G__14255 = m;
  var G__14256 = n;
  var G__14257 = o;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$15(G__14243,G__14244,G__14245,G__14246,G__14247,G__14248,G__14249,G__14250,G__14251,G__14252,G__14253,G__14254,G__14255,G__14256,G__14257) : self__.dispatch_fn.call(null,G__14243,G__14244,G__14245,G__14246,G__14247,G__14248,G__14249,G__14250,G__14251,G__14252,G__14253,G__14254,G__14255,G__14256,G__14257));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14258 = a;
  var G__14259 = b;
  var G__14260 = c;
  var G__14261 = d;
  var G__14262 = e;
  var G__14263 = f;
  var G__14264 = g;
  var G__14265 = h;
  var G__14266 = i;
  var G__14267 = j;
  var G__14268 = k;
  var G__14269 = l;
  var G__14270 = m;
  var G__14271 = n;
  var G__14272 = o;
  return (target_fn.cljs$core$IFn$_invoke$arity$15 ? target_fn.cljs$core$IFn$_invoke$arity$15(G__14258,G__14259,G__14260,G__14261,G__14262,G__14263,G__14264,G__14265,G__14266,G__14267,G__14268,G__14269,G__14270,G__14271,G__14272) : target_fn.call(null,G__14258,G__14259,G__14260,G__14261,G__14262,G__14263,G__14264,G__14265,G__14266,G__14267,G__14268,G__14269,G__14270,G__14271,G__14272));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$16 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14273 = a;
  var G__14274 = b;
  var G__14275 = c;
  var G__14276 = d;
  var G__14277 = e;
  var G__14278 = f;
  var G__14279 = g;
  var G__14280 = h;
  var G__14281 = i;
  var G__14282 = j;
  var G__14283 = k;
  var G__14284 = l;
  var G__14285 = m;
  var G__14286 = n;
  var G__14287 = o;
  var G__14288 = p;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$16(G__14273,G__14274,G__14275,G__14276,G__14277,G__14278,G__14279,G__14280,G__14281,G__14282,G__14283,G__14284,G__14285,G__14286,G__14287,G__14288) : self__.dispatch_fn.call(null,G__14273,G__14274,G__14275,G__14276,G__14277,G__14278,G__14279,G__14280,G__14281,G__14282,G__14283,G__14284,G__14285,G__14286,G__14287,G__14288));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14289 = a;
  var G__14290 = b;
  var G__14291 = c;
  var G__14292 = d;
  var G__14293 = e;
  var G__14294 = f;
  var G__14295 = g;
  var G__14296 = h;
  var G__14297 = i;
  var G__14298 = j;
  var G__14299 = k;
  var G__14300 = l;
  var G__14301 = m;
  var G__14302 = n;
  var G__14303 = o;
  var G__14304 = p;
  return (target_fn.cljs$core$IFn$_invoke$arity$16 ? target_fn.cljs$core$IFn$_invoke$arity$16(G__14289,G__14290,G__14291,G__14292,G__14293,G__14294,G__14295,G__14296,G__14297,G__14298,G__14299,G__14300,G__14301,G__14302,G__14303,G__14304) : target_fn.call(null,G__14289,G__14290,G__14291,G__14292,G__14293,G__14294,G__14295,G__14296,G__14297,G__14298,G__14299,G__14300,G__14301,G__14302,G__14303,G__14304));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$17 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14305 = a;
  var G__14306 = b;
  var G__14307 = c;
  var G__14308 = d;
  var G__14309 = e;
  var G__14310 = f;
  var G__14311 = g;
  var G__14312 = h;
  var G__14313 = i;
  var G__14314 = j;
  var G__14315 = k;
  var G__14316 = l;
  var G__14317 = m;
  var G__14318 = n;
  var G__14319 = o;
  var G__14320 = p;
  var G__14321 = q;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$17(G__14305,G__14306,G__14307,G__14308,G__14309,G__14310,G__14311,G__14312,G__14313,G__14314,G__14315,G__14316,G__14317,G__14318,G__14319,G__14320,G__14321) : self__.dispatch_fn.call(null,G__14305,G__14306,G__14307,G__14308,G__14309,G__14310,G__14311,G__14312,G__14313,G__14314,G__14315,G__14316,G__14317,G__14318,G__14319,G__14320,G__14321));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14322 = a;
  var G__14323 = b;
  var G__14324 = c;
  var G__14325 = d;
  var G__14326 = e;
  var G__14327 = f;
  var G__14328 = g;
  var G__14329 = h;
  var G__14330 = i;
  var G__14331 = j;
  var G__14332 = k;
  var G__14333 = l;
  var G__14334 = m;
  var G__14335 = n;
  var G__14336 = o;
  var G__14337 = p;
  var G__14338 = q;
  return (target_fn.cljs$core$IFn$_invoke$arity$17 ? target_fn.cljs$core$IFn$_invoke$arity$17(G__14322,G__14323,G__14324,G__14325,G__14326,G__14327,G__14328,G__14329,G__14330,G__14331,G__14332,G__14333,G__14334,G__14335,G__14336,G__14337,G__14338) : target_fn.call(null,G__14322,G__14323,G__14324,G__14325,G__14326,G__14327,G__14328,G__14329,G__14330,G__14331,G__14332,G__14333,G__14334,G__14335,G__14336,G__14337,G__14338));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$18 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14339 = a;
  var G__14340 = b;
  var G__14341 = c;
  var G__14342 = d;
  var G__14343 = e;
  var G__14344 = f;
  var G__14345 = g;
  var G__14346 = h;
  var G__14347 = i;
  var G__14348 = j;
  var G__14349 = k;
  var G__14350 = l;
  var G__14351 = m;
  var G__14352 = n;
  var G__14353 = o;
  var G__14354 = p;
  var G__14355 = q;
  var G__14356 = r;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$18(G__14339,G__14340,G__14341,G__14342,G__14343,G__14344,G__14345,G__14346,G__14347,G__14348,G__14349,G__14350,G__14351,G__14352,G__14353,G__14354,G__14355,G__14356) : self__.dispatch_fn.call(null,G__14339,G__14340,G__14341,G__14342,G__14343,G__14344,G__14345,G__14346,G__14347,G__14348,G__14349,G__14350,G__14351,G__14352,G__14353,G__14354,G__14355,G__14356));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14357 = a;
  var G__14358 = b;
  var G__14359 = c;
  var G__14360 = d;
  var G__14361 = e;
  var G__14362 = f;
  var G__14363 = g;
  var G__14364 = h;
  var G__14365 = i;
  var G__14366 = j;
  var G__14367 = k;
  var G__14368 = l;
  var G__14369 = m;
  var G__14370 = n;
  var G__14371 = o;
  var G__14372 = p;
  var G__14373 = q;
  var G__14374 = r;
  return (target_fn.cljs$core$IFn$_invoke$arity$18 ? target_fn.cljs$core$IFn$_invoke$arity$18(G__14357,G__14358,G__14359,G__14360,G__14361,G__14362,G__14363,G__14364,G__14365,G__14366,G__14367,G__14368,G__14369,G__14370,G__14371,G__14372,G__14373,G__14374) : target_fn.call(null,G__14357,G__14358,G__14359,G__14360,G__14361,G__14362,G__14363,G__14364,G__14365,G__14366,G__14367,G__14368,G__14369,G__14370,G__14371,G__14372,G__14373,G__14374));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$19 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14375 = a;
  var G__14376 = b;
  var G__14377 = c;
  var G__14378 = d;
  var G__14379 = e;
  var G__14380 = f;
  var G__14381 = g;
  var G__14382 = h;
  var G__14383 = i;
  var G__14384 = j;
  var G__14385 = k;
  var G__14386 = l;
  var G__14387 = m;
  var G__14388 = n;
  var G__14389 = o;
  var G__14390 = p;
  var G__14391 = q;
  var G__14392 = r;
  var G__14393 = s;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$19(G__14375,G__14376,G__14377,G__14378,G__14379,G__14380,G__14381,G__14382,G__14383,G__14384,G__14385,G__14386,G__14387,G__14388,G__14389,G__14390,G__14391,G__14392,G__14393) : self__.dispatch_fn.call(null,G__14375,G__14376,G__14377,G__14378,G__14379,G__14380,G__14381,G__14382,G__14383,G__14384,G__14385,G__14386,G__14387,G__14388,G__14389,G__14390,G__14391,G__14392,G__14393));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14394 = a;
  var G__14395 = b;
  var G__14396 = c;
  var G__14397 = d;
  var G__14398 = e;
  var G__14399 = f;
  var G__14400 = g;
  var G__14401 = h;
  var G__14402 = i;
  var G__14403 = j;
  var G__14404 = k;
  var G__14405 = l;
  var G__14406 = m;
  var G__14407 = n;
  var G__14408 = o;
  var G__14409 = p;
  var G__14410 = q;
  var G__14411 = r;
  var G__14412 = s;
  return (target_fn.cljs$core$IFn$_invoke$arity$19 ? target_fn.cljs$core$IFn$_invoke$arity$19(G__14394,G__14395,G__14396,G__14397,G__14398,G__14399,G__14400,G__14401,G__14402,G__14403,G__14404,G__14405,G__14406,G__14407,G__14408,G__14409,G__14410,G__14411,G__14412) : target_fn.call(null,G__14394,G__14395,G__14396,G__14397,G__14398,G__14399,G__14400,G__14401,G__14402,G__14403,G__14404,G__14405,G__14406,G__14407,G__14408,G__14409,G__14410,G__14411,G__14412));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$20 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t){
  var self__ = this;
  var mf = this;
  var dispatch_val = (function (){var G__14413 = a;
  var G__14414 = b;
  var G__14415 = c;
  var G__14416 = d;
  var G__14417 = e;
  var G__14418 = f;
  var G__14419 = g;
  var G__14420 = h;
  var G__14421 = i;
  var G__14422 = j;
  var G__14423 = k;
  var G__14424 = l;
  var G__14425 = m;
  var G__14426 = n;
  var G__14427 = o;
  var G__14428 = p;
  var G__14429 = q;
  var G__14430 = r;
  var G__14431 = s;
  var G__14432 = t;
  return (self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20 ? self__.dispatch_fn.cljs$core$IFn$_invoke$arity$20(G__14413,G__14414,G__14415,G__14416,G__14417,G__14418,G__14419,G__14420,G__14421,G__14422,G__14423,G__14424,G__14425,G__14426,G__14427,G__14428,G__14429,G__14430,G__14431,G__14432) : self__.dispatch_fn.call(null,G__14413,G__14414,G__14415,G__14416,G__14417,G__14418,G__14419,G__14420,G__14421,G__14422,G__14423,G__14424,G__14425,G__14426,G__14427,G__14428,G__14429,G__14430,G__14431,G__14432));
  })();
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  var G__14433 = a;
  var G__14434 = b;
  var G__14435 = c;
  var G__14436 = d;
  var G__14437 = e;
  var G__14438 = f;
  var G__14439 = g;
  var G__14440 = h;
  var G__14441 = i;
  var G__14442 = j;
  var G__14443 = k;
  var G__14444 = l;
  var G__14445 = m;
  var G__14446 = n;
  var G__14447 = o;
  var G__14448 = p;
  var G__14449 = q;
  var G__14450 = r;
  var G__14451 = s;
  var G__14452 = t;
  return (target_fn.cljs$core$IFn$_invoke$arity$20 ? target_fn.cljs$core$IFn$_invoke$arity$20(G__14433,G__14434,G__14435,G__14436,G__14437,G__14438,G__14439,G__14440,G__14441,G__14442,G__14443,G__14444,G__14445,G__14446,G__14447,G__14448,G__14449,G__14450,G__14451,G__14452) : target_fn.call(null,G__14433,G__14434,G__14435,G__14436,G__14437,G__14438,G__14439,G__14440,G__14441,G__14442,G__14443,G__14444,G__14445,G__14446,G__14447,G__14448,G__14449,G__14450,G__14451,G__14452));
  });
  
  cljs.core.MultiFn.prototype.cljs$core$IFn$_invoke$arity$21 = (function (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest){
  var self__ = this;
  var mf = this;
  var dispatch_val = cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(self__.dispatch_fn,a,b,c,d,cljs.core.array_seq([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
  var target_fn = mf.cljs$core$IMultiFn$_get_method$arity$2(null,dispatch_val);
  if(cljs.core.truth_(target_fn)){
  } else {
  cljs.core.throw_no_method_error(self__.name,dispatch_val);
  }
  
  return cljs.core.apply.cljs$core$IFn$_invoke$arity$variadic(target_fn,a,b,c,d,cljs.core.array_seq([e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,rest], 0));
  });
  
  cljs.core.MultiFn.cljs$lang$type = true;
  
  cljs.core.MultiFn.cljs$lang$ctorStr = "cljs.core/MultiFn";
  
  cljs.core.MultiFn.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/MultiFn");
  });
  
  cljs.core.__GT_MultiFn = (function __GT_MultiFn(name,dispatch_fn,default_dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy){
  return (new cljs.core.MultiFn(name,dispatch_fn,default_dispatch_val,hierarchy,method_table,prefer_table,method_cache,cached_hierarchy));
  });
  
  /**
  * Removes all of the methods of multimethod.
  */
  cljs.core.remove_all_methods = (function remove_all_methods(multifn){
  return cljs.core._reset(multifn);
  });
  /**
  * Removes the method of multimethod associated with dispatch-value.
  */
  cljs.core.remove_method = (function remove_method(multifn,dispatch_val){
  return cljs.core._remove_method(multifn,dispatch_val);
  });
  /**
  * Causes the multimethod to prefer matches of dispatch-val-x over dispatch-val-y
  * when there is a conflict
  */
  cljs.core.prefer_method = (function prefer_method(multifn,dispatch_val_x,dispatch_val_y){
  return cljs.core._prefer_method(multifn,dispatch_val_x,dispatch_val_y);
  });
  /**
  * Given a multimethod, returns a map of dispatch values -> dispatch fns
  */
  cljs.core.methods$ = (function methods$(multifn){
  return cljs.core._methods(multifn);
  });
  /**
  * Given a multimethod and a dispatch value, returns the dispatch fn
  * that would apply to that value, or nil if none apply and no default
  */
  cljs.core.get_method = (function get_method(multifn,dispatch_val){
  return cljs.core._get_method(multifn,dispatch_val);
  });
  /**
  * Given a multimethod, returns a map of preferred value -> set of other values
  */
  cljs.core.prefers = (function prefers(multifn){
  return cljs.core._prefers(multifn);
  });
  
  /**
  * @constructor
  */
  cljs.core.UUID = (function (uuid){
  this.uuid = uuid;
  this.cljs$lang$protocol_mask$partition1$ = 0;
  this.cljs$lang$protocol_mask$partition0$ = 2153775104;
  })
  cljs.core.UUID.prototype.cljs$core$IHash$_hash$arity$1 = (function (this$){
  var self__ = this;
  var this$__$1 = this;
  var G__14454 = cljs.core.pr_str.cljs$core$IFn$_invoke$arity$variadic(cljs.core.array_seq([this$__$1], 0));
  return goog.string.hashCode(G__14454);
  });
  
  cljs.core.UUID.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (_,writer,___$1){
  var self__ = this;
  var ___$2 = this;
  return cljs.core._write(writer,[cljs.core.str("#uuid \""),cljs.core.str(self__.uuid),cljs.core.str("\"")].join(''));
  });
  
  cljs.core.UUID.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (_,other){
  var self__ = this;
  var ___$1 = this;
  return ((other instanceof cljs.core.UUID)) && ((self__.uuid === other.uuid));
  });
  
  cljs.core.UUID.prototype.toString = (function (){
  var self__ = this;
  var _ = this;
  return self__.uuid;
  });
  
  cljs.core.UUID.prototype.equiv = (function (other){
  var self__ = this;
  var this$ = this;
  return this$.cljs$core$IEquiv$_equiv$arity$2(null,other);
  });
  
  cljs.core.UUID.cljs$lang$type = true;
  
  cljs.core.UUID.cljs$lang$ctorStr = "cljs.core/UUID";
  
  cljs.core.UUID.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/UUID");
  });
  
  cljs.core.__GT_UUID = (function __GT_UUID(uuid){
  return (new cljs.core.UUID(uuid));
  });
  
  
  /**
  * @constructor
  */
  cljs.core.ExceptionInfo = (function (message,data,cause){
  this.message = message;
  this.data = data;
  this.cause = cause;
  })
  
  cljs.core.ExceptionInfo.cljs$lang$type = true;
  
  cljs.core.ExceptionInfo.cljs$lang$ctorStr = "cljs.core/ExceptionInfo";
  
  cljs.core.ExceptionInfo.cljs$lang$ctorPrWriter = (function (this__4395__auto__,writer__4396__auto__,opt__4397__auto__){
  return cljs.core._write(writer__4396__auto__,"cljs.core/ExceptionInfo");
  });
  
  cljs.core.__GT_ExceptionInfo = (function __GT_ExceptionInfo(message,data,cause){
  return (new cljs.core.ExceptionInfo(message,data,cause));
  });
  
  cljs.core.pr_writer_ex_info = (function pr_writer_ex_info(obj,writer,opts){
  cljs.core._write(writer,"#ExceptionInfo{:message ");
  
  cljs.core.pr_writer(obj.message,writer,opts);
  
  if(cljs.core.truth_(obj.data)){
  cljs.core._write(writer,", :data ");
  
  cljs.core.pr_writer(obj.data,writer,opts);
  } else {
  }
  
  if(cljs.core.truth_(obj.cause)){
  cljs.core._write(writer,", :cause ");
  
  cljs.core.pr_writer(obj.cause,writer,opts);
  } else {
  }
  
  return cljs.core._write(writer,"}");
  });
  /**
  * Alpha - subject to change.
  * Create an instance of ExceptionInfo, an Error type that carries a
  * map of additional data.
  */
  cljs.core.ex_info = (function() {
  var ex_info = null;
  var ex_info__2 = (function (msg,data){
  return ex_info.cljs$core$IFn$_invoke$arity$3(msg,data,null);
  });
  var ex_info__3 = (function (msg,data,cause){
  cljs.core.ExceptionInfo.prototype = (function (){var G__14459 = msg;
  return Error(G__14459);
  })();
  
  cljs.core.ExceptionInfo.prototype.name = "ExceptionInfo";
  
  cljs.core.ExceptionInfo.prototype.constructor = cljs.core.ExceptionInfo;
  
  cljs.core.ExceptionInfo.prototype.toString = cljs.core.pr_str_STAR_;
  
  cljs.core.ExceptionInfo.prototype.cljs$core$IPrintWithWriter$ = true;
  
  cljs.core.ExceptionInfo.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (obj,writer,opts){
  var obj__$1 = this;
  return cljs.core.pr_writer_ex_info(obj__$1,writer,opts);
  });
  
  return (new cljs.core.ExceptionInfo(msg,data,cause));
  });
  ex_info = function(msg,data,cause){
  switch(arguments.length){
  case 2:
  return ex_info__2.call(this,msg,data);
  case 3:
  return ex_info__3.call(this,msg,data,cause);
  }
  throw(new Error('Invalid arity: ' + arguments.length));
  };
  ex_info.cljs$core$IFn$_invoke$arity$2 = ex_info__2;
  ex_info.cljs$core$IFn$_invoke$arity$3 = ex_info__3;
  return ex_info;
  })()
  ;
  /**
  * Alpha - subject to change.
  * Returns exception data (a map) if ex is an ExceptionInfo.
  * Otherwise returns nil.
  */
  cljs.core.ex_data = (function ex_data(ex){
  if((ex instanceof cljs.core.ExceptionInfo)){
  return ex.data;
  } else {
  return null;
  }
  });
  /**
  * Alpha - subject to change.
  * Returns the message attached to the given Error / ExceptionInfo object.
  * For non-Errors returns nil.
  */
  cljs.core.ex_message = (function ex_message(ex){
  if((ex instanceof Error)){
  return ex.message;
  } else {
  return null;
  }
  });
  /**
  * Alpha - subject to change.
  * Returns exception cause (an Error / ExceptionInfo) if ex is an
  * ExceptionInfo.
  * Otherwise returns nil.
  */
  cljs.core.ex_cause = (function ex_cause(ex){
  if((ex instanceof cljs.core.ExceptionInfo)){
  return ex.cause;
  } else {
  return null;
  }
  });
  /**
  * Returns an JavaScript compatible comparator based upon pred.
  */
  cljs.core.comparator = (function comparator(pred){
  return (function (x,y){
  if(cljs.core.truth_((function (){var G__14464 = x;
  var G__14465 = y;
  return (pred.cljs$core$IFn$_invoke$arity$2 ? pred.cljs$core$IFn$_invoke$arity$2(G__14464,G__14465) : pred.call(null,G__14464,G__14465));
  })())){
  return (-1);
  } else {
  if(cljs.core.truth_((function (){var G__14466 = y;
  var G__14467 = x;
  return (pred.cljs$core$IFn$_invoke$arity$2 ? pred.cljs$core$IFn$_invoke$arity$2(G__14466,G__14467) : pred.call(null,G__14466,G__14467));
  })())){
  return (1);
  } else {
  return (0);
  
  }
  }
  });
  });
  cljs.core.special_symbol_QMARK_ = (function special_symbol_QMARK_(x){
  return cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 19, [new cljs.core.Symbol(null,"&","&",-2144855648,null),null,new cljs.core.Symbol(null,"defrecord*","defrecord*",-1936366207,null),null,new cljs.core.Symbol(null,"try","try",-1273693247,null),null,new cljs.core.Symbol(null,"loop*","loop*",615029416,null),null,new cljs.core.Symbol(null,"do","do",1686842252,null),null,new cljs.core.Symbol(null,"letfn*","letfn*",-110097810,null),null,new cljs.core.Symbol(null,"if","if",1181717262,null),null,new cljs.core.Symbol(null,"new","new",-444906321,null),null,new cljs.core.Symbol(null,"ns","ns",2082130287,null),null,new cljs.core.Symbol(null,"deftype*","deftype*",962659890,null),null,new cljs.core.Symbol(null,"let*","let*",1920721458,null),null,new cljs.core.Symbol(null,"js*","js*",-1134233646,null),null,new cljs.core.Symbol(null,"fn*","fn*",-752876845,null),null,new cljs.core.Symbol(null,"recur","recur",1202958259,null),null,new cljs.core.Symbol(null,"set!","set!",250714521,null),null,new cljs.core.Symbol(null,".",".",1975675962,null),null,new cljs.core.Symbol(null,"quote","quote",1377916282,null),null,new cljs.core.Symbol(null,"throw","throw",595905694,null),null,new cljs.core.Symbol(null,"def","def",597100991,null),null], null), null),x);
  });
  /**
  * test [v] finds fn at key :test in var metadata and calls it,
  * presuming failure will throw exception
  */
  cljs.core.test = (function test(v){
  var f = v.cljs$lang$test;
  if(cljs.core.truth_(f)){
  (f.cljs$core$IFn$_invoke$arity$0 ? f.cljs$core$IFn$_invoke$arity$0() : f.call(null));
  
  return new cljs.core.Keyword(null,"ok","ok",967785236);
  } else {
  return new cljs.core.Keyword(null,"no-test","no-test",-1679482642);
  }
  });
  