(function(a){if(typeof exports=="object"&&typeof module=="object")a(require("../../lib/codemirror"));else if(typeof define=="function"&&define.amd)define(["../../lib/codemirror"],a);else a(CodeMirror)})(function(a){"use strict";a.defineMode("modelica",function(b,c){var d=b.indentUnit;var e=c.keywords||{};var f=c.builtin||{};var g=c.atoms||{};var h=/[;=\(:\),{}.*<>+\-\/^\[\]]/;var i=/(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/;var j=/[0-9]/;var k=/[_a-zA-Z]/;function l(a,b){a.skipToEnd();b.tokenize=null;return"comment"}function m(a,b){var c=false,d;while(d=a.next()){if(c&&d=="/"){b.tokenize=null;break}c=d=="*"}return"comment"}function n(a,b){var c=false,d;while((d=a.next())!=null){if(d=='"'&&!c){b.tokenize=null;b.sol=false;break}c=!c&&d=="\\"}return"string"}function o(a,b){a.eatWhile(j);while(a.eat(j)||a.eat(k)){}var c=a.current();if(b.sol&&(c=="package"||c=="model"||c=="when"||c=="connector"))b.level++;else if(b.sol&&c=="end"&&b.level>0)b.level--;b.tokenize=null;b.sol=false;if(e.propertyIsEnumerable(c))return"keyword";else if(f.propertyIsEnumerable(c))return"builtin";else if(g.propertyIsEnumerable(c))return"atom";else return"variable"}function p(a,b){while(a.eat(/[^']/)){}b.tokenize=null;b.sol=false;if(a.eat("'"))return"variable";else return"error"}function q(a,b){a.eatWhile(j);if(a.eat(".")){a.eatWhile(j)}if(a.eat("e")||a.eat("E")){if(!a.eat("-"))a.eat("+");a.eatWhile(j)}b.tokenize=null;b.sol=false;return"number"}return{startState:function(){return{tokenize:null,level:0,sol:true}},token:function(a,b){if(b.tokenize!=null){return b.tokenize(a,b)}if(a.sol()){b.sol=true}if(a.eatSpace()){b.tokenize=null;return null}var c=a.next();if(c=="/"&&a.eat("/")){b.tokenize=l}else if(c=="/"&&a.eat("*")){b.tokenize=m}else if(i.test(c+a.peek())){a.next();b.tokenize=null;return"operator"}else if(h.test(c)){b.tokenize=null;return"operator"}else if(k.test(c)){b.tokenize=o}else if(c=="'"&&a.peek()&&a.peek()!="'"){b.tokenize=p}else if(c=='"'){b.tokenize=n}else if(j.test(c)){b.tokenize=q}else{b.tokenize=null;return"error"}return b.tokenize(a,b)},indent:function(b,c){if(b.tokenize!=null)return a.Pass;var e=b.level;if(/(algorithm)/.test(c))e--;if(/(equation)/.test(c))e--;if(/(initial algorithm)/.test(c))e--;if(/(initial equation)/.test(c))e--;if(/(end)/.test(c))e--;if(e>0)return d*e;else return 0},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}});function b(a){var b={},c=a.split(" ");for(var d=0;d