/*!
 * mustache.js - Logic-less {{mustache}} templates with JavaScript
 * http://github.com/janl/mustache.js
 */
(function(n,t){typeof exports=="object"&&exports?module.exports=t:typeof define=="function"&&define.amd?define(t):n.Mustache=t})(this,function(){function k(n,t){return w.call(n,t)}function d(n){return!k(v,n)}function o(n){return n.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function g(n){return String(n).replace(/[&<>"'\/]/g,function(n){return c[n]})}function u(n){this.string=n,this.tail=n,this.pos=0}function t(n,t){this.view=n,this.parent=t,this._cache={}}function i(){this.clearCache()}function f(t,i,r,u){for(var s="",h,c,o,a,y,p,l=0,v=t.length;l<v;++l){h=t[l],c=h[1];switch(h[0]){case"#":if(o=r.lookup(c),typeof o=="object")if(e(o))for(a=0,y=o.length;a<y;++a)s+=f(h[4],i,r.push(o[a]),u);else o&&(s+=f(h[4],i,r.push(o),u));else typeof o=="function"?(p=u==null?null:u.slice(h[3],h[5]),o=o.call(r.view,p,function(n){return i.render(n,r)}),o!=null&&(s+=o)):o&&(s+=f(h[4],i,r,u));break;case"^":o=r.lookup(c),(!o||e(o)&&o.length===0)&&(s+=f(h[4],i,r,u));break;case">":o=i.getPartial(c),typeof o=="function"&&(s+=o(r));break;case"&":o=r.lookup(c),o!=null&&(s+=o);break;case"name":o=r.lookup(c),o!=null&&(s+=n.escape(o));break;case"text":s+=c}}return s}function nt(n){for(var f=[],r=f,i=[],t,o,u=0,e=n.length;u<e;++u){t=n[u];switch(t[0]){case"#":case"^":i.push(t),r.push(t),r=t[4]=[];break;case"/":o=i.pop(),o[5]=t[2],r=i.length>0?i[i.length-1][4]:f;break;default:r.push(t)}}return f}function tt(n){for(var u=[],t,i,r=0,f=n.length;r<f;++r)t=n[r],t&&(t[0]==="text"&&i&&i[0]==="text"?(i[1]+=t[1],i[3]=t[3]):(i=t,u.push(t)));return u}function l(n){return[new RegExp(o(n[0])+"\\s*"),new RegExp("\\s*"+o(n[1]))]}var n={},e,c,r;n.name="mustache.js",n.version="0.7.2",n.tags=["{{","}}"],n.Scanner=u,n.Context=t,n.Writer=i;var a=/\s*/,s=/\s+/,v=/\S/,h=/\s*=/,y=/\s*\}/,p=/#|\^|\/|>|\{|&|=|!/,w=RegExp.prototype.test,b=Object.prototype.toString;return e=Array.isArray||function(n){return b.call(n)==="[object Array]"},c={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"},n.escape=g,u.prototype.eos=function(){return this.tail===""},u.prototype.scan=function(n){var t=this.tail.match(n);return t&&t.index===0?(this.tail=this.tail.substring(t[0].length),this.pos+=t[0].length,t[0]):""},u.prototype.scanUntil=function(n){var t,i=this.tail.search(n);switch(i){case-1:t=this.tail,this.pos+=this.tail.length,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,i),this.tail=this.tail.substring(i),this.pos+=i}return t},t.make=function(n){return n instanceof t?n:new t(n)},t.prototype.push=function(n){return new t(n,this)},t.prototype.lookup=function(n){var t=this._cache[n],i,r,u;if(!t){if(n==".")t=this.view;else for(i=this;i;){if(n.indexOf(".")>0)for(t=i.view,r=n.split("."),u=0;t&&u<r.length;)t=t[r[u++]];else t=i.view[n];if(t!=null)break;i=i.parent}this._cache[n]=t}return typeof t=="function"&&(t=t.call(this.view)),t},i.prototype.clearCache=function(){this._cache={},this._partialCache={}},i.prototype.compile=function(t,i){var r=this._cache[t],u;return r||(u=n.parse(t,i),r=this._cache[t]=this.compileTokens(u,t)),r},i.prototype.compilePartial=function(n,t,i){var r=this.compile(t,i);return this._partialCache[n]=r,r},i.prototype.getPartial=function(n){return n in this._partialCache||!this._loadPartial||this.compilePartial(n,this._loadPartial(n)),this._partialCache[n]},i.prototype.compileTokens=function(n,i){var r=this;return function(u,e){if(e)if(typeof e=="function")r._loadPartial=e;else for(var o in e)r.compilePartial(o,e[o]);return f(n,r,t.make(u),i)}},i.prototype.render=function(n,t,i){return this.compile(n)(t,i)},n.parse=function(t,i){function st(){if(ft&&!it)while(g.length)delete w[g.pop()];else g=[];ft=!1,it=!1}var c,f,e,rt,et,ut,ot,b;if(t=t||"",i=i||n.tags,typeof i=="string"&&(i=i.split(s)),i.length!==2)throw new Error("Invalid tags: "+i.join(", "));for(var v=l(i),r=new u(t),k=[],w=[],g=[],ft=!1,it=!1;!r.eos();){if(c=r.pos,e=r.scanUntil(v[0]),e)for(ut=0,ot=e.length;ut<ot;++ut)rt=e.charAt(ut),d(rt)?g.push(w.length):it=!0,w.push(["text",rt,c,c+1]),c+=1,rt=="\n"&&st();if(!r.scan(v[0]))break;if(ft=!0,f=r.scan(p)||"name",r.scan(a),f==="="?(e=r.scanUntil(h),r.scan(h),r.scanUntil(v[1])):f==="{"?(e=r.scanUntil(new RegExp("\\s*"+o("}"+i[1]))),r.scan(y),r.scanUntil(v[1]),f="&"):e=r.scanUntil(v[1]),!r.scan(v[1]))throw new Error("Unclosed tag at "+r.pos);if(et=[f,e,c,r.pos],w.push(et),f==="#"||f==="^")k.push(et);else if(f==="/"){if(k.length===0)throw new Error('Unopened section "'+e+'" at '+c);if(b=k.pop(),b[1]!==e)throw new Error('Unclosed section "'+b[1]+'" at '+c);}else if(f==="name"||f==="{"||f==="&")it=!0;else if(f==="="){if(i=e.split(s),i.length!==2)throw new Error("Invalid tags at "+c+": "+i.join(", "));v=l(i)}}if(b=k.pop(),b)throw new Error('Unclosed section "'+b[1]+'" at '+r.pos);return w=tt(w),nt(w)},r=new i,n.clearCache=function(){return r.clearCache()},n.compile=function(n,t){return r.compile(n,t)},n.compilePartial=function(n,t,i){return r.compilePartial(n,t,i)},n.compileTokens=function(n,t){return r.compileTokens(n,t)},n.render=function(n,t,i){return r.render(n,t,i)},n.to_html=function(t,i,r,u){var f=n.render(t,i,r);if(typeof u=="function")u(f);else return f},n}())