CodeMirror.defineMode("javascript",function(e,t){function n(e,t,n){return t.tokenize=n,n(e,t)}function i(e,t){for(var n,i=!1;null!=(n=e.next());){if(n==t&&!i)return!1;i=!i&&"\\"==n}return i}function a(e,t,n){return z=e,M=n,t}function r(e,t){var r=e.next();if('"'==r||"'"==r)return n(e,t,o(r));if(/[\[\]{}\(\),;\:\.]/.test(r))return a(r);if("0"==r&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),a("number","number");if(/\d/.test(r)||"-"==r&&e.eat(/\d/))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),a("number","number");if("/"==r)return e.eat("*")?n(e,t,s):e.eat("/")?(e.skipToEnd(),a("comment","comment")):"operator"==t.lastType||"keyword c"==t.lastType||/^[\[{}\(,;:]$/.test(t.lastType)?(i(e,"/"),e.eatWhile(/[gimy]/),a("regexp","string-2")):(e.eatWhile(U),a("operator",null,e.current()));if("#"==r)return e.skipToEnd(),a("error","error");if(U.test(r))return e.eatWhile(U),a("operator",null,e.current());e.eatWhile(/[\w\$_]/);var l=e.current(),c=H.propertyIsEnumerable(l)&&H[l];return c&&"."!=t.lastType?a(c.type,c.style,l):a("variable","variable",l)}function o(e){return function(t,n){return i(t,e)||(n.tokenize=r),a("string","string")}}function s(e,t){for(var n,i=!1;n=e.next();){if("/"==n&&i){t.tokenize=r;break}i="*"==n}return a("comment","comment")}function l(e,t,n,i,a,r){this.indented=e,this.column=t,this.type=n,this.prev=a,this.info=r,null!=i&&(this.align=i)}function c(e,t){for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0}function u(e,t,n,i,a){var r=e.cc;for(V.state=e,V.stream=a,V.marked=null,V.cc=r,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){var o=r.length?r.pop():$?_:y;if(o(n,i)){for(;r.length&&r[r.length-1].lex;)r.pop()();return V.marked?V.marked:"variable"==n&&c(e,i)?"variable-2":t}}}function d(){for(var e=arguments.length-1;e>=0;e--)V.cc.push(arguments[e])}function p(){return d.apply(null,arguments),!0}function m(e){var t=V.state;if(t.context){V.marked="def";for(var n=t.localVars;n;n=n.next)if(n.name==e)return;t.localVars={name:e,next:t.localVars}}}function h(){V.state.context={prev:V.state.context,vars:V.state.localVars},V.state.localVars=W}function g(){V.state.localVars=V.state.context.vars,V.state.context=V.state.context.prev}function f(e,t){var n=function(){var n=V.state;n.lexical=new l(n.indented,V.stream.column(),e,null,n.lexical,t)};return n.lex=!0,n}function b(){var e=V.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function v(e){return function(t){return t==e?p():";"==e?d():p(arguments.callee)}}function y(e){return"var"==e?p(f("vardef"),I,v(";"),b):"keyword a"==e?p(f("form"),_,y,b):"keyword b"==e?p(f("form"),y,b):"{"==e?p(f("}"),S,b):";"==e?p():"function"==e?p(B):"for"==e?p(f("form"),v("("),f(")"),O,v(")"),b,y,b):"variable"==e?p(f("stat"),E):"switch"==e?p(f("form"),_,f("}","switch"),v("{"),S,b,b):"case"==e?p(_,v(":")):"default"==e?p(v(":")):"catch"==e?p(f("form"),h,v("("),P,v(")"),y,b,g):d(f("stat"),_,v(";"),b)}function _(e){return q.hasOwnProperty(e)?p(C):"function"==e?p(B):"keyword c"==e?p(k):"("==e?p(f(")"),k,v(")"),b,C):"operator"==e?p(_):"["==e?p(f("]"),x(_,"]"),b,C):"{"==e?p(f("}"),x(w,"}"),b,C):p()}function k(e){return e.match(/[;\}\)\],]/)?d():d(_)}function C(e,t){if("operator"==e&&/\+\+|--/.test(t))return p(C);if("operator"==e&&"?"==t)return p(_,v(":"),_);if(";"!=e)return"("==e?p(f(")"),x(_,")"),b,C):"."==e?p(T,C):"["==e?p(f("]"),_,v("]"),b,C):void 0}function E(e){return":"==e?p(b,y):d(C,v(";"),b)}function T(e){return"variable"==e?(V.marked="property",p()):void 0}function w(e){return"variable"==e&&(V.marked="property"),q.hasOwnProperty(e)?p(v(":"),_):void 0}function x(e,t){function n(i){return","==i?p(e,n):i==t?p():p(v(t))}return function(i){return i==t?p():d(e,n)}}function S(e){return"}"==e?p():d(y,S)}function A(e){return":"==e?p(R):d()}function R(e){return"variable"==e?(V.marked="variable-3",p()):d()}function I(e,t){return"variable"==e?(m(t),j?p(A,D):p(D)):d()}function D(e,t){return"="==t?p(_,D):","==e?p(I):void 0}function O(e){return"var"==e?p(I,v(";"),N):";"==e?p(N):"variable"==e?p(L):p(N)}function L(e,t){return"in"==t?p(_):p(C,N)}function N(e,t){return";"==e?p(F):"in"==t?p(_):p(_,v(";"),F)}function F(e){")"!=e&&p(_)}function B(e,t){return"variable"==e?(m(t),p(B)):"("==e?p(f(")"),h,x(P,")"),b,y,g):void 0}function P(e,t){return"variable"==e?(m(t),j?p(A):p()):void 0}var z,M,K=e.indentUnit,$=t.json,j=t.typescript,H=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),n=e("keyword b"),i=e("keyword c"),a=e("operator"),r={type:"atom",style:"atom"},o={"if":t,"while":t,"with":t,"else":n,"do":n,"try":n,"finally":n,"return":i,"break":i,"continue":i,"new":i,"delete":i,"throw":i,"var":e("var"),"const":e("var"),let:e("var"),"function":e("function"),"catch":e("catch"),"for":e("for"),"switch":e("switch"),"case":e("case"),"default":e("default"),"in":a,"typeof":a,"instanceof":a,"true":r,"false":r,"null":r,undefined:r,NaN:r,Infinity:r};if(j){var s={type:"variable",style:"variable-3"},l={"interface":e("interface"),"class":e("class"),"extends":e("extends"),constructor:e("constructor"),"public":e("public"),"private":e("private"),"protected":e("protected"),"static":e("static"),"super":e("super"),string:s,number:s,bool:s,any:s};for(var c in l)o[c]=l[c]}return o}(),U=/[+\-*&%=<>!?|]/,q={atom:!0,number:!0,variable:!0,string:!0,regexp:!0},V={state:null,column:null,marked:null,cc:null},W={name:"this",next:{name:"arguments"}};return b.lex=!0,{startState:function(e){return{tokenize:r,lastType:null,cc:[],lexical:new l((e||0)-K,0,"block",!1),localVars:t.localVars,context:t.localVars&&{vars:t.localVars},indented:0}},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation()),e.eatSpace())return null;var n=t.tokenize(e,t);return"comment"==z?n:(t.lastType=z,u(t,n,z,M,e))},indent:function(e,t){if(e.tokenize==s)return CodeMirror.Pass;if(e.tokenize!=r)return 0;var n=t&&t.charAt(0),i=e.lexical;"stat"==i.type&&"}"==n&&(i=i.prev);var a=i.type,o=n==a;return"vardef"==a?i.indented+("operator"==e.lastType||","==e.lastType?4:0):"form"==a&&"{"==n?i.indented:"form"==a?i.indented+K:"stat"==a?i.indented+("operator"==e.lastType||","==e.lastType?K:0):"switch"!=i.info||o?i.align?i.column+(o?0:1):i.indented+(o?0:K):i.indented+(/^(?:case|default)\b/.test(t)?K:2*K)},electricChars:":{}",jsonMode:$}}),CodeMirror.defineMIME("text/javascript","javascript"),CodeMirror.defineMIME("application/json",{name:"javascript",json:!0}),CodeMirror.defineMIME("text/typescript",{name:"javascript",typescript:!0}),CodeMirror.defineMIME("application/typescript",{name:"javascript",typescript:!0});