CodeMirror.overlayMode=CodeMirror.overlayParser=function(e,r,o){return{startState:function(){return{base:CodeMirror.startState(e),overlay:CodeMirror.startState(r),basePos:0,baseCur:null,overlayPos:0,overlayCur:null}},copyState:function(o){return{base:CodeMirror.copyState(e,o.base),overlay:CodeMirror.copyState(r,o.overlay),basePos:o.basePos,baseCur:null,overlayPos:o.overlayPos,overlayCur:null}},token:function(a,n){return a.start==n.basePos&&(n.baseCur=e.token(a,n.base),n.basePos=a.pos),a.start==n.overlayPos&&(a.pos=a.start,n.overlayCur=r.token(a,n.overlay),n.overlayPos=a.pos),a.pos=Math.min(n.basePos,n.overlayPos),a.eol()&&(n.basePos=n.overlayPos=0),null==n.overlayCur?n.baseCur:null!=n.baseCur&&o?n.baseCur+" "+n.overlayCur:n.overlayCur},indent:e.indent&&function(r,o){return e.indent(r.base,o)},electricChars:e.electricChars,innerMode:function(r){return{state:r.base,mode:e}},blankLine:function(o){e.blankLine&&e.blankLine(o.base),r.blankLine&&r.blankLine(o.overlay)}}};