/*!
 * Lo-Dash 1.0.0-rc.3 <http://lodash.com>
 * (c) 2012 John-David Dalton <http://allyoucanleet.com/>
 * Based on Underscore.js 1.4.3 <http://underscorejs.org>
 * (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
 * Available under MIT license <http://lodash.com/license>
 */
var velir;(function(n,t){function i(n){if(n&&typeof n=="object"&&n.__wrapped__)return n;if(!(this instanceof i))return new i(n);this.__wrapped__=n}function wi(n,t,i){var o,s,r,f,e;if(t||(t=0),o=n.length,s=o-t>=(i||tf),s)for(r={},f=t-1;++f<o;)e=n[f]+"",(u.call(r,e)?r[e]:r[e]=[]).push(n[f]);return function(i){if(s){var f=i+"";return u.call(r,f)&&nt(r[f],i)>-1}return nt(n,i,t)>-1}}function nu(n){return n.charCodeAt(0)}function ne(n,t){var i=n.index,r=t.index;if(n=n.criteria,t=t.criteria,n!==t){if(n>t||typeof n=="undefined")return 1;if(n<t||typeof t=="undefined")return-1}return i<r?-1:1}function bi(n,t,i){function f(){var s=arguments,h=u?this:t,c;return(r||(n=t[o]),i.length&&(s=s.length?i.concat(e(s)):i),this instanceof f)?(ki.prototype=n.prototype,h=new ki,ki.prototype=null,c=n.apply(h,s),ri(c)?c:h):n.apply(h,s)}var r=v(n),u=!i,o=t;return u&&(i=t),r||(t=n),f}function r(n,t,i){return n?typeof n!="function"?function(t){return t[n]}:typeof t!="undefined"?i?function(i,r,u,f){return n.call(t,i,r,u,f)}:function(i,r,u){return n.call(t,i,r,u)}:n:er}function lt(){for(var n={arrayLoop:"",bottom:"",hasDontEnumBug:vr,isKeysFast:gf,objectLoop:"",nonEnumArgs:pr,noCharByIndex:ai,shadowed:yf,top:"",useHas:!0},t,f,e,o,i=0;t=arguments[i];i++)for(f in t)n[f]=t[f];return e=n.args,n.firstArg=/^[^,]+/.exec(e)[0],o=Function("createCallback, hasOwnProperty, isArguments, isString, objectTypes, nativeKeys, propertyIsEnumerable","return function("+e+") {\n"+dr(n)+"\n}"),o(r,u,p,g,vi,it,hr)}function te(n){return"\\"+kr[n]}function ie(n){return di[n]}function gt(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}function ki(){}function e(n,t,i){t||(t=0),typeof i=="undefined"&&(i=n?n.length:0);for(var r=-1,u=i-t||0,f=Array(u<0?0:u);++r<u;)f[r]=n[t+r];return f}function re(n){return ru[n]}function p(n){return s.call(n)==ft}function tu(n){var t=!1,i;return!(n&&typeof n=="object")||p(n)?t:(i=n.constructor,!v(i)&&(!dt||!gt(n))||i instanceof i)?yr?(w(n,function(n,i,r){return t=!u.call(r,i),!1}),t===!1):(w(n,function(n,i){t=i}),t===!1||u.call(n,t)):t}function iu(n){var t=[];return l(n,function(n,i){t.push(i)}),t}function gi(n,t,i,r,f){var w,b,v,p,k,h;if(n==null)return n;if(i&&(t=!1),w=ri(n),w){if(b=s.call(n),!c[b]||dt&&gt(n))return n;v=o(n)}if(!w||!t)return w?v?e(n):ni({},n):n;p=y[b];switch(b){case ot:case st:return new p(+n);case ht:case rt:return new p(n);case ct:return p(n.source,hf.exec(n))}for(r||(r=[]),f||(f=[]),k=r.length;k--;)if(r[k]==n)return f[k];return h=v?p(n.length):{},r.push(n),f.push(h),(v?a:l)(n,function(n,i){h[i]=gi(n,t,null,r,f)}),v&&(u.call(n,"index")&&(h.index=n.index),u.call(n,"input")&&(h.input=n.input)),h}function ue(n){return gi(n,!0)}function ti(n){var t=[];return w(n,function(n,i){v(n)&&t.push(i)}),t.sort()}function fe(n,t){return n?u.call(n,t):!1}function fu(n){var t={};return l(n,function(n,i){t[n]=i}),t}function ee(n){return n===!0||n===!1||s.call(n)==ot}function oe(n){return n instanceof Date||s.call(n)==st}function se(n){return n?n.nodeType===1:!1}function he(n){var i=!0,t,r;return n?(t=s.call(n),r=n.length,t==et||t==rt||t==ft||wr&&p(n)||t==d&&typeof r=="number"&&v(n.splice))?!r:(l(n,function(){return i=!1}),i):i}function ii(n,t,i,r){var e,l,y,h,c,a;if(n===t)return n!==0||1/n==1/t;if(n==null||t==null)return n===t;if(e=s.call(n),l=s.call(t),e==ft&&(e=d),l==ft&&(l=d),e!=l)return!1;switch(e){case ot:case st:return+n==+t;case ht:return n!=+n?t!=+t:n==0?1/n==1/t:n==+t;case ct:case rt:return n==t+""}if(y=e==et,!y){if(n.__wrapped__||t.__wrapped__)return ii(n.__wrapped__||n,t.__wrapped__||t);if(e!=d||dt&&(gt(n)||gt(t))||(h=!li&&p(n)?Object:n.constructor,c=!li&&p(t)?Object:t.constructor,h!=c&&!(v(h)&&h instanceof h&&v(c)&&c instanceof c)))return!1}for(i||(i=[]),r||(r=[]),a=i.length;a--;)if(i[a]==n)return r[a]==t;var f=!0,o=0;if(i.push(n),r.push(t),y){if(o=n.length,f=o==t.length,f)while(o--)if(!(f=ii(n[o],t[o],i,r)))break;return f}return w(n,function(n,e,s){if(u.call(s,e))return o++,f=u.call(t,e)&&ii(n,t[e],i,r)}),f&&w(t,function(n,t,i){if(u.call(i,t))return f=--o>-1}),f}function ce(n){return bf(n)&&!kf(parseFloat(n))}function v(n){return typeof n=="function"}function ri(n){return n?vi[typeof n]:!1}function le(n){return eu(n)&&n!=+n}function ae(n){return n===null}function eu(n){return typeof n=="number"||s.call(n)==ht}function ve(n){return n instanceof RegExp||s.call(n)==ct}function g(n){return typeof n=="string"||s.call(n)==rt}function ye(n){return typeof n=="undefined"}function ou(n,t,i){var u=arguments,e=0,s=2,r=u[3],f=u[4];for(i!==vt&&(r=[],f=[],typeof i!="number"&&(s=u.length));++e<s;)l(u[e],function(t,i){var s,h,u,e;if(t&&((h=o(t))||ui(t))){for(e=r.length;e--;)if(s=r[e]==t,s)break;s?n[i]=f[e]:(r.push(t),f.push(u=(u=n[i],h)?o(u)?u:[]:ui(u)?u:{}),n[i]=ou(u,t,vt,r,f))}else t!=null&&(n[i]=t)});return n}function pe(n,t,i){var u=typeof t=="function",f={},e;return u?t=r(t,i):e=wt.apply(h,arguments),w(n,function(n,i,r){(u?!t(n,i,r):nt(e,i,1)<0)&&(f[i]=n)}),f}function we(n){var t=[];return l(n,function(n,i){t.push([i,n])}),t}function be(n,t,i){var f={},u;if(typeof t!="function")for(var e=0,o=wt.apply(h,arguments),s=o.length;++e<s;)u=o[e],u in n&&(f[u]=n[u]);else t=r(t,i),w(n,function(n,i,r){t(n,i,r)&&(f[i]=n)});return f}function su(n){var t=[];return l(n,function(n){t.push(n)}),t}function hu(n,t,i){var e=-1,u=n?n.length:0,r=!1;return i=(i<0?k(0,u+i):i)||0,typeof u=="number"?r=(g(n)?n.indexOf(t,i):nt(n,t,i))>-1:f(n,function(n){if(++e>=i)return!(r=n===t)}),r}function ke(n,t,i){var f={};return t=r(t,i),a(n,function(n,i,r){i=t(n,i,r),u.call(f,i)?f[i]++:f[i]=1}),f}function cu(n,t,i){var e=!0,u,s;if(t=r(t,i),o(n)){for(u=-1,s=n.length;++u<s;)if(!(e=!!t(n[u],u,n)))break}else f(n,function(n,i,r){return e=!!t(n,i,r)});return e}function fi(n,t,i){var e=[],u,h,s;if(t=r(t,i),o(n))for(u=-1,h=n.length;++u<h;)s=n[u],t(s,u,n)&&e.push(s);else f(n,function(n,i,r){t(n,i,r)&&e.push(n)});return e}function lu(n,t,i){var u;return t=r(t,i),a(n,function(n,i,r){if(t(n,i,r))return u=n,!1}),u}function a(n,t,i){if(t&&typeof i=="undefined"&&o(n)){for(var r=-1,u=n.length;++r<u;)if(t(n[r],r,n)===!1)break}else f(n,t,i);return n}function de(n,t,i){var f={};return t=r(t,i),a(n,function(n,i,r){i=t(n,i,r),(u.call(f,i)?f[i]:f[i]=[]).push(n)}),f}function ge(n,t){var r=e(arguments,2),u=typeof t=="function",i=[];return a(n,function(n){i.push((u?t:n[t]).apply(n,r))}),i}function nr(n,t,i){var u=-1,e=n?n.length:0,s=Array(typeof e=="number"?e:0);if(t=r(t,i),o(n))while(++u<e)s[u]=t(n[u],u,n);else f(n,function(n,i,r){s[++u]=t(n,i,r)});return s}function au(n,t,i){var e=-Infinity,s=-1,h=n?n.length:0,u=e;if(t||!o(n))t=!t&&g(n)?nu:r(t,i),f(n,function(n,i,r){var f=t(n,i,r);f>e&&(e=f,u=n)});else while(++s<h)n[s]>u&&(u=n[s]);return u}function no(n,t,i){var e=Infinity,s=-1,h=n?n.length:0,u=e;if(t||!o(n))t=!t&&g(n)?nu:r(t,i),f(n,function(n,i,r){var f=t(n,i,r);f<e&&(e=f,u=n)});else while(++s<h)n[s]<u&&(u=n[s]);return u}function tr(n,t){return nr(n,t+"")}function ir(n,t,i,u){var s=arguments.length<3,e,h;if(t=r(t,u,vt),o(n))for(e=-1,h=n.length,s&&(i=n[++e]);++e<h;)i=t(i,n[e],e,n);else f(n,function(n,r,u){i=s?(s=!1,n):t(i,n,r,u)});return i}function vu(n,t,i,u){var o=n,f=n?n.length:0,s=arguments.length<3,e;return typeof f!="number"?(e=at(n),f=e.length):ai&&g(n)&&(o=n.split("")),t=r(t,u,vt),a(n,function(n,r,u){r=e?e[--f]:--f,i=s?(s=!1,o[r]):t(i,o[r],r,u)}),i}function to(n,t,i){return t=r(t,i),fi(n,function(n,i,r){return!t(n,i,r)})}function io(n){var i=-1,t=Array(n?n.length:0);return a(n,function(n){var r=sr(cr()*(++i+1));t[i]=t[r],t[r]=n}),t}function ro(n){var t=n?n.length:0;return typeof t=="number"?t:at(n).length}function yu(n,t,i){var e,u,s;if(t=r(t,i),o(n)){for(u=-1,s=n.length;++u<s;)if(e=t(n[u],u,n))break}else f(n,function(n,i,r){return!(e=t(n,i,r))});return!!e}function uo(n,t,i){var u=[],f;for(t=r(t,i),a(n,function(n,i,r){u.push({criteria:t(n,i,r),index:i,value:n})}),f=u.length,u.sort(ne);f--;)u[f]=u[f].value;return u}function fo(n){var t=n?n.length:0;return typeof t=="number"?ai&&g(n)?n.split(""):e(n):su(n)}function eo(n,t){var i=at(t);return fi(n,function(n){for(var r=i.length,u;r--;)if(u=n[i[r]]===t[i[r]],!u)break;return!!u})}function oo(n){for(var i=-1,u=n?n.length:0,r=[],t;++i<u;)t=n[i],t&&r.push(t);return r}function so(n){for(var i=-1,r=n?n.length:0,f=wt.apply(h,arguments),e=wi(f,r),u=[],t;++i<r;)t=n[i],e(t)||u.push(t);return u}function rr(n,t,i){if(n){var r=n.length;return t==null||i?n[0]:e(n,0,hi(k(0,t),r))}}function pu(n,t){for(var u=-1,f=n?n.length:0,r=[],i;++u<f;)i=n[u],o(i)?bt.apply(r,t?i:pu(i)):r.push(i);return r}function nt(n,t,i){var r=-1,u=n?n.length:0;if(typeof i=="number")r=(i<0?k(0,u+i):i||0)-1;else if(i)return r=wu(n,t),n[r]===t?r:-1;while(++r<u)if(n[r]===t)return r;return-1}function ho(n,t,i){if(!n)return[];var r=n.length;return t=t==null||i?1:t||0,e(n,0,hi(k(0,r-t),r))}function co(n){var s=arguments,v=s.length,i={"0":{}},h=-1,c=n?n.length:0,l=c>=100,o=[],f=o,t,e,a,r;n:while(++h<c)if(t=n[h],l&&(e=t+"",a=u.call(i[0],e)?!(f=i[0][e]):f=i[0][e]=[]),a||nt(f,t)<0){for(l&&f.push(t),r=v;--r;)if(!(i[r]||(i[r]=wi(s[r],0,100)))(t))continue n;o.push(t)}return o}function lo(n,t,i){if(n){var r=n.length;return t==null||i?n[r-1]:e(n,k(0,r-t))}}function ao(n,t,i){var r=n?n.length:0;for(typeof i=="number"&&(r=(i<0?k(0,r+i):hi(i,r-1))+1);r--;)if(n[r]===t)return r;return-1}function vo(n,t){for(var r=-1,f=n?n.length:0,u={},i;++r<f;)i=n[r],t?u[i]=t[r]:u[i[0]]=i[1];return u}function yo(n,t,i){n=+n||0,i=+i||1,t==null&&(t=n,n=0);for(var r=-1,u=k(0,wf((t-n)/i)),f=Array(u);++r<u;)f[r]=n,n+=i;return f}function ur(n,t,i){return e(n,t==null||i?1:k(0,t))}function wu(n,t,i,u){var f=0,o=n?n.length:f,e;for(i=i?r(i,u):er,t=i(t);f<o;)e=f+o>>>1,i(n[e])<t?f=e+1:o=e;return f}function po(){return fr(wt.apply(h,arguments))}function fr(n,t,i,f){var s=-1,y=n?n.length:0,v=[],e=v,h,c,l,o,a,p;for(typeof t=="function"&&(f=i,i=t,t=!1),h=!t&&y>=75,h&&(c={}),i&&(e=[],i=r(i,f));++s<y;)l=n[s],o=i?i(l,s,n):l,h&&(a=o+"",p=u.call(c,a)?!(e=c[a]):e=c[a]=[]),(t?!s||e[e.length-1]!==o:p||nt(e,o)<0)&&((i||h)&&e.push(o),v.push(l));return v}function wo(n){for(var i=-1,u=n?n.length:0,f=wi(arguments,1,20),r=[],t;++i<u;)t=n[i],f(t)||r.push(t);return r}function bo(n){for(var t=-1,i=n?au(tr(arguments,"length")):0,r=Array(i);++t<i;)r[t]=tr(arguments,t);return r}function ko(n,t){return n<1?t():function(){if(--n<1)return t.apply(this,arguments)}}function bu(n,t){return df||b&&arguments.length>2?b.call.apply(b,arguments):bi(n,t,e(arguments,2))}function go(n){for(var t=arguments,r=t.length>1?0:(t=ti(n),-1),u=t.length,i;++r<u;)i=t[r],n[i]=bu(n[i],n);return n}function ns(n,t){return bi(n,t,e(arguments,2))}function ts(){var n=arguments;return function(){for(var t=arguments,i=n.length;i--;)t=[n[i].apply(this,t)];return t[0]}}function is(n,t,i){function o(){r=null,i||(f=n.apply(e,u))}var u,f,e,r;return function(){var s=i&&!r;return u=arguments,e=this,clearTimeout(r),r=setTimeout(o,t),s&&(f=n.apply(e,u)),f}}function rs(n,i){var r=e(arguments,2);return setTimeout(function(){n.apply(t,r)},i)}function us(n){var i=e(arguments,1);return setTimeout(function(){n.apply(t,i)},1)}function fs(n,t){var i={};return function(){var r=t?t.apply(this,arguments):arguments[0];return u.call(i,r)?i[r]:i[r]=n.apply(this,arguments)}}function es(n){var t,i=!1;return function(){return i?t:(i=!0,t=n.apply(this,arguments),n=null,t)}}function os(n){return bi(n,e(arguments,1))}function ss(n,t){function o(){e=new Date,i=null,u=n.apply(f,r)}var r,u,f,i,e=0;return function(){var s=new Date,h=t-(s-e);return r=arguments,f=this,h<=0?(clearTimeout(i),i=null,e=s,u=n.apply(f,r)):i||(i=setTimeout(o,h)),u}}function hs(n,t){return function(){var i=[n];return bt.apply(i,arguments),t.apply(this,i)}}function cs(n){return n==null?"":(n+"").replace(af,ie)}function er(n){return n}function ku(n){a(ti(n),function(t){var r=i[t]=n[t];i.prototype[t]=function(){var n=[this.__wrapped__],t;return bt.apply(n,arguments),t=r.apply(i,n),new i(t)}})}function ls(){return n._=rf,this}function as(n,t){return n==null&&t==null&&(t=1),n=+n||0,t==null&&(t=n,n=0),n+sr(cr()*((+t||0)-n+1))}function vs(n,t){var i=n?n[t]:null;return v(i)?n[t]():i}function du(n,t,r){var a,v;n||(n=""),r||(r={});var e,o,s=i.templateSettings,c=0,l=r.interpolate||s.interpolate||pt,u="__p += '",f=r.variable||s.variable,h=f,p=RegExp((r.escape||s.escape||pt).source+"|"+l.source+"|"+(l===or?lf:pt).source+"|"+(r.evaluate||s.evaluate||pt).source+"|$","g");n.replace(p,function(t,i,r,f,o,s){return r||(r=f),u+=n.slice(c,s).replace(vf,te),i&&(u+="' +\n__e("+i+") +\n'"),o&&(u+="';\n"+o+";\n__p += '"),r&&(u+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),e||(e=o||uf.test(i||r)),c=s+t.length,t}),u+="';\n",h||(f="obj",e?u="with ("+f+") {\n"+u+"\n}\n":(a=RegExp("(\\(\\s*)"+f+"\\."+f+"\\b","g"),u=u.replace(cf,"$&"+f+".").replace(a,"$1__d"))),u=(e?u.replace(ef,""):u).replace(of,"$1").replace(sf,"$1;"),u="function("+f+") {\n"+(h?"":f+" || ("+f+" = {});\n")+"var __t, __p = '', __e = _.escape"+(e?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":(h?"":", __d = "+f+"."+f+" || "+f)+";\n")+u+"return __p\n}",v=br?"\n//@ sourceURL="+(r.sourceURL||"/lodash/template/source["+pf+++"]"):"";try{o=Function("_","return "+u+v)(i)}catch(y){y.source=u;throw y;}return t?o(t):(o.source=u,o)}function ys(n,t,i){n=+n||0;for(var r=-1,u=Array(n);++r<n;)u[r]=t.call(i,r);return u}function ps(n){return n==null?"":(n+"").replace(ff,re)}function ws(n){return(n==null?"":n+"")+ ++nf}function bs(n,t){return t(n),n}function ks(){return this.__wrapped__+""}function gu(){return this.__wrapped__}var ei=typeof exports=="object"&&exports,oi=typeof global=="object"&&global,dt,br,c,y,vi,kr,f,ni,w,l,di,ru,uu,o,ui,at;oi.global===oi&&(n=oi);var h=[],ut=new function(){},nf=0,vt=ut,tf=30,rf=n._,uf=/[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,ff=/&(?:amp|lt|gt|quot|#x27);/g,ef=/\b__p \+= '';/g,of=/\b(__p \+=) '' \+/g,sf=/(__e\(.*?\)|\b__t\)) \+\n'';/g,hf=/\w*$/,cf=/(?:__e|__t = )\(\s*(?![\d\s"']|this\.)/g,yt=RegExp("^"+(ut.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),lf=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,or=/<%=([\s\S]+?)%>/g,pt=/($^)/,af=/[&<>"']/g,vf=/['\n\r\t\u2028\u2029\\]/g,yf=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],pf=0,wf=Math.ceil,wt=h.concat,sr=Math.floor,tt=yt.test(tt=Object.getPrototypeOf)&&tt,u=ut.hasOwnProperty,bt=h.push,hr=ut.propertyIsEnumerable,s=ut.toString,b=yt.test(b=e.bind)&&b,si=yt.test(si=Array.isArray)&&si,bf=n.isFinite,kf=n.isNaN,it=yt.test(it=Object.keys)&&it,k=Math.max,hi=Math.min,cr=Math.random,ft="[object Arguments]",et="[object Array]",ot="[object Boolean]",st="[object Date]",lr="[object Function]",ht="[object Number]",d="[object Object]",ct="[object RegExp]",rt="[object String]",ci=!!n.attachEvent,ar=b&&!/\n|true/.test(b+ci),df=b&&!ar,gf=it&&(ci||ar),vr,yr,kt=(kt={"0":1,length:1},h.splice.call(kt,0,1),kt[0]),pr=!0;(function(){function i(){this.x=1}var t=[],n;i.prototype={valueOf:1,y:1};for(n in new i)t.push(n);for(n in arguments)pr=!n;vr=!/valueOf/.test(t),yr=t[0]!="x"})(1);var li=arguments.constructor==Object,wr=!p(arguments),ai="x"[0]+Object("x")[0]!="xx";try{dt=({toString:0}+"",s.call(document)==d)}catch(ds){}try{br=(Function("//@")(),!ci)}catch(ds){}c={},c[lr]=!1,c[ft]=c[et]=c[ot]=c[st]=c[ht]=c[d]=c[ct]=c[rt]=!0,y={},y[et]=Array,y[ot]=Boolean,y[st]=Date,y[d]=Object,y[ht]=Number,y[ct]=RegExp,y[rt]=String,vi={boolean:!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},kr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},i.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:or,variable:""};var dr=du("<% if (obj.useStrict) { %>'use strict';\n<% } %>"+"var index, iteratee = <%= firstArg %>, "+"result = <%= firstArg %>;\n"+"if (!<%= firstArg %>) return result;\n"+"<%= top %>;\n"+"<% if (arrayLoop) { %>"+"var length = iteratee.length; index = -1;\nif (typeof length == 'number') {"+"  <% if (noCharByIndex) { %>\n"+"  if (isString(iteratee)) {\n    iteratee = iteratee.split('')\n  }"+"  <% } %>\n"+"  while (++index < length) {\n"+"    <%= arrayLoop %>\n"+"  }\n}\nelse {"+"  <%  } else if (nonEnumArgs) { %>\n"+"  var length = iteratee.length; index = -1;\n  if (length && isArguments(iteratee)) {\n    while (++index < length) {\n      index += '';\n"+"      <%= objectLoop %>\n"+"    }\n  } else {"+"  <% } %>"+"  <% if (!hasDontEnumBug) { %>\n"+"  var skipProto = typeof iteratee == 'function' && \n    propertyIsEnumerable.call(iteratee, 'prototype');\n"+"  <% } %>"+"  <% if (isKeysFast && useHas) { %>\n"+"  var ownIndex = -1,\n      ownProps = objectTypes[typeof iteratee] ? nativeKeys(iteratee) : [],\n      length = ownProps.length;\n\n  while (++ownIndex < length) {\n    index = ownProps[ownIndex];\n"+"    <% if (!hasDontEnumBug) { %>if (!(skipProto && index == 'prototype')) {\n  <% } %>"+"    <%= objectLoop %>\n"+"    <% if (!hasDontEnumBug) { %>}\n<% } %>"+"  }"+"  <% } else { %>\n"+"  for (index in iteratee) {<%    if (!hasDontEnumBug || useHas) { %>\n    if (<%"+"      if (!hasDontEnumBug) { %>!(skipProto && index == 'prototype')<% }      if (!hasDontEnumBug && useHas) { %> && <% }"+"      if (useHas) { %>hasOwnProperty.call(iteratee, index)<% }    %>) {"+"    <% } %>\n"+"    <%= objectLoop %>;"+"    <% if (!hasDontEnumBug || useHas) { %>\n    }<% } %>\n"+"  }"+"  <% } %>"+"  <% if (hasDontEnumBug) { %>\n\n"+"  var ctor = iteratee.constructor;\n"+"    <% for (var k = 0; k < 7; k++) { %>\n"+"  index = '<%= shadowed[k] %>';\n"+"  if (<%      if (shadowed[k] == 'constructor') {        %>!(ctor && ctor.prototype === iteratee) && <%"+"      } %>hasOwnProperty.call(iteratee, index)) {\n"+"    <%= objectLoop %>\n"+"  }"+"    <% } %>"+"  <% } %>"+"  <% if (arrayLoop || nonEnumArgs) { %>\n}<% } %>\n"+"<%= bottom %>;\n"+"return result"),yi={args:"object, source, guard",top:"for (var argsIndex = 1, argsLength = typeof guard == 'number' ? 2 : arguments.length; argsIndex < argsLength; argsIndex++) {\n  if ((iteratee = arguments[argsIndex])) {",objectLoop:"result[index] = iteratee[index]",bottom:"  }\n}"},pi={args:"collection, callback, thisArg",top:"callback = callback && typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg)",arrayLoop:"if (callback(iteratee[index], index, collection) === false) return result",objectLoop:"if (callback(iteratee[index], index, collection) === false) return result"},gr={arrayLoop:null};f=lt(pi),ni=lt(yi),wr&&(p=function(n){return n?u.call(n,"callee"):!1}),w=lt(pi,gr,{useHas:!1}),l=lt(pi,gr),di={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},ru=fu(di),uu=lt(yi,{objectLoop:"if (result[index] == null) "+yi.objectLoop}),o=si||function(n){return li&&n instanceof Array||s.call(n)==et},v(/x/)&&(v=function(n){return n instanceof Function||s.call(n)==lr}),ui=tt?function(n){if(!(n&&typeof n=="object"))return!1;var i=n.valueOf,t=typeof i=="function"&&(t=tt(i))&&tt(t);return t?n==t||tt(n)==t&&!p(n):tu(n)}:tu,at=it?function(n){return typeof n=="function"&&hr.call(n,"prototype")?iu(n):ri(n)?it(n):[]}:iu,i.after=ko,i.assign=ni,i.bind=bu,i.bindAll=go,i.bindKey=ns,i.compact=oo,i.compose=ts,i.countBy=ke,i.debounce=is,i.defaults=uu,i.defer=us,i.delay=rs,i.difference=so,i.filter=fi,i.flatten=pu,i.forEach=a,i.forIn=w,i.forOwn=l,i.functions=ti,i.groupBy=de,i.initial=ho,i.intersection=co,i.invert=fu,i.invoke=ge,i.keys=at,i.map=nr,i.max=au,i.memoize=fs,i.merge=ou,i.min=no,i.object=vo,i.omit=pe,i.once=es,i.pairs=we,i.partial=os,i.pick=be,i.pluck=tr,i.range=yo,i.reject=to,i.rest=ur,i.shuffle=io,i.sortBy=uo,i.tap=bs,i.throttle=ss,i.times=ys,i.toArray=fo,i.union=po,i.uniq=fr,i.values=su,i.where=eo,i.without=wo,i.wrap=hs,i.zip=bo,i.collect=nr,i.drop=ur,i.each=a,i.extend=ni,i.methods=ti,i.select=fi,i.tail=ur,i.unique=fr,ku(i),i.clone=gi,i.cloneDeep=ue,i.contains=hu,i.escape=cs,i.every=cu,i.find=lu,i.has=fe,i.identity=er,i.indexOf=nt,i.isArguments=p,i.isArray=o,i.isBoolean=ee,i.isDate=oe,i.isElement=se,i.isEmpty=he,i.isEqual=ii,i.isFinite=ce,i.isFunction=v,i.isNaN=le,i.isNull=ae,i.isNumber=eu,i.isObject=ri,i.isPlainObject=ui,i.isRegExp=ve,i.isString=g,i.isUndefined=ye,i.lastIndexOf=ao,i.mixin=ku,i.noConflict=ls,i.random=as,i.reduce=ir,i.reduceRight=vu,i.result=vs,i.size=ro,i.some=yu,i.sortedIndex=wu,i.template=du,i.unescape=ps,i.uniqueId=ws,i.all=cu,i.any=yu,i.detect=lu,i.foldl=ir,i.foldr=vu,i.include=hu,i.inject=ir,l(i,function(n,t){i.prototype[t]||(i.prototype[t]=function(){var t=[this.__wrapped__];return bt.apply(t,arguments),n.apply(i,t)})}),i.first=rr,i.last=lo,i.take=rr,i.head=rr,l(i,function(n,t){i.prototype[t]||(i.prototype[t]=function(t,r){var u=n(this.__wrapped__,t,r);return t==null||r?u:new i(u)})}),i.VERSION="1.0.0-rc.3",i.prototype.toString=ks,i.prototype.value=gu,i.prototype.valueOf=gu,f(["join","pop","shift"],function(n){var t=h[n];i.prototype[n]=function(){return t.apply(this.__wrapped__,arguments)}}),f(["push","reverse","sort","unshift"],function(n){var t=h[n];i.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),f(["concat","slice","splice"],function(n){var t=h[n];i.prototype[n]=function(){var n=t.apply(this.__wrapped__,arguments);return new i(n)}}),kt&&f(["pop","shift","splice"],function(n){var t=h[n],r=n=="splice";i.prototype[n]=function(){var n=this.__wrapped__,u=t.apply(n,arguments);return n.length===0&&delete n[0],r?new i(u):u}}),i._each=f,i._iteratorTemplate=dr,typeof define=="function"&&typeof define.amd=="object"&&define.amd?(n._=i,define(function(){return i})):ei?typeof module=="object"&&module&&module.exports==ei?(module.exports=i)._=i:ei._=i:n._=i})(this),function(){var u=this,g=u.Backbone,s=[],nt=s.push,c=s.slice,tt=s.splice,t,n,f,e,v,y,k,d,h;t=typeof exports!="undefined"?exports:u.Backbone={},t.VERSION="0.9.10",n=u._,n||typeof require=="undefined"||(n=require("underscore")),t.$=u.jQuery||u.Zepto||u.ender,t.noConflict=function(){return u.Backbone=g,this},t.emulateHTTP=!1,t.emulateJSON=!1;var l=/\s+/,o=function(n,t,i,r){var f,e,u,o;if(!i)return!0;if(typeof i=="object")for(f in i)n[t].apply(n,[f,i[f]].concat(r));else if(l.test(i))for(e=i.split(l),u=0,o=e.length;u<o;u++)n[t].apply(n,[e[u]].concat(r));else return!0},a=function(n,t){var i,r=-1,u=n.length;switch(t.length){case 0:while(++r<u)(i=n[r]).callback.call(i.ctx);return;case 1:while(++r<u)(i=n[r]).callback.call(i.ctx,t[0]);return;case 2:while(++r<u)(i=n[r]).callback.call(i.ctx,t[0],t[1]);return;case 3:while(++r<u)(i=n[r]).callback.call(i.ctx,t[0],t[1],t[2]);return;default:while(++r<u)(i=n[r]).callback.apply(i.ctx,t)}},i=t.Events={on:function(n,t,i){if(!(o(this,"on",n,[t,i])&&t))return this;this._events||(this._events={});var r=this._events[n]||(this._events[n]=[]);return r.push({callback:t,context:i,ctx:i||this}),this},once:function(t,i,r){if(!(o(this,"once",t,[i,r])&&i))return this;var f=this,u=n.once(function(){f.off(t,u),i.apply(this,arguments)});u._callback=i;this.on(t,u,r);return this},off:function(t,i,r){var s,u,h,c,f,l,e,a;if(!this._events||!o(this,"off",t,[i,r]))return this;if(!t&&!i&&!r)return this._events={},this;for(c=t?[t]:n.keys(this._events),f=0,l=c.length;f<l;f++)if(t=c[f],s=this._events[t]){if(h=[],i||r)for(e=0,a=s.length;e<a;e++)u=s[e],(i&&i!==u.callback&&i!==u.callback._callback||r&&r!==u.context)&&h.push(u);this._events[t]=h}return this},trigger:function(n){var t,i,r;return this._events?(t=c.call(arguments,1),!o(this,"trigger",n,t))?this:(i=this._events[n],r=this._events.all,i&&a(i,t),r&&a(r,arguments),this):this},listenTo:function(t,i,r){var u=this._listeners||(this._listeners={}),f=t._listenerId||(t._listenerId=n.uniqueId("l"));u[f]=t;t.on(i,typeof i=="object"?this:r,this);return this},stopListening:function(n,t,i){var r=this._listeners,u;if(r){if(n)n.off(t,typeof t=="object"?this:i,this),t||i||delete r[n._listenerId];else{typeof t=="object"&&(i=this);for(u in r)r[u].off(t,i,this);this._listeners={}}return this}}};i.bind=i.on,i.unbind=i.off,n.extend(t,i),f=t.Model=function(t,i){var u,r=t||{};this.cid=n.uniqueId("c"),this.attributes={},i&&i.collection&&(this.collection=i.collection),i&&i.parse&&(r=this.parse(r,i)||{}),(u=n.result(this,"defaults"))&&(r=n.defaults({},r,u)),this.set(r,i),this.changed={},this.initialize.apply(this,arguments)},n.extend(f.prototype,i,{changed:null,idAttribute:"id",initialize:function(){},toJSON:function(){return n.clone(this.attributes)},sync:function(){return t.sync.apply(this,arguments)},get:function(n){return this.attributes[n]},escape:function(t){return n.escape(this.get(t))},has:function(n){return this.get(n)!=null},set:function(t,i,r){var u,f,l,e,h,c,a,o,s,v;if(t==null)return this;if(typeof t=="object"?(f=t,r=i):(f={})[t]=i,r||(r={}),!this._validate(f,r))return!1;l=r.unset,h=r.silent,e=[],c=this._changing,this._changing=!0,c||(this._previousAttributes=n.clone(this.attributes),this.changed={}),o=this.attributes,a=this._previousAttributes,this.idAttribute in f&&(this.id=f[this.idAttribute]);for(u in f)i=f[u],n.isEqual(o[u],i)||e.push(u),n.isEqual(a[u],i)?delete this.changed[u]:this.changed[u]=i,l?delete o[u]:o[u]=i;if(!h)for(e.length&&(this._pending=!0),s=0,v=e.length;s<v;s++)this.trigger("change:"+e[s],this,o[e[s]],r);if(c)return this;if(!h)while(this._pending)this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(t,i){return this.set(t,void 0,n.extend({},i,{unset:!0}))},clear:function(t){var i={},r;for(r in this.attributes)i[r]=void 0;return this.set(i,n.extend({},t,{unset:!0}))},hasChanged:function(t){return t==null?!n.isEmpty(this.changed):n.has(this.changed,t)},changedAttributes:function(t){var u,i,f,r;if(!t)return this.hasChanged()?n.clone(this.changed):!1;i=!1,f=this._changing?this._previousAttributes:this.attributes;for(r in t)n.isEqual(f[r],u=t[r])||((i||(i={}))[r]=u);return i},previous:function(n){return n==null||!this._previousAttributes?null:this._previousAttributes[n]},previousAttributes:function(){return n.clone(this._previousAttributes)},fetch:function(t){t=t?n.clone(t):{},t.parse===void 0&&(t.parse=!0);var i=t.success;return t.success=function(n,t,r){if(!n.set(n.parse(t,r),r))return!1;i&&i(n,t,r)},this.sync("read",this,t)},save:function(t,i,r){var u,f,e,s,o=this.attributes;return(t==null||typeof t=="object"?(u=t,r=i):(u={})[t]=i,u&&(!r||!r.wait)&&!this.set(u,r))?!1:(r=n.extend({validate:!0},r),!this._validate(u,r))?!1:(u&&r.wait&&(this.attributes=n.extend({},o,u)),r.parse===void 0&&(r.parse=!0),f=r.success,r.success=function(t,i,r){t.attributes=o;var e=t.parse(i,r);if(r.wait&&(e=n.extend(u||{},e)),n.isObject(e)&&!t.set(e,r))return!1;f&&f(t,i,r)},e=this.isNew()?"create":r.patch?"patch":"update",e==="patch"&&(r.attrs=u),s=this.sync(e,this,r),u&&r.wait&&(this.attributes=o),s)},destroy:function(t){var f;t=t?n.clone(t):{};var i=this,r=t.success,u=function(){i.trigger("destroy",i,i.collection,t)};return(t.success=function(n,t,i){(i.wait||n.isNew())&&u(),r&&r(n,t,i)},this.isNew())?(t.success(this,null,t),!1):(f=this.sync("delete",this,t),t.wait||u(),f)},url:function(){var t=n.result(this,"urlRoot")||n.result(this.collection,"url")||h();return this.isNew()?t:t+(t.charAt(t.length-1)==="/"?"":"/")+encodeURIComponent(this.id)},parse:function(n){return n},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return this.id==null},isValid:function(n){return!this.validate||!this.validate(this.attributes,n)},_validate:function(t,i){if(!i.validate||!this.validate)return!0;t=n.extend({},this.attributes,t);var r=this.validationError=this.validate(t,i)||null;return r?(this.trigger("invalid",this,r,i||{}),!1):!0}}),e=t.Collection=function(t,i){i||(i={}),i.model&&(this.model=i.model),i.comparator!==void 0&&(this.comparator=i.comparator),this.models=[],this._reset(),this.initialize.apply(this,arguments),t&&this.reset(t,n.extend({silent:!0},i))},n.extend(e.prototype,i,{model:f,initialize:function(){},toJSON:function(n){return this.map(function(t){return t.toJSON(n)})},sync:function(){return t.sync.apply(this,arguments)},add:function(t,i){t=n.isArray(t)?t.slice():[t],i||(i={});var u,o,r,s,c,e,f,h,l,a;for(f=[],h=i.at,l=this.comparator&&h==null&&i.sort!=!1,a=n.isString(this.comparator)?this.comparator:null,u=0,o=t.length;u<o;u++){if(!(r=this._prepareModel(s=t[u],i))){this.trigger("invalid",this,s,i);continue}if(c=this.get(r)){i.merge&&(c.set(s===r?r.attributes:s,i),l&&!e&&c.hasChanged(a)&&(e=!0));continue}f.push(r);r.on("all",this._onModelEvent,this);this._byId[r.cid]=r,r.id!=null&&(this._byId[r.id]=r)}if(f.length&&(l&&(e=!0),this.length+=f.length,h!=null?tt.apply(this.models,[h,0].concat(f)):nt.apply(this.models,f)),e&&this.sort({silent:!0}),i.silent)return this;for(u=0,o=f.length;u<o;u++)(r=f[u]).trigger("add",r,this,i);return e&&this.trigger("sort",this,i),this},remove:function(t,i){t=n.isArray(t)?t.slice():[t],i||(i={});for(var f,r,u=0,e=t.length;u<e;u++)(r=this.get(t[u]),r)&&(delete this._byId[r.id],delete this._byId[r.cid],f=this.indexOf(r),this.models.splice(f,1),this.length--,i.silent||(i.index=f,r.trigger("remove",r,this,i)),this._removeReference(r));return this},push:function(t,i){return t=this._prepareModel(t,i),this.add(t,n.extend({at:this.length},i)),t},pop:function(n){var t=this.at(this.length-1);return this.remove(t,n),t},unshift:function(t,i){return t=this._prepareModel(t,i),this.add(t,n.extend({at:0},i)),t},shift:function(n){var t=this.at(0);return this.remove(t,n),t},slice:function(n,t){return this.models.slice(n,t)},get:function(n){if(n!=null)return this._idAttr||(this._idAttr=this.model.prototype.idAttribute),this._byId[n.id||n.cid||n[this._idAttr]||n]},at:function(n){return this.models[n]},where:function(t){return n.isEmpty(t)?[]:this.filter(function(n){for(var i in t)if(t[i]!==n.get(i))return!1;return!0})},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");return t||(t={}),n.isString(this.comparator)||this.comparator.length===1?this.models=this.sortBy(this.comparator,this):this.models.sort(n.bind(this.comparator,this)),t.silent||this.trigger("sort",this,t),this},pluck:function(t){return n.invoke(this.models,"get",t)},update:function(t,i){i=n.extend({add:!0,merge:!0,remove:!0},i),i.parse&&(t=this.parse(t,i));var u,r,e,f,o=[],s=[],h={};if(n.isArray(t)||(t=t?[t]:[]),i.add&&!i.remove)return this.add(t,i);for(r=0,e=t.length;r<e;r++)u=t[r],f=this.get(u),i.remove&&f&&(h[f.cid]=!0),(i.add&&!f||i.merge&&f)&&o.push(u);if(i.remove)for(r=0,e=this.models.length;r<e;r++)u=this.models[r],h[u.cid]||s.push(u);return s.length&&this.remove(s,i),o.length&&this.add(o,i),this},reset:function(t,i){i||(i={}),i.parse&&(t=this.parse(t,i));for(var r=0,u=this.models.length;r<u;r++)this._removeReference(this.models[r]);return i.previousModels=this.models.slice(),this._reset(),t&&this.add(t,n.extend({silent:!0},i)),i.silent||this.trigger("reset",this,i),this},fetch:function(t){t=t?n.clone(t):{},t.parse===void 0&&(t.parse=!0);var i=t.success;return t.success=function(n,t,r){var u=r.update?"update":"reset";n[u](t,r),i&&i(n,t,r)},this.sync("read",this,t)},create:function(t,i){if(i=i?n.clone(i):{},!(t=this._prepareModel(t,i)))return!1;i.wait||this.add(t,i);var u=this,r=i.success;return i.success=function(n,t,i){i.wait&&u.add(n,i),r&&r(n,t,i)},t.save(null,i),t},parse:function(n){return n},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0,this.models.length=0,this._byId={}},_prepareModel:function(n,t){if(n instanceof f)return n.collection||(n.collection=this),n;t||(t={}),t.collection=this;var i=new this.model(n,t);return i._validate(n,t)?i:!1},_removeReference:function(n){this===n.collection&&delete n.collection,n.off("all",this._onModelEvent,this)},_onModelEvent:function(n,t,i,r){(n!=="add"&&n!=="remove"||i===this)&&(n==="destroy"&&this.remove(t,r),t&&n==="change:"+t.idAttribute&&(delete this._byId[t.previous(t.idAttribute)],t.id!=null&&(this._byId[t.id]=t)),this.trigger.apply(this,arguments))},sortedIndex:function(t,i,r){i||(i=this.comparator);var u=n.isFunction(i)?i:function(n){return n.get(i)};return n.sortedIndex(this.models,t,u,r)}}),v=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","indexOf","shuffle","lastIndexOf","isEmpty","chain"],n.each(v,function(t){e.prototype[t]=function(){var i=c.call(arguments);return i.unshift(this.models),n[t].apply(n,i)}}),y=["groupBy","countBy","sortBy"],n.each(y,function(t){e.prototype[t]=function(i,r){var u=n.isFunction(i)?i:function(n){return n.get(i)};return n[t](this.models,u,r)}});var p=t.Router=function(n){n||(n={}),n.routes&&(this.routes=n.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},it=/\((.*?)\)/g,rt=/(\(\?)?:\w+/g,ut=/\*\w+/g,ft=/[\-{}\[\]+?.,\\\^$|#\s]/g;n.extend(p.prototype,i,{initialize:function(){},route:function(i,r,u){return n.isRegExp(i)||(i=this._routeToRegExp(i)),u||(u=this[r]),t.history.route(i,n.bind(function(n){var f=this._extractParameters(i,n);u&&u.apply(this,f),this.trigger.apply(this,["route:"+r].concat(f)),this.trigger("route",r,f),t.history.trigger("route",this,r,f)},this)),this},navigate:function(n,i){return t.history.navigate(n,i),this},_bindRoutes:function(){if(this.routes)for(var t,i=n.keys(this.routes);(t=i.pop())!=null;)this.route(t,this.routes[t])},_routeToRegExp:function(n){return n=n.replace(ft,"\\$&").replace(it,"(?:$1)?").replace(rt,function(n,t){return t?n:"([^/]+)"}).replace(ut,"(.*?)"),new RegExp("^"+n+"$")},_extractParameters:function(n,t){return n.exec(t).slice(1)}});var r=t.History=function(){this.handlers=[],n.bindAll(this,"checkUrl"),typeof window!="undefined"&&(this.location=window.location,this.history=window.history)},w=/^[#\/]|\s+$/g,et=/^\/+|\/+$/g,ot=/msie [\w.]+/,st=/\/$/;r.started=!1,n.extend(r.prototype,i,{interval:50,getHash:function(n){var t=(n||this).location.href.match(/#(.*)$/);return t?t[1]:""},getFragment:function(n,t){if(n==null)if(this._hasPushState||!this._wantsHashChange||t){n=this.location.pathname;var i=this.root.replace(st,"");n.indexOf(i)||(n=n.substr(i.length))}else n=this.getHash();return n.replace(w,"")},start:function(i){var u,f;if(r.started)throw new Error("Backbone.history has already been started");r.started=!0,this.options=n.extend({},{root:"/"},this.options,i),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var e=this.getFragment(),o=document.documentMode,s=ot.exec(navigator.userAgent.toLowerCase())&&(!o||o<=7);if(this.root=("/"+this.root+"/").replace(et,"/"),s&&this._wantsHashChange&&(this.iframe=t.$('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(e)),this._hasPushState)t.$(window).on("popstate",this.checkUrl);else if(this._wantsHashChange&&"onhashchange"in window&&!s)t.$(window).on("hashchange",this.checkUrl);else this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval));return(this.fragment=e,u=this.location,f=u.pathname.replace(/[^\/]$/,"$&/")===this.root,this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!f)?(this.fragment=this.getFragment(null,!0),this.location.replace(this.root+this.location.search+"#"+this.fragment),!0):(this._wantsPushState&&this._hasPushState&&f&&u.hash&&(this.fragment=this.getHash().replace(w,""),this.history.replaceState({},document.title,this.root+this.fragment+u.search)),this.options.silent?void 0:this.loadUrl())},stop:function(){t.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl),clearInterval(this._checkUrlInterval),r.started=!1},route:function(n,t){this.handlers.unshift({route:n,callback:t})},checkUrl:function(){var n=this.getFragment();if(n===this.fragment&&this.iframe&&(n=this.getFragment(this.getHash(this.iframe))),n===this.fragment)return!1;this.iframe&&this.navigate(n),this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(t){var i=this.fragment=this.getFragment(t);return n.any(this.handlers,function(n){if(n.route.test(i))return n.callback(i),!0})},navigate:function(n,t){if(!r.started)return!1;if(t&&t!==!0||(t={trigger:t}),n=this.getFragment(n||""),this.fragment!==n){this.fragment=n;var i=this.root+n;if(this._hasPushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,i);else if(this._wantsHashChange)this._updateHash(this.location,n,t.replace),this.iframe&&n!==this.getFragment(this.getHash(this.iframe))&&(t.replace||this.iframe.document.open().close(),this._updateHash(this.iframe.location,n,t.replace));else return this.location.assign(i);t.trigger&&this.loadUrl(n)}},_updateHash:function(n,t,i){if(i){var r=n.href.replace(/(javascript:|#).*$/,"");n.replace(r+"#"+t)}else n.hash="#"+t}}),t.history=new r;var b=t.View=function(t){this.cid=n.uniqueId("view"),this._configure(t||{}),this._ensureElement(),this.initialize.apply(this,arguments),this.delegateEvents()},ht=/^(\S+)\s*(.*)$/,ct=["model","collection","el","id","attributes","className","tagName","events"];n.extend(b.prototype,i,{tagName:"div",$:function(n){return this.$el.find(n)},initialize:function(){},render:function(){return this},remove:function(){return this.$el.remove(),this.stopListening(),this},setElement:function(n,i){return this.$el&&this.undelegateEvents(),this.$el=n instanceof t.$?n:t.$(n),this.el=this.$el[0],i!==!1&&this.delegateEvents(),this},delegateEvents:function(t){var r,i;if(t||(t=n.result(this,"events"))){this.undelegateEvents();for(r in t){if(i=t[r],n.isFunction(i)||(i=this[t[r]]),!i)throw new Error('Method "'+t[r]+'" does not exist');var f=r.match(ht),u=f[1],e=f[2];if(i=n.bind(i,this),u+=".delegateEvents"+this.cid,e==="")this.$el.on(u,i);else this.$el.on(u,e,i)}}},undelegateEvents:function(){this.$el.off(".delegateEvents"+this.cid)},_configure:function(t){this.options&&(t=n.extend({},n.result(this,"options"),t)),n.extend(this,n.pick(t,ct)),this.options=t},_ensureElement:function(){var i,r;this.el?this.setElement(n.result(this,"el"),!1):(i=n.extend({},n.result(this,"attributes")),this.id&&(i.id=n.result(this,"id")),this.className&&(i["class"]=n.result(this,"className")),r=t.$("<"+n.result(this,"tagName")+">").attr(i),this.setElement(r,!1))}}),k={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"},t.sync=function(i,r,u){var e=k[i],f,o,s,c,l;return n.defaults(u||(u={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON}),f={type:e,dataType:"json"},u.url||(f.url=n.result(r,"url")||h()),u.data==null&&r&&(i==="create"||i==="update"||i==="patch")&&(f.contentType="application/json",f.data=JSON.stringify(u.attrs||r.toJSON(u))),u.emulateJSON&&(f.contentType="application/x-www-form-urlencoded",f.data=f.data?{model:f.data}:{}),u.emulateHTTP&&(e==="PUT"||e==="DELETE"||e==="PATCH")&&(f.type="POST",u.emulateJSON&&(f.data._method=e),o=u.beforeSend,u.beforeSend=function(n){return n.setRequestHeader("X-HTTP-Method-Override",e),o?o.apply(this,arguments):void 0}),f.type==="GET"||u.emulateJSON||(f.processData=!1),s=u.success,u.success=function(n){s&&s(r,n,u),r.trigger("sync",r,n,u)},c=u.error,u.error=function(n){c&&c(r,n,u),r.trigger("error",r,n,u)},l=u.xhr=t.ajax(n.extend(f,u)),r.trigger("request",r,l,u),l},t.ajax=function(){return t.$.ajax.apply(t.$,arguments)},d=function(t,i){var u=this,r,f;return r=t&&n.has(t,"constructor")?t.constructor:function(){return u.apply(this,arguments)},n.extend(r,u,i),f=function(){this.constructor=r},f.prototype=u.prototype,r.prototype=new f,t&&n.extend(r.prototype,t),r.__super__=u.prototype,r},f.extend=e.extend=p.extend=b.extend=r.extend=d,h=function(){throw new Error('A "url" property or function must be specified');}}.call(this),velir=velir||{},velir.collections=velir.collections||{},velir.collections.NameValueCollection=function(){this._collection={},this._keys=[]},function(){function n(n){for(var t="",r,i=0;i<n.length;i++)(r=n[i],r)&&(t+=r+",");return t.length===0?null:t.substring(0,t.length-1)}this.add=function(n,t){var i=this._collection[n];i||(i=[],this._keys.push(n)),t&&i.push(t),this._collection[n]=i},this.addNameValueCollection=function(n){var f,i,r,t,u;if(n)for(f=n.getKeys(),i=0;i<f.length;i++)if(r=f[i],t=n.getValues(r),t&&t.length>0)for(u=0;u<t.length;u++)this.add(r,t[u]);else this.add(r,null)},this.setValue=function(n,t){var r=this._collection[n],i;r||this._keys.push(n),i=[],t&&i.push(t),this._collection[n]=i},this.clear=function(){this._collection={},this._keys=[]},this.getValue=function(t){if(!this._collection[t])return null;var i=this._collection[t];return n(i)},this.getValueAt=function(n){return this.getValue(this._keys[n])},this.getValues=function(n){return this._collection[n]?this._collection[n]:null},this.getValuesAt=function(n){return this.getValues(this._keys[n])},this.getKeys=function(){return this._keys},this.remove=function(n){var t=$.inArray(n,this._keys);t>-1&&this._keys.splice(t,1),delete this._collection[n]},this.toQueryString=function(){for(var n="",r,i,t=0;t<this._keys.length;t++)r=this._keys[t],i=this._collection[r],i||(i=""),n+="&"+r+"="+escape(i).replace(/%2C/g,",");return n.length>0?n.substring(1,n.length):n},this.fromQueryString=function(n){var i,t;if(n&&n.length!==0)for(n.indexOf("?")>-1&&(n=n.split("?")[1]),n.indexOf("#")>-1&&(n=n.split("#")[0]),n.indexOf("%26")>0&&(n=decodeURIComponent(n)),i=n.split("&"),t=0;t<i.length;t++){var f=i[t],r=f.split("="),e=r[0],u=null;r.length>1&&(u=unescape(r[1])),this.add(e,u)}}}.call(velir.collections.NameValueCollection.prototype),velir.collections.NameValueCollection.parseQueryString=function(n){var t=new velir.collections.NameValueCollection;return t.fromQueryString(n),t},velir=velir||{},velir.datacenter=velir.datacenter||{},velir.datacenter.DatacenterContainer=function(){var n=this;return this.addValuesToCollection=function(n,t,i){for(var u,r=0;r<i.length;r++)u=i[r],n.add(t,u.id)},this.getValuesFromCollection=function(n,t,i,r,u){var o=n.getValue(t),f,e,s,h;o&&(f=o.split(","),e="",velir.datacenter.DatacenterContainer.entitySearchService&&(e="Loading..."),$(f).each(function(n,t){var r={id:""+t,name:e};i.push(r)}),velir.datacenter.DatacenterContainer.entitySearchService?(s=JSON.stringify({ids:f}),h="/Find"+r+"s",$.ajax({type:"POST",url:velir.datacenter.DatacenterContainer.entitySearchService+h,data:s,contentType:"application/json; charset=utf-8",dataType:"json",error:function(n,t){alert("Error connecting to entity search service.\n\n"+t)},success:function(n){for(var e=JSON.parse(n.d),f,r,t=0;t<e.length;t++)f=e[t],r=-1,$(i).each(function(n,t){if(t.id==f.id)return r=n,!1}),r>-1&&i.splice(r,1,f);u&&u()}})):u&&u())},{loadEntityNames:!1,entitySearchService:"",indicators:[],timeFrames:[],dataFormatMaps:[],characteristics:[],locations:[],categories:[],toNameValueCollection:function(){var i=velir.datacenter.UrlParams,t=new velir.collections.NameValueCollection;return n.addValuesToCollection(t,i.indicatorId,this.indicators),n.addValuesToCollection(t,i.timeFrameId,this.timeFrames),n.addValuesToCollection(t,i.dataFormatMapId,this.dataFormatMaps),n.addValuesToCollection(t,i.characteristicId,this.characteristics),n.addValuesToCollection(t,i.locationId,this.locations),n.addValuesToCollection(t,i.categoryId,this.categories),t},toQueryString:function(){return this.toNameValueCollection().toQueryString()},fromQueryString:function(t,i){var r=velir.datacenter.UrlParams,u=velir.collections.NameValueCollection.parseQueryString(t);n.getValuesFromCollection(u,r.indicatorId,this.indicators,"Indicator",i),n.getValuesFromCollection(u,r.timeFrameId,this.timeFrames,"TimeFrame",i),n.getValuesFromCollection(u,r.dataFormatMapId,this.dataFormatMaps,"DataFormatMap",i),n.getValuesFromCollection(u,r.characteristicId,this.characteristics,"Characteristic",i),n.getValuesFromCollection(u,r.locationId,this.locations,"Location",i),n.getValuesFromCollection(u,r.categoryId,this.categories,"Category",i)}}},velir.datacenter.DatacenterContainer.parseQueryString=function(n,t){var i=new velir.datacenter.DatacenterContainer;return i.fromQueryString(n,t),i},velir.datacenter.DatacenterContainer.entitySearchService=!1,velir=velir||{},velir.datacenter=velir.datacenter||{},velir.datacenter.UrlParams={indicatorId:"ind",categoryId:"cat",locationId:"loc",locationTypeId:"loct",sourceId:"src",timeFrameId:"tf",dataFormatMapId:"fmt",characteristicId:"ch",getParameter:function(n){var t=velir.datacenter.UrlParams;switch(n.toLowerCase()){case"indicator":return t.indicatorId;case"category":return t.categoryId;case"location":return t.locationId;case"locationtype":return t.locationTypeId;case"source":return t.sourceId;case"timeframe":return t.timeFrameId;case"dataformatmap":return t.dataFormatMapId;case"characteristic":return t.characteristicId}return null}},velir=velir||{},velir.forms=velir.forms||{},velir.forms.GhostText={apply:function(n,t,i,r){$(n).each(function(){velir.forms.GhostText.applyTo($(this),t,i,r)})},applyTo:function(n,t,i,r){if(n.is('input[type="text"]')){var u=velir.util.StringUtil.isNullOrEmpty;u(n.val())&&n.val(t),n.focus(function(){$(this).val()===t&&($(this).val(""),u(i)||$(this).toggleClass(i))}),n.blur(function(){$(this).val()===""&&($(this).val(t),u(i)||$(this).toggleClass(i))}),r!==null&&n.keypress(function(n){n.keyCode==13&&r(n)})}},install:function(n){$.fn[n]=function(n,t,i){return this.each(function(){velir.forms.GhostText.applyTo($(this),n,t,i)})}}},velir=velir||{},velir.util=velir.util||{},velir.util.DomUtil={scrollElementIntoView:function(n,t,i,r){var c;if(n&&t){typeof i=="undefined"&&(i=4);var e=$(n),u=$(t),l=e.offsetParent();if(l.get(0)!==u.get(0)){u.is(":visible")&&console.log("scrollElementIntoView: The specified container must be the offsetParent of the specified element. Try adding position:relative to the container.");return}var f=e.position().top,o=u.scrollTop(),s=e.outerHeight(),h=200;f<o?u.stop().animate({scrollTop:o+f},h,r):f>u.innerHeight()-s-i?(c=o+f-u.height()+s+i,u.stop().animate({scrollTop:c},h,r)):r&&r()}}},velir=velir||{},velir.util=velir.util||{},velir.util.StringUtil={isNullOrEmpty:function(n){return n===null||n===undefined||n===""},format:function(n){for(var i=n,r,t=1;t<arguments.length;t++)r=new RegExp("\\{"+(t-1)+"\\}","gm"),i=i.replace(r,arguments[t]);return i}}