!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],t):t(CodeMirror)}((function(t){"use strict";var e={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]},a={};function n(t,e){return new RegExp((e?"^":"")+"</\\s*"+t+"\\s*>","i")}function l(t,e){for(var a in t)for(var n=e[a]||(e[a]=[]),l=t[a],o=l.length-1;o>=0;o--)n.unshift(l[o])}t.defineMode("htmlmixed",(function(o,r){var i=t.getMode(o,{name:"xml",htmlMode:!0,multilineTagIndentFactor:r.multilineTagIndentFactor,multilineTagIndentPastTag:r.multilineTagIndentPastTag,allowMissingTagName:r.allowMissingTagName}),c={},s=r&&r.tags,u=r&&r.scriptTypes;if(l(e,c),s&&l(s,c),u)for(var m=u.length-1;m>=0;m--)c.script.unshift(["type",u[m].matches,u[m].mode]);function d(e,l){var r,s=i.token(e,l.htmlState),u=/\btag\b/.test(s);if(u&&!/[<>\s\/]/.test(e.current())&&(r=l.htmlState.tagName&&l.htmlState.tagName.toLowerCase())&&c.hasOwnProperty(r))l.inTag=r+" ";else if(l.inTag&&u&&/>$/.test(e.current())){var m=/^([\S]+) (.*)/.exec(l.inTag);l.inTag=null;var g=">"==e.current()&&function(t,e){for(var n=0;n<t.length;n++){var l=t[n];if(!l[0]||l[1].test((o=e,r=l[0],i=void 0,(i=o.match(function(t){return a[t]||(a[t]=new RegExp("\\s+"+t+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}(r)))?/^\s*(.*?)\s*$/.exec(i[2])[1]:"")))return l[2]}var o,r,i}(c[m[1]],m[2]),p=t.getMode(o,g),f=n(m[1],!0),h=n(m[1],!1);l.token=function(t,e){return t.match(f,!1)?(e.token=d,e.localState=e.localMode=null,null):function(t,e,a){var n=t.current(),l=n.search(e);return l>-1?t.backUp(n.length-l):n.match(/<\/?$/)&&(t.backUp(n.length),t.match(e,!1)||t.match(n)),a}(t,h,e.localMode.token(t,e.localState))},l.localMode=p,l.localState=t.startState(p,i.indent(l.htmlState,"",""))}else l.inTag&&(l.inTag+=e.current(),e.eol()&&(l.inTag+=" "));return s}return{startState:function(){return{token:d,inTag:null,localMode:null,localState:null,htmlState:t.startState(i)}},copyState:function(e){var a;return e.localState&&(a=t.copyState(e.localMode,e.localState)),{token:e.token,inTag:e.inTag,localMode:e.localMode,localState:a,htmlState:t.copyState(i,e.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(e,a,n){return!e.localMode||/^\s*<\//.test(a)?i.indent(e.htmlState,a,n):e.localMode.indent?e.localMode.indent(e.localState,a,n):t.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||i}}}}),"xml","javascript","css"),t.defineMIME("text/html","htmlmixed")}));