Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
TheGameCenter
GitHub Repository: TheGameCenter/TheGameCenter.github.io
Path: blob/main/assets/javascript/slope/codemirror.js
15445 views
1
/*
2
3
Copyright (C) 2012 by Marijn Haverbeke <[email protected]>
4
5
Permission is hereby granted, free of charge, to any person obtaining a copy
6
of this software and associated documentation files (the "Software"), to deal
7
in the Software without restriction, including without limitation the rights
8
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
copies of the Software, and to permit persons to whom the Software is
10
furnished to do so, subject to the following conditions:
11
12
The above copyright notice and this permission notice shall be included in
13
all copies or substantial portions of the Software.
14
15
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
THE SOFTWARE.
22
23
Please note that some subdirectories of the CodeMirror distribution
24
include their own LICENSE files, and are released under different
25
licences.
26
*/
27
window.CodeMirror=function(){function CodeMirror(place,givenOptions){var options={},defaults=CodeMirror.defaults;for(var opt in defaults)if(defaults.hasOwnProperty(opt))options[opt]=(givenOptions&&givenOptions.hasOwnProperty(opt)?givenOptions:defaults)[opt];var input=elt("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em");input.setAttribute("wrap","off");input.setAttribute("autocorrect","off");input.setAttribute("autocapitalize","off");var inputDiv=elt("div",[input],null,
28
"overflow: hidden; position: relative; width: 3px; height: 0px;");var scrollbarInner=elt("div",null,"CodeMirror-scrollbar-inner");var scrollbar=elt("div",[scrollbarInner],"CodeMirror-scrollbar");var lineDiv=elt("div"),selectionDiv=elt("div",null,null,"position: relative; z-index: -1");var cursor=elt("pre","\u00a0","CodeMirror-cursor"),widthForcer=elt("pre","\u00a0","CodeMirror-cursor","visibility: hidden");var measure=elt("div",null,null,"position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden;");
29
var lineSpace=elt("div",[measure,cursor,widthForcer,selectionDiv,lineDiv],null,"position: relative; z-index: 0");var gutterText=elt("div",null,"CodeMirror-gutter-text"),gutter=elt("div",[gutterText],"CodeMirror-gutter");var mover=elt("div",[gutter,elt("div",[lineSpace],"CodeMirror-lines")],null,"position: relative");var sizer=elt("div",[mover],null,"position: relative");var scroller=elt("div",[sizer],"CodeMirror-scroll");scroller.setAttribute("tabIndex","-1");var wrapper=elt("div",[inputDiv,scrollbar,
30
scroller],"CodeMirror"+(options.lineWrapping?" CodeMirror-wrap":""));if(place.appendChild)place.appendChild(wrapper);else place(wrapper);themeChanged();keyMapChanged();if(ios)input.style.width="0px";if(!webkit)scroller.draggable=true;lineSpace.style.outline="none";if(options.tabindex!=null)input.tabIndex=options.tabindex;if(options.autofocus)focusInput();if(!options.gutter&&!options.lineNumbers)gutter.style.display="none";if(khtml)inputDiv.style.height="1px",inputDiv.style.position="absolute";if(mac_geLion){scrollbar.style.zIndex=
31
-2;scrollbar.style.visibility="hidden"}else if(ie_lt8)scrollbar.style.minWidth="18px";var poll=new Delayed,highlight=new Delayed,blinker;var mode,doc=new BranchChunk([new LeafChunk([new Line("")])]),frontier=0,focused;loadMode();var sel={from:{line:0,ch:0},to:{line:0,ch:0},inverted:false};var shiftSelecting,lastClick,lastDoubleClick,lastScrollTop=0,draggingText,overwrite=false,suppressEdits=false,pasteIncoming=false;var updateInput,userSelChange,changes,textChanged,selectionChanged,gutterDirty,callbacks;
32
var displayOffset=0,showingFrom=0,showingTo=0,lastSizeC=0;var bracketHighlighted;var maxLine=getLine(0),updateMaxLine=false,maxLineChanged=true;var pollingFast=false;var goalColumn=null;operation(function(){setValue(options.value||"");updateInput=false})();var history=new History;connect(scroller,"mousedown",operation(onMouseDown));connect(scroller,"dblclick",operation(onDoubleClick));connect(lineSpace,"selectstart",e_preventDefault);if(!gecko)connect(scroller,"contextmenu",onContextMenu);connect(scroller,
33
"scroll",onScrollMain);connect(scrollbar,"scroll",onScrollBar);connect(scrollbar,"mousedown",function(){if(focused)setTimeout(focusInput,0)});var resizeHandler=connect(window,"resize",function(){if(wrapper.parentNode)updateDisplay(true);else resizeHandler()},true);connect(input,"keyup",operation(onKeyUp));connect(input,"input",fastPoll);connect(input,"keydown",operation(onKeyDown));connect(input,"keypress",operation(onKeyPress));connect(input,"focus",onFocus);connect(input,"blur",onBlur);function drag_(e){if(options.onDragEvent&&
34
options.onDragEvent(instance,addStop(e)))return;e_stop(e)}if(options.dragDrop){connect(scroller,"dragstart",onDragStart);connect(scroller,"dragenter",drag_);connect(scroller,"dragover",drag_);connect(scroller,"drop",operation(onDrop))}connect(scroller,"paste",function(){focusInput();fastPoll()});connect(input,"paste",function(){pasteIncoming=true;fastPoll()});connect(input,"cut",operation(function(){if(!options.readOnly)replaceSelection("")}));if(khtml)connect(sizer,"mouseup",function(){if(document.activeElement==
35
input)input.blur();focusInput()});var hasFocus;try{hasFocus=document.activeElement==input}catch(e){}if(hasFocus||options.autofocus)setTimeout(onFocus,20);else onBlur();function isLine(l){return l>=0&&l<doc.size}var instance=wrapper.CodeMirror={getValue:getValue,setValue:operation(setValue),getSelection:getSelection,replaceSelection:operation(replaceSelection),focus:function(){window.focus();focusInput();onFocus();fastPoll()},setOption:function(option,value){var oldVal=options[option];options[option]=
36
value;if(option=="mode"||option=="indentUnit")loadMode();else if(option=="readOnly"&&value=="nocursor"){onBlur();input.blur()}else if(option=="readOnly"&&!value)resetInput(true);else if(option=="theme")themeChanged();else if(option=="lineWrapping"&&oldVal!=value)operation(wrappingChanged)();else if(option=="tabSize")updateDisplay(true);else if(option=="keyMap")keyMapChanged();else if(option=="tabindex")input.tabIndex=value;else if(option=="showCursorWhenSelecting")updateSelection();if(option=="lineNumbers"||
37
option=="gutter"||option=="firstLineNumber"||option=="theme"||option=="lineNumberFormatter"){gutterChanged();updateDisplay(true)}},getOption:function(option){return options[option]},getMode:function(){return mode},undo:operation(undo),redo:operation(redo),indentLine:operation(function(n,dir){if(typeof dir!="string")if(dir==null)dir=options.smartIndent?"smart":"prev";else dir=dir?"add":"subtract";if(isLine(n))indentLine(n,dir)}),indentSelection:operation(indentSelected),historySize:function(){return{undo:history.done.length,
38
redo:history.undone.length}},clearHistory:function(){history=new History},setHistory:function(histData){history=new History;history.done=histData.done;history.undone=histData.undone},getHistory:function(){function cp(arr){for(var i=0,nw=[],nwelt;i<arr.length;++i){nw.push(nwelt=[]);for(var j=0,elt=arr[i];j<elt.length;++j){var old=[],cur=elt[j];nwelt.push({start:cur.start,added:cur.added,old:old});for(var k=0;k<cur.old.length;++k)old.push(hlText(cur.old[k]))}}return nw}return{done:cp(history.done),
39
undone:cp(history.undone)}},matchBrackets:operation(function(){matchBrackets(true)}),getTokenAt:operation(function(pos){pos=clipPos(pos);return getLine(pos.line).getTokenAt(mode,getStateBefore(pos.line),options.tabSize,pos.ch)}),getStateAfter:function(line){line=clipLine(line==null?doc.size-1:line);return getStateBefore(line+1)},cursorCoords:function(start,mode){if(start==null)start=sel.inverted;return this.charCoords(start?sel.from:sel.to,mode)},charCoords:function(pos,mode){pos=clipPos(pos);if(mode==
40
"local")return localCoords(pos,false);if(mode=="div")return localCoords(pos,true);return pageCoords(pos)},coordsChar:function(coords){var off=eltOffset(lineSpace);return coordsChar(coords.x-off.left,coords.y-off.top)},defaultTextHeight:function(){return textHeight()},markText:operation(markText),setBookmark:setBookmark,findMarksAt:findMarksAt,setMarker:operation(addGutterMarker),clearMarker:operation(removeGutterMarker),setLineClass:operation(setLineClass),hideLine:operation(function(h){return setLineHidden(h,
41
true)}),showLine:operation(function(h){return setLineHidden(h,false)}),onDeleteLine:function(line,f){if(typeof line=="number"){if(!isLine(line))return null;line=getLine(line)}(line.handlers||(line.handlers=[])).push(f);return line},lineInfo:lineInfo,getViewport:function(){return{from:showingFrom,to:showingTo}},addWidget:function(pos,node,scroll,vert,horiz){pos=localCoords(clipPos(pos));var top=pos.yBot,left=pos.x;node.style.position="absolute";sizer.appendChild(node);if(vert=="over")top=pos.y;else if(vert==
42
"near"){var vspace=Math.max(scroller.offsetHeight,doc.height*textHeight()),hspace=Math.max(sizer.clientWidth,lineSpace.clientWidth)-paddingLeft();if(pos.yBot+node.offsetHeight>vspace&&pos.y>node.offsetHeight)top=pos.y-node.offsetHeight;if(left+node.offsetWidth>hspace)left=hspace-node.offsetWidth}node.style.top=top+paddingTop()+"px";node.style.left=node.style.right="";if(horiz=="right"){left=sizer.clientWidth-node.offsetWidth;node.style.right="0px"}else{if(horiz=="left")left=0;else if(horiz=="middle")left=
43
(sizer.clientWidth-node.offsetWidth)/2;node.style.left=left+paddingLeft()+"px"}if(scroll)scrollIntoView(left,top,left+node.offsetWidth,top+node.offsetHeight)},lineCount:function(){return doc.size},clipPos:clipPos,getCursor:function(start){if(start==null||start=="head")start=sel.inverted;if(start=="anchor")start=!sel.inverted;if(start=="end")start=false;return copyPos(start?sel.from:sel.to)},somethingSelected:function(){return!posEq(sel.from,sel.to)},setCursor:operation(function(line,ch,user){if(ch==
44
null&&typeof line.line=="number")setCursor(line.line,line.ch,user);else setCursor(line,ch,user)}),setSelection:operation(function(from,to,user){(user?setSelectionUser:setSelection)(clipPos(from),clipPos(to||from))}),getLine:function(line){if(isLine(line))return getLine(line).text},getLineHandle:function(line){if(isLine(line))return getLine(line)},setLine:operation(function(line,text){if(isLine(line))replaceRange(text,{line:line,ch:0},{line:line,ch:getLine(line).text.length})}),removeLine:operation(function(line){if(isLine(line))replaceRange("",
45
{line:line,ch:0},clipPos({line:line+1,ch:0}))}),replaceRange:operation(replaceRange),getRange:function(from,to,lineSep){return getRange(clipPos(from),clipPos(to),lineSep)},triggerOnKeyDown:operation(onKeyDown),execCommand:function(cmd){return commands[cmd](instance)},moveH:operation(moveH),deleteH:operation(deleteH),moveV:operation(moveV),toggleOverwrite:function(){if(overwrite){overwrite=false;cursor.className=cursor.className.replace(" CodeMirror-overwrite","")}else{overwrite=true;cursor.className+=
46
" CodeMirror-overwrite"}},posFromIndex:function(off){var lineNo=0,ch;doc.iter(0,doc.size,function(line){var sz=line.text.length+1;if(sz>off){ch=off;return true}off-=sz;++lineNo});return clipPos({line:lineNo,ch:ch})},indexFromPos:function(coords){if(coords.line<0||coords.ch<0)return 0;var index=coords.ch;doc.iter(0,coords.line,function(line){index+=line.text.length+1});return index},scrollTo:function(x,y){if(x!=null)scroller.scrollLeft=x;if(y!=null)scrollbar.scrollTop=scroller.scrollTop=y;updateDisplay([])},
47
getScrollInfo:function(){return{x:scroller.scrollLeft,y:scrollbar.scrollTop,height:scrollbar.scrollHeight,width:scroller.scrollWidth}},scrollIntoView:function(pos){var coords=localCoords(pos?clipPos(pos):sel.inverted?sel.from:sel.to);scrollIntoView(coords.x,coords.y,coords.x,coords.yBot)},setSize:function(width,height){function interpret(val){val=String(val);return/^\d+$/.test(val)?val+"px":val}if(width!=null)wrapper.style.width=interpret(width);if(height!=null)scroller.style.height=interpret(height);
48
instance.refresh()},operation:function(f){return operation(f)()},compoundChange:function(f){return compoundChange(f)},refresh:function(){updateDisplay(true,null,lastScrollTop);if(scrollbar.scrollHeight>lastScrollTop)scrollbar.scrollTop=lastScrollTop},getInputField:function(){return input},getWrapperElement:function(){return wrapper},getScrollerElement:function(){return scroller},getGutterElement:function(){return gutter}};function getLine(n){return getLineAt(doc,n)}function updateLineHeight(line,
49
height){gutterDirty=true;var diff=height-line.height;for(var n=line;n;n=n.parent)n.height+=diff}function lineContent(line,wrapAt){if(!line.styles)line.highlight(mode,line.stateAfter=getStateBefore(lineNo(line)),options.tabSize);return line.getContent(options.tabSize,wrapAt,options.lineWrapping)}function setValue(code){var top={line:0,ch:0};updateLines(top,{line:doc.size-1,ch:getLine(doc.size-1).text.length},splitLines(code),top,top);updateInput=true}function getValue(lineSep){var text=[];doc.iter(0,
50
doc.size,function(line){text.push(line.text)});return text.join(lineSep||"\n")}function onScrollBar(e){if(Math.abs(scrollbar.scrollTop-lastScrollTop)>1){lastScrollTop=scroller.scrollTop=scrollbar.scrollTop;updateDisplay([])}}function onScrollMain(e){if(options.fixedGutter&&gutter.style.left!=scroller.scrollLeft+"px")gutter.style.left=scroller.scrollLeft+"px";if(Math.abs(scroller.scrollTop-lastScrollTop)>1){lastScrollTop=scroller.scrollTop;if(scrollbar.scrollTop!=lastScrollTop)scrollbar.scrollTop=
51
lastScrollTop;updateDisplay([])}if(options.onScroll)options.onScroll(instance)}function onMouseDown(e){setShift(e_prop(e,"shiftKey"));for(var n=e_target(e);n!=wrapper;n=n.parentNode)if(n.parentNode==sizer&&n!=mover)return;for(var n=e_target(e);n!=wrapper;n=n.parentNode)if(n.parentNode==gutterText){if(options.onGutterClick)options.onGutterClick(instance,indexOf(gutterText.childNodes,n)+showingFrom,e);return e_preventDefault(e)}var start=posFromMouse(e);switch(e_button(e)){case 3:if(gecko)onContextMenu(e);
52
return;case 2:if(start)setCursor(start.line,start.ch,true);setTimeout(focusInput,20);e_preventDefault(e);return}if(!start){if(e_target(e)==scroller)e_preventDefault(e);return}if(!focused)onFocus();var now=+new Date,type="single";if(lastDoubleClick&&lastDoubleClick.time>now-400&&posEq(lastDoubleClick.pos,start)){type="triple";e_preventDefault(e);setTimeout(focusInput,20);selectLine(start.line)}else if(lastClick&&lastClick.time>now-400&&posEq(lastClick.pos,start)){type="double";lastDoubleClick={time:now,
53
pos:start};e_preventDefault(e);var word=findWordAt(start);setSelectionUser(word.from,word.to)}else lastClick={time:now,pos:start};function dragEnd(e2){if(webkit)scroller.draggable=false;draggingText=false;up();drop();if(Math.abs(e.clientX-e2.clientX)+Math.abs(e.clientY-e2.clientY)<10){e_preventDefault(e2);setCursor(start.line,start.ch,true);focusInput()}}var last=start,going;if(options.dragDrop&&dragAndDrop&&!options.readOnly&&!posEq(sel.from,sel.to)&&!posLess(start,sel.from)&&!posLess(sel.to,start)&&
54
type=="single"){if(webkit)scroller.draggable=true;var up=connect(document,"mouseup",operation(dragEnd),true);var drop=connect(scroller,"drop",operation(dragEnd),true);draggingText=true;if(scroller.dragDrop)scroller.dragDrop();return}e_preventDefault(e);if(type=="single")setCursor(start.line,start.ch,true);var startstart=sel.from,startend=sel.to;function doSelect(cur){if(type=="single"){setSelectionUser(clipPos(start),cur);return}startstart=clipPos(startstart);startend=clipPos(startend);if(type=="double"){var word=
55
findWordAt(cur);if(posLess(cur,startstart))setSelectionUser(word.from,startend);else setSelectionUser(startstart,word.to)}else if(type=="triple")if(posLess(cur,startstart))setSelectionUser(startend,clipPos({line:cur.line,ch:0}));else setSelectionUser(startstart,clipPos({line:cur.line+1,ch:0}))}function extend(e){var cur=posFromMouse(e,true);if(cur&&!posEq(cur,last)){if(!focused)onFocus();last=cur;doSelect(cur);updateInput=false;var visible=visibleLines();if(cur.line>=visible.to||cur.line<visible.from)going=
56
setTimeout(operation(function(){extend(e)}),150)}}function done(e){clearTimeout(going);var cur=posFromMouse(e);if(cur)doSelect(cur);e_preventDefault(e);focusInput();updateInput=true;move();up()}var move=connect(document,"mousemove",operation(function(e){clearTimeout(going);e_preventDefault(e);if(!ie&&!e_button(e))done(e);else extend(e)}),true);var up=connect(document,"mouseup",operation(done),true)}function onDoubleClick(e){for(var n=e_target(e);n!=wrapper;n=n.parentNode)if(n.parentNode==gutterText)return e_preventDefault(e);
57
e_preventDefault(e)}function onDrop(e){if(options.onDragEvent&&options.onDragEvent(instance,addStop(e)))return;e_preventDefault(e);var pos=posFromMouse(e,true),files=e.dataTransfer.files;if(!pos||options.readOnly)return;if(files&&files.length&&window.FileReader&&window.File){var n=files.length,text=Array(n),read=0;var loadFile=function(file,i){var reader=new FileReader;reader.onload=function(){text[i]=reader.result;if(++read==n){pos=clipPos(pos);operation(function(){var end=replaceRange(text.join(""),
58
pos,pos);setSelectionUser(pos,end)})()}};reader.readAsText(file)};for(var i=0;i<n;++i)loadFile(files[i],i)}else{if(draggingText&&!(posLess(pos,sel.from)||posLess(sel.to,pos)))return;try{var text=e.dataTransfer.getData("Text");if(text)compoundChange(function(){var curFrom=sel.from,curTo=sel.to;setSelectionUser(pos,pos);if(draggingText)replaceRange("",curFrom,curTo);replaceSelection(text);focusInput()})}catch(e$0){}}}function onDragStart(e){var txt=getSelection();e.dataTransfer.setData("Text",txt);
59
if(e.dataTransfer.setDragImage)e.dataTransfer.setDragImage(elt("img"),0,0)}function doHandleBinding(bound,dropShift){if(typeof bound=="string"){bound=commands[bound];if(!bound)return false}var prevShift=shiftSelecting;try{if(options.readOnly)suppressEdits=true;if(dropShift)shiftSelecting=null;bound(instance)}catch(e$1){if(e$1!=Pass)throw e$1;return false}finally{shiftSelecting=prevShift;suppressEdits=false}return true}var maybeTransition;function handleKeyBinding(e){var startMap=getKeyMap(options.keyMap),
60
next=startMap.auto;clearTimeout(maybeTransition);if(next&&!isModifierKey(e))maybeTransition=setTimeout(function(){if(getKeyMap(options.keyMap)==startMap)options.keyMap=next.call?next.call(null,instance):next},50);var name=keyNames[e_prop(e,"keyCode")],handled=false;if(name==null||e.altGraphKey)return false;if(e_prop(e,"altKey"))name="Alt-"+name;if(e_prop(e,flipCtrlCmd?"metaKey":"ctrlKey"))name="Ctrl-"+name;if(e_prop(e,flipCtrlCmd?"ctrlKey":"metaKey"))name="Cmd-"+name;var stopped=false;function stop(){stopped=
61
true}if(e_prop(e,"shiftKey"))handled=lookupKey("Shift-"+name,options.extraKeys,options.keyMap,function(b){return doHandleBinding(b,true)},stop)||lookupKey(name,options.extraKeys,options.keyMap,function(b){if(typeof b=="string"&&/^go[A-Z]/.test(b))return doHandleBinding(b)},stop);else handled=lookupKey(name,options.extraKeys,options.keyMap,doHandleBinding,stop);if(stopped)handled=false;if(handled){e_preventDefault(e);restartBlink();if(ie_lt9){e.oldKeyCode=e.keyCode;e.keyCode=0}}return handled}function handleCharBinding(e,
62
ch){var handled=lookupKey("'"+ch+"'",options.extraKeys,options.keyMap,function(b){return doHandleBinding(b,true)});if(handled){e_preventDefault(e);restartBlink()}return handled}var lastStoppedKey=null;function onKeyDown(e){if(!focused)onFocus();if(ie&&e.keyCode==27)e.returnValue=false;if(pollingFast)if(readInput())pollingFast=false;if(options.onKeyEvent&&options.onKeyEvent(instance,addStop(e)))return;var code=e_prop(e,"keyCode");setShift(code==16||e_prop(e,"shiftKey"));var handled=handleKeyBinding(e);
63
if(opera){lastStoppedKey=handled?code:null;if(!handled&&code==88&&e_prop(e,mac?"metaKey":"ctrlKey"))replaceSelection("")}}function onKeyPress(e){if(pollingFast)readInput();if(options.onKeyEvent&&options.onKeyEvent(instance,addStop(e)))return;var keyCode=e_prop(e,"keyCode"),charCode=e_prop(e,"charCode");if(opera&&keyCode==lastStoppedKey){lastStoppedKey=null;e_preventDefault(e);return}if((opera&&(!e.which||e.which<10)||khtml)&&handleKeyBinding(e))return;var ch=String.fromCharCode(charCode==null?keyCode:
64
charCode);if(options.electricChars&&mode.electricChars&&options.smartIndent&&!options.readOnly)if(mode.electricChars.indexOf(ch)>-1)setTimeout(operation(function(){indentLine(sel.to.line,"smart")}),75);if(handleCharBinding(e,ch))return;fastPoll()}function onKeyUp(e){if(options.onKeyEvent&&options.onKeyEvent(instance,addStop(e)))return;if(e_prop(e,"keyCode")==16)shiftSelecting=null}function onFocus(){if(options.readOnly=="nocursor")return;if(!focused){if(options.onFocus)options.onFocus(instance);focused=
65
true;if(scroller.className.search(/\bCodeMirror-focused\b/)==-1)scroller.className+=" CodeMirror-focused"}slowPoll();restartBlink()}function onBlur(){if(focused){if(options.onBlur)options.onBlur(instance);focused=false;if(bracketHighlighted)operation(function(){if(bracketHighlighted){bracketHighlighted();bracketHighlighted=null}})();scroller.className=scroller.className.replace(" CodeMirror-focused","")}clearInterval(blinker);setTimeout(function(){if(!focused)shiftSelecting=null},150)}function updateLines(from,
66
to,newText,selFrom,selTo){if(suppressEdits)return;var old=[];doc.iter(from.line,to.line+1,function(line){old.push(newHL(line.text,line.markedSpans))});if(history){history.addChange(from.line,newText.length,old);while(history.done.length>options.undoDepth)history.done.shift()}var lines=updateMarkedSpans(hlSpans(old[0]),hlSpans(lst(old)),from.ch,to.ch,newText);updateLinesNoUndo(from,to,lines,selFrom,selTo)}function unredoHelper(from,to){if(!from.length)return;var set=from.pop(),out=[];for(var i=set.length-
67
1;i>=0;i-=1){var change=set[i];var replaced=[],end=change.start+change.added;doc.iter(change.start,end,function(line){replaced.push(newHL(line.text,line.markedSpans))});out.push({start:change.start,added:change.old.length,old:replaced});var pos={line:change.start+change.old.length-1,ch:editEnd(hlText(lst(replaced)),hlText(lst(change.old)))};updateLinesNoUndo({line:change.start,ch:0},{line:end-1,ch:getLine(end-1).text.length},change.old,pos,pos)}updateInput=true;to.push(out)}function undo(){unredoHelper(history.done,
68
history.undone)}function redo(){unredoHelper(history.undone,history.done)}function updateLinesNoUndo(from,to,lines,selFrom,selTo){if(suppressEdits)return;var recomputeMaxLength=false,maxLineLength=maxLine.text.length;if(!options.lineWrapping)doc.iter(from.line,to.line+1,function(line){if(!line.hidden&&line.text.length==maxLineLength){recomputeMaxLength=true;return true}});if(from.line!=to.line||lines.length>1)gutterDirty=true;var nlines=to.line-from.line,firstLine=getLine(from.line),lastLine=getLine(to.line);
69
var lastHL=lst(lines);if(from.ch==0&&to.ch==0&&hlText(lastHL)==""){var added=[],prevLine=null;for(var i=0,e=lines.length-1;i<e;++i)added.push(new Line(hlText(lines[i]),hlSpans(lines[i])));lastLine.update(lastLine.text,hlSpans(lastHL));if(nlines)doc.remove(from.line,nlines,callbacks);if(added.length)doc.insert(from.line,added)}else if(firstLine==lastLine)if(lines.length==1)firstLine.update(firstLine.text.slice(0,from.ch)+hlText(lines[0])+firstLine.text.slice(to.ch),hlSpans(lines[0]));else{for(var added=
70
[],i=1,e=lines.length-1;i<e;++i)added.push(new Line(hlText(lines[i]),hlSpans(lines[i])));added.push(new Line(hlText(lastHL)+firstLine.text.slice(to.ch),hlSpans(lastHL)));firstLine.update(firstLine.text.slice(0,from.ch)+hlText(lines[0]),hlSpans(lines[0]));doc.insert(from.line+1,added)}else if(lines.length==1){firstLine.update(firstLine.text.slice(0,from.ch)+hlText(lines[0])+lastLine.text.slice(to.ch),hlSpans(lines[0]));doc.remove(from.line+1,nlines,callbacks)}else{var added=[];firstLine.update(firstLine.text.slice(0,
71
from.ch)+hlText(lines[0]),hlSpans(lines[0]));lastLine.update(hlText(lastHL)+lastLine.text.slice(to.ch),hlSpans(lastHL));for(var i=1,e=lines.length-1;i<e;++i)added.push(new Line(hlText(lines[i]),hlSpans(lines[i])));if(nlines>1)doc.remove(from.line+1,nlines-1,callbacks);doc.insert(from.line+1,added)}if(options.lineWrapping){var perLine=Math.max(5,scroller.clientWidth/charWidth()-3);doc.iter(from.line,from.line+lines.length,function(line){if(line.hidden)return;var guess=Math.ceil(line.text.length/perLine)||
72
1;if(guess!=line.height)updateLineHeight(line,guess)})}else{doc.iter(from.line,from.line+lines.length,function(line){var l=line.text;if(!line.hidden&&l.length>maxLineLength){maxLine=line;maxLineLength=l.length;maxLineChanged=true;recomputeMaxLength=false}});if(recomputeMaxLength)updateMaxLine=true}frontier=Math.min(frontier,from.line);startWorker(400);var lendiff=lines.length-nlines-1;changes.push({from:from.line,to:to.line+1,diff:lendiff});if(options.onChange){for(var i=0;i<lines.length;++i)if(typeof lines[i]!=
73
"string")lines[i]=lines[i].text;var changeObj={from:from,to:to,text:lines};if(textChanged){for(var cur=textChanged;cur.next;cur=cur.next);cur.next=changeObj}else textChanged=changeObj}function updateLine(n){return n<=Math.min(to.line,to.line+lendiff)?n:n+lendiff}setSelection(clipPos(selFrom),clipPos(selTo),updateLine(sel.from.line),updateLine(sel.to.line))}function needsScrollbar(){var realHeight=doc.height*textHeight()+2*paddingTop();return realHeight*.99>scroller.offsetHeight?realHeight:false}function updateVerticalScroll(scrollTop){var scrollHeight=
74
needsScrollbar();scrollbar.style.display=scrollHeight?"block":"none";if(scrollHeight){scrollbarInner.style.height=sizer.style.minHeight=scrollHeight+"px";scrollbar.style.height=scroller.clientHeight+"px";if(scrollTop!=null){scrollbar.scrollTop=scroller.scrollTop=scrollTop;if(webkit)setTimeout(function(){if(scrollbar.scrollTop!=scrollTop)return;scrollbar.scrollTop=scrollTop+(scrollTop?-1:1);scrollbar.scrollTop=scrollTop},0)}}else sizer.style.minHeight="";mover.style.top=displayOffset*textHeight()+
75
"px"}function computeMaxLength(){maxLine=getLine(0);maxLineChanged=true;var maxLineLength=maxLine.text.length;doc.iter(1,doc.size,function(line){var l=line.text;if(!line.hidden&&l.length>maxLineLength){maxLineLength=l.length;maxLine=line}});updateMaxLine=false}function replaceRange(code,from,to){from=clipPos(from);if(!to)to=from;else to=clipPos(to);code=splitLines(code);function adjustPos(pos){if(posLess(pos,from))return pos;if(!posLess(to,pos))return end;var line=pos.line+code.length-(to.line-from.line)-
76
1;var ch=pos.ch;if(pos.line==to.line)ch+=lst(code).length-(to.ch-(to.line==from.line?from.ch:0));return{line:line,ch:ch}}var end;replaceRange1(code,from,to,function(end1){end=end1;return{from:adjustPos(sel.from),to:adjustPos(sel.to)}});return end}function replaceSelection(code,collapse){replaceRange1(splitLines(code),sel.from,sel.to,function(end){if(collapse=="end")return{from:end,to:end};else if(collapse=="start")return{from:sel.from,to:sel.from};else return{from:sel.from,to:end}})}function replaceRange1(code,
77
from,to,computeSel){var endch=code.length==1?code[0].length+from.ch:lst(code).length;var newSel=computeSel({line:from.line+code.length-1,ch:endch});updateLines(from,to,code,newSel.from,newSel.to)}function getRange(from,to,lineSep){var l1=from.line,l2=to.line;if(l1==l2)return getLine(l1).text.slice(from.ch,to.ch);var code=[getLine(l1).text.slice(from.ch)];doc.iter(l1+1,l2,function(line){code.push(line.text)});code.push(getLine(l2).text.slice(0,to.ch));return code.join(lineSep||"\n")}function getSelection(lineSep){return getRange(sel.from,
78
sel.to,lineSep)}function slowPoll(){if(pollingFast)return;poll.set(options.pollInterval,function(){readInput();if(focused)slowPoll()})}function fastPoll(){var missed=false;pollingFast=true;function p(){var changed=readInput();if(!changed&&!missed){missed=true;poll.set(60,p)}else{pollingFast=false;slowPoll()}}poll.set(20,p)}var prevInput="";function readInput(){if(!focused||hasSelection(input)||options.readOnly)return false;var text=input.value;if(text==prevInput)return false;if(!nestedOperation)startOperation();
79
shiftSelecting=null;var same=0,l=Math.min(prevInput.length,text.length);while(same<l&&prevInput[same]==text[same])++same;if(same<prevInput.length)sel.from={line:sel.from.line,ch:sel.from.ch-(prevInput.length-same)};else if(overwrite&&posEq(sel.from,sel.to)&&!pasteIncoming)sel.to={line:sel.to.line,ch:Math.min(getLine(sel.to.line).text.length,sel.to.ch+(text.length-same))};replaceSelection(text.slice(same),"end");if(text.length>1E3)input.value=prevInput="";else prevInput=text;if(!nestedOperation)endOperation();
80
pasteIncoming=false;return true}function resetInput(user){if(!posEq(sel.from,sel.to)){prevInput="";input.value=getSelection();if(focused)selectInput(input)}else if(user)prevInput=input.value=""}function focusInput(){if(options.readOnly!="nocursor"&&(ie_lt9||document.activeElement!=input))input.focus()}function scrollCursorIntoView(){var coords=calculateCursorCoords();scrollIntoView(coords.x,coords.y,coords.x,coords.yBot);if(!focused)return;var box=sizer.getBoundingClientRect(),doScroll=null;if(coords.y+
81
box.top<0)doScroll=true;else if(coords.y+box.top+textHeight()>(window.innerHeight||document.documentElement.clientHeight))doScroll=false;if(doScroll!=null){var hidden=cursor.style.display=="none";if(hidden){cursor.style.display="";cursor.style.left=coords.x+"px";cursor.style.top=coords.y-displayOffset+"px"}cursor.scrollIntoView(doScroll);if(hidden)cursor.style.display="none"}}function calculateCursorCoords(){var cursor=localCoords(sel.inverted?sel.from:sel.to);var x=options.lineWrapping?Math.min(cursor.x,
82
lineSpace.offsetWidth):cursor.x;return{x:x,y:cursor.y,yBot:cursor.yBot}}function scrollIntoView(x1,y1,x2,y2){var scrollPos=calculateScrollPos(x1,y1,x2,y2);if(scrollPos.scrollLeft!=null)scroller.scrollLeft=scrollPos.scrollLeft;if(scrollPos.scrollTop!=null)scrollbar.scrollTop=scroller.scrollTop=scrollPos.scrollTop}function calculateScrollPos(x1,y1,x2,y2){var pl=paddingLeft(),pt=paddingTop();y1+=pt;y2+=pt;x1+=pl;x2+=pl;var screen=scroller.clientHeight,screentop=scrollbar.scrollTop,result={};var docBottom=
83
needsScrollbar()||Infinity;var atTop=y1<pt+10,atBottom=y2+pt>docBottom-10;if(y1<screentop)result.scrollTop=atTop?0:Math.max(0,y1);else if(y2>screentop+screen)result.scrollTop=(atBottom?docBottom:y2)-screen;var screenw=scroller.clientWidth,screenleft=scroller.scrollLeft;var gutterw=options.fixedGutter?gutter.clientWidth:0;var atLeft=x1<gutterw+pl+10;if(x1<screenleft+gutterw||atLeft){if(atLeft)x1=0;result.scrollLeft=Math.max(0,x1-10-gutterw)}else if(x2>screenw+screenleft-3)result.scrollLeft=x2+10-screenw;
84
return result}function visibleLines(scrollTop){var lh=textHeight(),top=(scrollTop!=null?scrollTop:scrollbar.scrollTop)-paddingTop();var fromHeight=Math.max(0,Math.floor(top/lh));var toHeight=Math.ceil((top+scroller.clientHeight)/lh);return{from:lineAtHeight(doc,fromHeight),to:lineAtHeight(doc,toHeight)}}function updateDisplay(changes,suppressCallback,scrollTop){if(!scroller.clientWidth){showingFrom=showingTo=displayOffset=0;return}var visible=visibleLines(scrollTop);if(changes!==true&&changes.length==
85
0&&visible.from>showingFrom&&visible.to<showingTo){updateVerticalScroll(scrollTop);return}var from=Math.max(visible.from-100,0),to=Math.min(doc.size,visible.to+100);if(showingFrom<from&&from-showingFrom<20)from=showingFrom;if(showingTo>to&&showingTo-to<20)to=Math.min(doc.size,showingTo);var intact=changes===true?[]:computeIntact([{from:showingFrom,to:showingTo,domStart:0}],changes);var intactLines=0;for(var i=0;i<intact.length;++i){var range=intact[i];if(range.from<from){range.domStart+=from-range.from;
86
range.from=from}if(range.to>to)range.to=to;if(range.from>=range.to)intact.splice(i--,1);else intactLines+=range.to-range.from}if(intactLines==to-from&&from==showingFrom&&to==showingTo){updateVerticalScroll(scrollTop);return}intact.sort(function(a,b){return a.domStart-b.domStart});var th=textHeight(),gutterDisplay=gutter.style.display;lineDiv.style.display="none";patchDisplay(from,to,intact);lineDiv.style.display=gutter.style.display="";var different=from!=showingFrom||to!=showingTo||lastSizeC!=scroller.clientHeight+
87
th;if(different)lastSizeC=scroller.clientHeight+th;if(from!=showingFrom||to!=showingTo&&options.onViewportChange)setTimeout(function(){if(options.onViewportChange)options.onViewportChange(instance,from,to)});showingFrom=from;showingTo=to;displayOffset=heightAtLine(doc,from);startWorker(100);if(lineDiv.childNodes.length!=showingTo-showingFrom)throw new Error("BAD PATCH! "+JSON.stringify(intact)+" size="+(showingTo-showingFrom)+" nodes="+lineDiv.childNodes.length);function checkHeights(){var curNode=
88
lineDiv.firstChild,heightChanged=false;doc.iter(showingFrom,showingTo,function(line){if(!curNode)return;if(!line.hidden){var height=Math.round(curNode.offsetHeight/th)||1;if(line.height!=height){updateLineHeight(line,height);gutterDirty=heightChanged=true}}curNode=curNode.nextSibling});return heightChanged}if(options.lineWrapping)checkHeights();gutter.style.display=gutterDisplay;if(different||gutterDirty)updateGutter()&&options.lineWrapping&&checkHeights()&&updateGutter();updateVerticalScroll(scrollTop);
89
updateSelection();if(!suppressCallback&&options.onUpdate)options.onUpdate(instance);return true}function computeIntact(intact,changes){for(var i=0,l=changes.length||0;i<l;++i){var change=changes[i],intact2=[],diff=change.diff||0;for(var j=0,l2=intact.length;j<l2;++j){var range=intact[j];if(change.to<=range.from&&change.diff)intact2.push({from:range.from+diff,to:range.to+diff,domStart:range.domStart});else if(change.to<=range.from||change.from>=range.to)intact2.push(range);else{if(change.from>range.from)intact2.push({from:range.from,
90
to:change.from,domStart:range.domStart});if(change.to<range.to)intact2.push({from:change.to+diff,to:range.to+diff,domStart:range.domStart+(change.to-range.from)})}}intact=intact2}return intact}function patchDisplay(from,to,intact){function killNode(node){var tmp=node.nextSibling;node.parentNode.removeChild(node);return tmp}if(!intact.length)removeChildren(lineDiv);else{var domPos=0,curNode=lineDiv.firstChild,n;for(var i=0;i<intact.length;++i){var cur=intact[i];while(cur.domStart>domPos){curNode=killNode(curNode);
91
domPos++}for(var j=0,e=cur.to-cur.from;j<e;++j){curNode=curNode.nextSibling;domPos++}}while(curNode)curNode=killNode(curNode)}var nextIntact=intact.shift(),curNode=lineDiv.firstChild,j=from;doc.iter(from,to,function(line){if(nextIntact&&nextIntact.to==j)nextIntact=intact.shift();if(!nextIntact||nextIntact.from>j){if(line.hidden)var lineElement=elt("pre");else{var lineElement=lineContent(line);if(line.className)lineElement.className=line.className;if(line.bgClassName){var pre=elt("pre","\u00a0",line.bgClassName,
92
"position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: -2");lineElement=elt("div",[pre,lineElement],null,"position: relative")}}lineDiv.insertBefore(lineElement,curNode)}else curNode=curNode.nextSibling;++j})}function updateGutter(){if(!options.gutter&&!options.lineNumbers)return;var hText=mover.offsetHeight,hEditor=scroller.clientHeight;gutter.style.height=(hText-hEditor<2?hEditor:hText)+"px";var fragment=document.createDocumentFragment(),i=showingFrom,normalNode;doc.iter(showingFrom,
93
Math.max(showingTo,showingFrom+1),function(line){if(line.hidden)fragment.appendChild(elt("pre"));else{var marker=line.gutterMarker;var text=options.lineNumbers?options.lineNumberFormatter(i+options.firstLineNumber):null;if(marker&&marker.text)text=marker.text.replace("%N%",text!=null?text:"");else if(text==null)text="\u00a0";var markerElement=fragment.appendChild(elt("pre",null,marker&&marker.style));markerElement.innerHTML=text;for(var j=1;j<line.height;++j){markerElement.appendChild(elt("br"));
94
markerElement.appendChild(document.createTextNode("\u00a0"))}if(!marker)normalNode=i}++i});gutter.style.display="none";removeChildrenAndAdd(gutterText,fragment);if(normalNode!=null&&options.lineNumbers){var node=gutterText.childNodes[normalNode-showingFrom];var minwidth=String(doc.size).length,val=eltText(node.firstChild),pad="";while(val.length+pad.length<minwidth)pad+="\u00a0";if(pad)node.insertBefore(document.createTextNode(pad),node.firstChild)}gutter.style.display="";var resized=Math.abs((parseInt(lineSpace.style.marginLeft)||
95
0)-gutter.offsetWidth)>2;lineSpace.style.marginLeft=gutter.offsetWidth+"px";gutterDirty=false;return resized}function updateSelection(){var collapsed=posEq(sel.from,sel.to);var fromPos=localCoords(sel.from,true);var toPos=collapsed?fromPos:localCoords(sel.to,true);var headPos=sel.inverted?fromPos:toPos,th=textHeight();var wrapOff=eltOffset(wrapper),lineOff=eltOffset(lineDiv);inputDiv.style.top=Math.max(0,Math.min(scroller.offsetHeight,headPos.y+lineOff.top-wrapOff.top))+"px";inputDiv.style.left=Math.max(0,
96
Math.min(scroller.offsetWidth,headPos.x+lineOff.left-wrapOff.left))+"px";if(collapsed||options.showCursorWhenSelecting){cursor.style.top=headPos.y+"px";cursor.style.left=(options.lineWrapping?Math.min(headPos.x,lineSpace.offsetWidth):headPos.x)+"px";cursor.style.display=""}else cursor.style.display="none";if(!collapsed){var sameLine=fromPos.y==toPos.y,fragment=document.createDocumentFragment();var clientWidth=lineSpace.clientWidth||lineSpace.offsetWidth;var clientHeight=lineSpace.clientHeight||lineSpace.offsetHeight;
97
var add=function(left,top,right,height){var rstyle=quirksMode?"width: "+(!right?clientWidth:clientWidth-right-left)+"px":"right: "+(right-1)+"px";fragment.appendChild(elt("div",null,"CodeMirror-selected","position: absolute; left: "+left+"px; top: "+top+"px; "+rstyle+"; height: "+height+"px"))};if(sel.from.ch&&fromPos.y>=0){var right=sameLine?clientWidth-toPos.x:0;add(fromPos.x,fromPos.y,right,th)}var middleStart=Math.max(0,fromPos.y+(sel.from.ch?th:0));var middleHeight=Math.min(toPos.y,clientHeight)-
98
middleStart;if(middleHeight>.2*th)add(0,middleStart,0,middleHeight);if((!sameLine||!sel.from.ch)&&toPos.y<clientHeight-.5*th)add(0,toPos.y,clientWidth-toPos.x,th);removeChildrenAndAdd(selectionDiv,fragment);selectionDiv.style.display=""}else selectionDiv.style.display="none"}function setShift(val){if(val)shiftSelecting=shiftSelecting||(sel.inverted?sel.to:sel.from);else shiftSelecting=null}function setSelectionUser(from,to){var sh=shiftSelecting&&clipPos(shiftSelecting);if(sh)if(posLess(sh,from))from=
99
sh;else if(posLess(to,sh))to=sh;setSelection(from,to);userSelChange=true}function setSelection(from,to,oldFrom,oldTo){goalColumn=null;if(oldFrom==null){oldFrom=sel.from.line;oldTo=sel.to.line}if(posEq(sel.from,from)&&posEq(sel.to,to))return;if(posLess(to,from)){var tmp=to;to=from;from=tmp}if(from.line!=oldFrom){var from1=skipHidden(from,oldFrom,sel.from.ch);if(!from1)setLineHidden(from.line,false);else from=from1}if(to.line!=oldTo)to=skipHidden(to,oldTo,sel.to.ch);if(posEq(from,to))sel.inverted=false;
100
else if(posEq(from,sel.to))sel.inverted=false;else if(posEq(to,sel.from))sel.inverted=true;if(options.autoClearEmptyLines&&posEq(sel.from,sel.to)){var head=sel.inverted?from:to;if(head.line!=sel.from.line&&sel.from.line<doc.size){var oldLine=getLine(sel.from.line);if(/^\s+$/.test(oldLine.text))setTimeout(operation(function(){if(oldLine.parent&&/^\s+$/.test(oldLine.text)){var no=lineNo(oldLine);replaceRange("",{line:no,ch:0},{line:no,ch:oldLine.text.length})}},10))}}sel.from=from;sel.to=to;selectionChanged=
101
true}function skipHidden(pos,oldLine,oldCh){function getNonHidden(dir){var lNo=pos.line+dir,end=dir==1?doc.size:-1;while(lNo!=end){var line=getLine(lNo);if(!line.hidden){var ch=pos.ch;if(toEnd||ch>oldCh||ch>line.text.length)ch=line.text.length;return{line:lNo,ch:ch}}lNo+=dir}}var line=getLine(pos.line);var toEnd=pos.ch==line.text.length&&pos.ch!=oldCh;if(!line.hidden)return pos;if(pos.line>=oldLine)return getNonHidden(1)||getNonHidden(-1);else return getNonHidden(-1)||getNonHidden(1)}function setCursor(line,
102
ch,user){var pos=clipPos({line:line,ch:ch||0});(user?setSelectionUser:setSelection)(pos,pos)}function clipLine(n){return Math.max(0,Math.min(n,doc.size-1))}function clipPos(pos){if(pos.line<0)return{line:0,ch:0};if(pos.line>=doc.size)return{line:doc.size-1,ch:getLine(doc.size-1).text.length};var ch=pos.ch,linelen=getLine(pos.line).text.length;if(ch==null||ch>linelen)return{line:pos.line,ch:linelen};else if(ch<0)return{line:pos.line,ch:0};else return pos}function findPosH(dir,unit){var end=sel.inverted?
103
sel.from:sel.to,line=end.line,ch=end.ch;var lineObj=getLine(line);function findNextLine(){for(var l=line+dir,e=dir<0?-1:doc.size;l!=e;l+=dir){var lo=getLine(l);if(!lo.hidden){line=l;lineObj=lo;return true}}}function moveOnce(boundToLine){if(ch==(dir<0?0:lineObj.text.length))if(!boundToLine&&findNextLine())ch=dir<0?lineObj.text.length:0;else return false;else ch+=dir;return true}if(unit=="char")moveOnce();else if(unit=="column")moveOnce(true);else if(unit=="word"){var sawWord=false;for(;;){if(dir<
104
0)if(!moveOnce())break;if(isWordChar(lineObj.text.charAt(ch)))sawWord=true;else if(sawWord){if(dir<0){dir=1;moveOnce()}break}if(dir>0)if(!moveOnce())break}}return{line:line,ch:ch}}function moveH(dir,unit){var pos=dir<0?sel.from:sel.to;if(shiftSelecting||posEq(sel.from,sel.to))pos=findPosH(dir,unit);setCursor(pos.line,pos.ch,true)}function deleteH(dir,unit){if(!posEq(sel.from,sel.to))replaceRange("",sel.from,sel.to);else if(dir<0)replaceRange("",findPosH(dir,unit),sel.to);else replaceRange("",sel.from,
105
findPosH(dir,unit));userSelChange=true}function moveV(dir,unit){var dist=0,pos=localCoords(sel.inverted?sel.from:sel.to,true);if(goalColumn!=null)pos.x=goalColumn;if(unit=="page"){var screen=Math.min(scroller.clientHeight,window.innerHeight||document.documentElement.clientHeight);var target=coordsChar(pos.x,pos.y+screen*dir)}else if(unit=="line"){var th=textHeight();var target=coordsChar(pos.x,pos.y+.5*th+dir*th)}if(unit=="page")scrollbar.scrollTop+=localCoords(target,true).y-pos.y;setCursor(target.line,
106
target.ch,true);goalColumn=pos.x}function findWordAt(pos){var line=getLine(pos.line).text;var start=pos.ch,end=pos.ch;if(line){if(pos.after===false||end==line.length)--start;else++end;var startChar=line.charAt(start);var check=isWordChar(startChar)?isWordChar:/\s/.test(startChar)?function(ch){return/\s/.test(ch)}:function(ch){return!/\s/.test(ch)&&isWordChar(ch)};while(start>0&&check(line.charAt(start-1)))--start;while(end<line.length&&check(line.charAt(end)))++end}return{from:{line:pos.line,ch:start},
107
to:{line:pos.line,ch:end}}}function selectLine(line){setSelectionUser({line:line,ch:0},clipPos({line:line+1,ch:0}))}function indentSelected(mode){if(posEq(sel.from,sel.to))return indentLine(sel.from.line,mode);var e=sel.to.line-(sel.to.ch?0:1);for(var i=sel.from.line;i<=e;++i)indentLine(i,mode)}function indentLine(n,how){if(!how)how="add";if(how=="smart")if(!mode.indent)how="prev";else var state=getStateBefore(n);var line=getLine(n),curSpace=line.indentation(options.tabSize),curSpaceString=line.text.match(/^\s*/)[0],
108
indentation;if(how=="smart"){indentation=mode.indent(state,line.text.slice(curSpaceString.length),line.text);if(indentation==Pass)how="prev"}if(how=="prev")if(n)indentation=getLine(n-1).indentation(options.tabSize);else indentation=0;else if(how=="add")indentation=curSpace+options.indentUnit;else if(how=="subtract")indentation=curSpace-options.indentUnit;indentation=Math.max(0,indentation);var diff=indentation-curSpace;var indentString="",pos=0;if(options.indentWithTabs)for(var i=Math.floor(indentation/
109
options.tabSize);i;--i){pos+=options.tabSize;indentString+="\t"}if(pos<indentation)indentString+=spaceStr(indentation-pos);if(indentString!=curSpaceString)replaceRange(indentString,{line:n,ch:0},{line:n,ch:curSpaceString.length});line.stateAfter=null}function loadMode(){mode=CodeMirror.getMode(options,options.mode);doc.iter(0,doc.size,function(line){line.stateAfter=null});frontier=0;startWorker(100)}function gutterChanged(){var visible=options.gutter||options.lineNumbers;gutter.style.display=visible?
110
"":"none";if(visible)gutterDirty=true;else lineDiv.parentNode.style.marginLeft=0}function wrappingChanged(from,to){if(options.lineWrapping){wrapper.className+=" CodeMirror-wrap";var perLine=scroller.clientWidth/charWidth()-3;doc.iter(0,doc.size,function(line){if(line.hidden)return;var guess=Math.ceil(line.text.length/perLine)||1;if(guess!=1)updateLineHeight(line,guess)});lineSpace.style.minWidth=widthForcer.style.left=""}else{wrapper.className=wrapper.className.replace(" CodeMirror-wrap","");computeMaxLength();
111
doc.iter(0,doc.size,function(line){if(line.height!=1&&!line.hidden)updateLineHeight(line,1)})}changes.push({from:0,to:doc.size})}function themeChanged(){scroller.className=scroller.className.replace(/\s*cm-s-\S+/g,"")+options.theme.replace(/(^|\s)\s*/g," cm-s-")}function keyMapChanged(){var style=keyMap[options.keyMap].style;wrapper.className=wrapper.className.replace(/\s*cm-keymap-\S+/g,"")+(style?" cm-keymap-"+style:"")}function TextMarker(type,style){this.lines=[];this.type=type;if(style)this.style=
112
style}TextMarker.prototype.clear=operation(function(){var min,max;for(var i=0;i<this.lines.length;++i){var line=this.lines[i];var span=getMarkedSpanFor(line.markedSpans,this);if(span.from!=null)min=lineNo(line);if(span.to!=null)max=lineNo(line);line.markedSpans=removeMarkedSpan(line.markedSpans,span)}if(min!=null)changes.push({from:min,to:max+1});this.lines.length=0;this.explicitlyCleared=true});TextMarker.prototype.find=function(){var from,to;for(var i=0;i<this.lines.length;++i){var line=this.lines[i];
113
var span=getMarkedSpanFor(line.markedSpans,this);if(span.from!=null||span.to!=null){var found=lineNo(line);if(span.from!=null)from={line:found,ch:span.from};if(span.to!=null)to={line:found,ch:span.to}}}if(this.type=="bookmark")return from;return from&&{from:from,to:to}};function markText(from,to,className,options){from=clipPos(from);to=clipPos(to);var marker=new TextMarker("range",className);if(options)for(var opt in options)if(options.hasOwnProperty(opt))marker[opt]=options[opt];var curLine=from.line;
114
doc.iter(curLine,to.line+1,function(line){var span={from:curLine==from.line?from.ch:null,to:curLine==to.line?to.ch:null,marker:marker};line.markedSpans=(line.markedSpans||[]).concat([span]);marker.lines.push(line);++curLine});changes.push({from:from.line,to:to.line+1});return marker}function setBookmark(pos){pos=clipPos(pos);var marker=new TextMarker("bookmark"),line=getLine(pos.line);history.addChange(pos.line,1,[newHL(line.text,line.markedSpans)],true);var span={from:pos.ch,to:pos.ch,marker:marker};
115
line.markedSpans=(line.markedSpans||[]).concat([span]);marker.lines.push(line);return marker}function findMarksAt(pos){pos=clipPos(pos);var markers=[],spans=getLine(pos.line).markedSpans;if(spans)for(var i=0;i<spans.length;++i){var span=spans[i];if((span.from==null||span.from<=pos.ch)&&(span.to==null||span.to>=pos.ch))markers.push(span.marker)}return markers}function addGutterMarker(line,text,className){if(typeof line=="number")line=getLine(clipLine(line));line.gutterMarker={text:text,style:className};
116
gutterDirty=true;return line}function removeGutterMarker(line){if(typeof line=="number")line=getLine(clipLine(line));line.gutterMarker=null;gutterDirty=true}function changeLine(handle,op){var no=handle,line=handle;if(typeof handle=="number")line=getLine(clipLine(handle));else no=lineNo(handle);if(no==null)return null;if(op(line,no))changes.push({from:no,to:no+1});else return null;return line}function setLineClass(handle,className,bgClassName){return changeLine(handle,function(line){if(line.className!=
117
className||line.bgClassName!=bgClassName){line.className=className;line.bgClassName=bgClassName;return true}})}function setLineHidden(handle,hidden){return changeLine(handle,function(line,no){if(line.hidden!=hidden){line.hidden=hidden;if(!options.lineWrapping)if(hidden&&line.text.length==maxLine.text.length)updateMaxLine=true;else if(!hidden&&line.text.length>maxLine.text.length){maxLine=line;updateMaxLine=false}updateLineHeight(line,hidden?0:1);var fline=sel.from.line,tline=sel.to.line;if(hidden&&
118
(fline==no||tline==no)){var from=fline==no?skipHidden({line:fline,ch:0},fline,0):sel.from;var to=tline==no?skipHidden({line:tline,ch:0},tline,0):sel.to;if(!to)return;setSelection(from,to)}return gutterDirty=true}})}function lineInfo(line){if(typeof line=="number"){if(!isLine(line))return null;var n=line;line=getLine(line);if(!line)return null}else{var n=lineNo(line);if(n==null)return null}var marker=line.gutterMarker;return{line:n,handle:line,text:line.text,markerText:marker&&marker.text,markerClass:marker&&
119
marker.style,lineClass:line.className,bgClass:line.bgClassName}}function measureLine(line,ch){if(ch==0)return{top:0,left:0};var pre=lineContent(line,ch);removeChildrenAndAdd(measure,pre);var anchor=pre.anchor;var top=anchor.offsetTop,left=anchor.offsetLeft;if(ie&&top==0&&left==0){var backup=elt("span","x");anchor.parentNode.insertBefore(backup,anchor.nextSibling);top=backup.offsetTop}return{top:top,left:left}}function localCoords(pos,inLineWrap){var x,lh=textHeight(),y=lh*(heightAtLine(doc,pos.line)-
120
(inLineWrap?displayOffset:0));if(pos.ch==0)x=0;else{var sp=measureLine(getLine(pos.line),pos.ch);x=sp.left;if(options.lineWrapping)y+=Math.max(0,sp.top)}return{x:x,y:y,yBot:y+lh}}function coordsChar(x,y){var th=textHeight(),cw=charWidth(),heightPos=displayOffset+Math.floor(y/th);if(heightPos<0)return{line:0,ch:0};var lineNo=lineAtHeight(doc,heightPos);if(lineNo>=doc.size)return{line:doc.size-1,ch:getLine(doc.size-1).text.length};var lineObj=getLine(lineNo),text=lineObj.text;var tw=options.lineWrapping,
121
innerOff=tw?heightPos-heightAtLine(doc,lineNo):0;if(x<=0&&innerOff==0)return{line:lineNo,ch:0};var wrongLine=false;function getX(len){var sp=measureLine(lineObj,len);if(tw){var off=Math.round(sp.top/th);wrongLine=off!=innerOff;return Math.max(0,sp.left+(off-innerOff)*scroller.clientWidth)}return sp.left}var from=0,fromX=0,to=text.length,toX;var estimated=Math.min(to,Math.ceil((x+innerOff*scroller.clientWidth*.9)/cw));for(;;){var estX=getX(estimated);if(estX<=x&&estimated<to)estimated=Math.min(to,
122
Math.ceil(estimated*1.2));else{toX=estX;to=estimated;break}}if(x>toX)return{line:lineNo,ch:to};estimated=Math.floor(to*.8);estX=getX(estimated);if(estX<x){from=estimated;fromX=estX}for(;;){if(to-from<=1){var after=x-fromX<toX-x;return{line:lineNo,ch:after?from:to,after:after}}var middle=Math.ceil((from+to)/2),middleX=getX(middle);if(middleX>x){to=middle;toX=middleX;if(wrongLine)toX+=1E3}else{from=middle;fromX=middleX}}}function pageCoords(pos){var local=localCoords(pos,true),off=eltOffset(lineSpace);
123
return{x:off.left+local.x,y:off.top+local.y,yBot:off.top+local.yBot}}var cachedHeight,cachedHeightFor,measurePre;function textHeight(){if(measurePre==null){measurePre=elt("pre");for(var i=0;i<49;++i){measurePre.appendChild(document.createTextNode("x"));measurePre.appendChild(elt("br"))}measurePre.appendChild(document.createTextNode("x"))}var offsetHeight=lineDiv.clientHeight;if(offsetHeight==cachedHeightFor)return cachedHeight;cachedHeightFor=offsetHeight;removeChildrenAndAdd(measure,measurePre.cloneNode(true));
124
cachedHeight=measure.firstChild.offsetHeight/50||1;removeChildren(measure);return cachedHeight}var cachedWidth,cachedWidthFor=0;function charWidth(){if(scroller.clientWidth==cachedWidthFor)return cachedWidth;cachedWidthFor=scroller.clientWidth;var anchor=elt("span","x");var pre=elt("pre",[anchor]);removeChildrenAndAdd(measure,pre);return cachedWidth=anchor.offsetWidth||10}function paddingTop(){return lineSpace.offsetTop}function paddingLeft(){return lineSpace.offsetLeft}function posFromMouse(e,liberal){var offW=
125
eltOffset(scroller,true),x,y;try{x=e.clientX;y=e.clientY}catch(e$2){return null}if(!liberal&&(x-offW.left>scroller.clientWidth||y-offW.top>scroller.clientHeight))return null;var offL=eltOffset(lineSpace,true);return coordsChar(x-offL.left,y-offL.top)}var detectingSelectAll;function onContextMenu(e){var pos=posFromMouse(e),scrollPos=scrollbar.scrollTop;if(!pos||opera)return;if(posEq(sel.from,sel.to)||posLess(pos,sel.from)||!posLess(pos,sel.to))operation(setCursor)(pos.line,pos.ch);var oldCSS=input.style.cssText;
126
inputDiv.style.position="absolute";input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(e.clientY-5)+"px; left: "+(e.clientX-5)+"px; z-index: 1000; background: white; "+"border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";focusInput();resetInput(true);if(posEq(sel.from,sel.to))input.value=prevInput=" ";function rehide(){inputDiv.style.position="relative";input.style.cssText=oldCSS;if(ie_lt9)scrollbar.scrollTop=scrollPos;slowPoll();if(input.selectionStart!=
127
null){clearTimeout(detectingSelectAll);var extval=input.value=" "+(posEq(sel.from,sel.to)?"":input.value),i=0;prevInput=" ";input.selectionStart=1;input.selectionEnd=extval.length;detectingSelectAll=setTimeout(function poll(){if(prevInput==" "&&input.selectionStart==0)operation(commands.selectAll)(instance);else if(i++<10)detectingSelectAll=setTimeout(poll,500);else resetInput()},200)}}if(gecko){e_stop(e);var mouseup=connect(window,"mouseup",function(){mouseup();setTimeout(rehide,20)},true)}else setTimeout(rehide,
128
50)}function restartBlink(){clearInterval(blinker);var on=true;cursor.style.visibility="";blinker=setInterval(function(){cursor.style.visibility=(on=!on)?"":"hidden"},options.cursorBlinkRate)}var matching={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};function matchBrackets(autoclear){var head=sel.inverted?sel.from:sel.to,line=getLine(head.line),pos=head.ch-1;var match=pos>=0&&matching[line.text.charAt(pos)]||matching[line.text.charAt(++pos)];if(!match)return;var ch=match.charAt(0),forward=
129
match.charAt(1)==">",d=forward?1:-1,st=line.styles;for(var off=pos+1,i=0,e=st.length;i<e;i+=2)if((off-=st[i].length)<=0){var style=st[i+1];break}var stack=[line.text.charAt(pos)],re=/[(){}[\]]/;function scan(line,from,to){if(!line.text)return;var st=line.styles,pos=forward?0:line.text.length-1,cur;for(var i=forward?0:st.length-2,e=forward?st.length:-2;i!=e;i+=2*d){var text=st[i];if(st[i+1]!=style){pos+=d*text.length;continue}for(var j=forward?0:text.length-1,te=forward?text.length:-1;j!=te;j+=d,pos+=
130
d)if(pos>=from&&pos<to&&re.test(cur=text.charAt(j))){var match=matching[cur];if(match.charAt(1)==">"==forward)stack.push(cur);else if(stack.pop()!=match.charAt(0))return{pos:pos,match:false};else if(!stack.length)return{pos:pos,match:true}}}}for(var i=head.line,e=forward?Math.min(i+100,doc.size):Math.max(-1,i-100);i!=e;i+=d){var line=getLine(i),first=i==head.line;var found=scan(line,first&&forward?pos+1:0,first&&!forward?pos:line.text.length);if(found)break}if(!found)found={pos:null,match:false};
131
var style=found.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";var one=markText({line:head.line,ch:pos},{line:head.line,ch:pos+1},style),two=found.pos!=null&&markText({line:i,ch:found.pos},{line:i,ch:found.pos+1},style);var clear=operation(function(){one.clear();two&&two.clear()});if(autoclear)setTimeout(clear,800);else bracketHighlighted=clear}function findStartLine(n){var minindent,minline;for(var search=n,lim=n-40;search>lim;--search){if(search==0)return 0;var line=getLine(search-
132
1);if(line.stateAfter)return search;var indented=line.indentation(options.tabSize);if(minline==null||minindent>indented){minline=search-1;minindent=indented}}return minline}function getStateBefore(n){var pos=findStartLine(n),state=pos&&getLine(pos-1).stateAfter;if(!state)state=startState(mode);else state=copyState(mode,state);doc.iter(pos,n,function(line){line.process(mode,state,options.tabSize);line.stateAfter=pos==n-1||pos%5==0?copyState(mode,state):null});return state}function highlightWorker(){if(frontier>=
133
showingTo)return;var end=+new Date+options.workTime,state=copyState(mode,getStateBefore(frontier));var startFrontier=frontier;doc.iter(frontier,showingTo,function(line){if(frontier>=showingFrom){line.highlight(mode,state,options.tabSize);line.stateAfter=copyState(mode,state)}else{line.process(mode,state,options.tabSize);line.stateAfter=frontier%5==0?copyState(mode,state):null}++frontier;if(+new Date>end){startWorker(options.workDelay);return true}});if(showingTo>startFrontier&&frontier>=showingFrom)operation(function(){changes.push({from:startFrontier,
134
to:frontier})})()}function startWorker(time){if(frontier<showingTo)highlight.set(time,highlightWorker)}function startOperation(){updateInput=userSelChange=textChanged=null;changes=[];selectionChanged=false;callbacks=[]}function endOperation(){if(updateMaxLine)computeMaxLength();if(maxLineChanged&&!options.lineWrapping){var cursorWidth=widthForcer.offsetWidth,left=measureLine(maxLine,maxLine.text.length).left;if(!ie_lt8){widthForcer.style.left=left+"px";lineSpace.style.minWidth=left+cursorWidth+"px"}maxLineChanged=
135
false}var newScrollPos,updated;if(selectionChanged){var coords=calculateCursorCoords();newScrollPos=calculateScrollPos(coords.x,coords.y,coords.x,coords.yBot)}if(changes.length||newScrollPos&&newScrollPos.scrollTop!=null)updated=updateDisplay(changes,true,newScrollPos&&newScrollPos.scrollTop);if(!updated){if(selectionChanged)updateSelection();if(gutterDirty)updateGutter()}if(newScrollPos)scrollCursorIntoView();if(selectionChanged)restartBlink();if(focused&&(updateInput===true||updateInput!==false&&
136
selectionChanged))resetInput(userSelChange);if(selectionChanged&&options.matchBrackets)setTimeout(operation(function(){if(bracketHighlighted){bracketHighlighted();bracketHighlighted=null}if(posEq(sel.from,sel.to))matchBrackets(false)}),20);var sc=selectionChanged,cbs=callbacks;if(textChanged&&options.onChange&&instance)options.onChange(instance,textChanged);if(sc&&options.onCursorActivity)options.onCursorActivity(instance);for(var i=0;i<cbs.length;++i)cbs[i](instance);if(updated&&options.onUpdate)options.onUpdate(instance)}
137
var nestedOperation=0;function operation(f){return function(){if(!nestedOperation++)startOperation();try{var result=f.apply(this,arguments)}finally{if(!--nestedOperation)endOperation()}return result}}function compoundChange(f){history.startCompound();try{return f()}finally{history.endCompound()}}for(var ext in extensions)if(extensions.propertyIsEnumerable(ext)&&!instance.propertyIsEnumerable(ext))instance[ext]=extensions[ext];for(var i=0;i<initHooks.length;++i)initHooks[i](instance);return instance}
138
CodeMirror.defaults={value:"",mode:null,theme:"default",indentUnit:2,indentWithTabs:false,smartIndent:true,tabSize:4,keyMap:"default",extraKeys:null,electricChars:true,autoClearEmptyLines:false,onKeyEvent:null,onDragEvent:null,lineWrapping:false,lineNumbers:false,gutter:false,fixedGutter:false,firstLineNumber:1,showCursorWhenSelecting:false,readOnly:false,dragDrop:true,onChange:null,onCursorActivity:null,onViewportChange:null,onGutterClick:null,onUpdate:null,onFocus:null,onBlur:null,onScroll:null,
139
matchBrackets:false,cursorBlinkRate:530,workTime:100,workDelay:200,pollInterval:100,undoDepth:40,tabindex:null,autofocus:null,lineNumberFormatter:function(integer){return integer}};var ios=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent);var mac=ios||/Mac/.test(navigator.platform);var win=/Win/.test(navigator.platform);var modes=CodeMirror.modes={},mimeModes=CodeMirror.mimeModes={};CodeMirror.defineMode=function(name,mode){if(!CodeMirror.defaults.mode&&name!="null")CodeMirror.defaults.mode=
140
name;if(arguments.length>2){mode.dependencies=[];for(var i=2;i<arguments.length;++i)mode.dependencies.push(arguments[i])}modes[name]=mode};CodeMirror.defineMIME=function(mime,spec){mimeModes[mime]=spec};CodeMirror.resolveMode=function(spec){if(typeof spec=="string"&&mimeModes.hasOwnProperty(spec))spec=mimeModes[spec];else if(typeof spec=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(spec))return CodeMirror.resolveMode("application/xml");if(typeof spec=="string")return{name:spec};else return spec||{name:"null"}};
141
CodeMirror.getMode=function(options,spec){var spec=CodeMirror.resolveMode(spec);var mfactory=modes[spec.name];if(!mfactory)return CodeMirror.getMode(options,"text/plain");var modeObj=mfactory(options,spec);if(modeExtensions.hasOwnProperty(spec.name)){var exts=modeExtensions[spec.name];for(var prop in exts){if(!exts.hasOwnProperty(prop))continue;if(modeObj.hasOwnProperty(prop))modeObj["_"+prop]=modeObj[prop];modeObj[prop]=exts[prop]}}modeObj.name=spec.name;return modeObj};CodeMirror.listModes=function(){var list=
142
[];for(var m in modes)if(modes.propertyIsEnumerable(m))list.push(m);return list};CodeMirror.listMIMEs=function(){var list=[];for(var m in mimeModes)if(mimeModes.propertyIsEnumerable(m))list.push({mime:m,mode:mimeModes[m]});return list};var extensions=CodeMirror.extensions={};CodeMirror.defineExtension=function(name,func){extensions[name]=func};var initHooks=[];CodeMirror.defineInitHook=function(f){initHooks.push(f)};var modeExtensions=CodeMirror.modeExtensions={};CodeMirror.extendMode=function(mode,
143
properties){var exts=modeExtensions.hasOwnProperty(mode)?modeExtensions[mode]:modeExtensions[mode]={};for(var prop in properties)if(properties.hasOwnProperty(prop))exts[prop]=properties[prop]};var commands=CodeMirror.commands={selectAll:function(cm){cm.setSelection({line:0,ch:0},{line:cm.lineCount()-1})},killLine:function(cm){var from=cm.getCursor(true),to=cm.getCursor(false),sel=!posEq(from,to);if(!sel&&cm.getLine(from.line).length==from.ch)cm.replaceRange("",from,{line:from.line+1,ch:0});else cm.replaceRange("",
144
from,sel?to:{line:from.line})},deleteLine:function(cm){var l=cm.getCursor().line;cm.replaceRange("",{line:l,ch:0},{line:l})},undo:function(cm){cm.undo()},redo:function(cm){cm.redo()},goDocStart:function(cm){cm.setCursor(0,0,true)},goDocEnd:function(cm){cm.setSelection({line:cm.lineCount()-1},null,true)},goLineStart:function(cm){cm.setCursor(cm.getCursor().line,0,true)},goLineStartSmart:function(cm){var cur=cm.getCursor();var text=cm.getLine(cur.line),firstNonWS=Math.max(0,text.search(/\S/));cm.setCursor(cur.line,
145
cur.ch<=firstNonWS&&cur.ch?0:firstNonWS,true)},goLineEnd:function(cm){cm.setSelection({line:cm.getCursor().line},null,true)},goLineUp:function(cm){cm.moveV(-1,"line")},goLineDown:function(cm){cm.moveV(1,"line")},goPageUp:function(cm){cm.moveV(-1,"page")},goPageDown:function(cm){cm.moveV(1,"page")},goCharLeft:function(cm){cm.moveH(-1,"char")},goCharRight:function(cm){cm.moveH(1,"char")},goColumnLeft:function(cm){cm.moveH(-1,"column")},goColumnRight:function(cm){cm.moveH(1,"column")},goWordLeft:function(cm){cm.moveH(-1,
146
"word")},goWordRight:function(cm){cm.moveH(1,"word")},delCharLeft:function(cm){cm.deleteH(-1,"char")},delCharRight:function(cm){cm.deleteH(1,"char")},delWordLeft:function(cm){cm.deleteH(-1,"word")},delWordRight:function(cm){cm.deleteH(1,"word")},indentAuto:function(cm){cm.indentSelection("smart")},indentMore:function(cm){cm.indentSelection("add")},indentLess:function(cm){cm.indentSelection("subtract")},insertTab:function(cm){cm.replaceSelection("\t","end")},defaultTab:function(cm){if(cm.somethingSelected())cm.indentSelection("add");
147
else cm.replaceSelection("\t","end")},transposeChars:function(cm){var cur=cm.getCursor(),line=cm.getLine(cur.line);if(cur.ch>0&&cur.ch<line.length-1)cm.replaceRange(line.charAt(cur.ch)+line.charAt(cur.ch-1),{line:cur.line,ch:cur.ch-1},{line:cur.line,ch:cur.ch+1})},newlineAndIndent:function(cm){cm.replaceSelection("\n","end");cm.indentLine(cm.getCursor().line)},toggleOverwrite:function(cm){cm.toggleOverwrite()}};var keyMap=CodeMirror.keyMap={};keyMap.basic={"Left":"goCharLeft","Right":"goCharRight",
148
"Up":"goLineUp","Down":"goLineDown","End":"goLineEnd","Home":"goLineStartSmart","PageUp":"goPageUp","PageDown":"goPageDown","Delete":"delCharRight","Backspace":"delCharLeft","Tab":"defaultTab","Shift-Tab":"indentAuto","Enter":"newlineAndIndent","Insert":"toggleOverwrite"};keyMap.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Alt-Up":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Down":"goDocEnd","Ctrl-Left":"goWordLeft",
149
"Ctrl-Right":"goWordRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delWordLeft","Ctrl-Delete":"delWordRight","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore",fallthrough:"basic"};keyMap.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd",
150
"Alt-Left":"goWordLeft","Alt-Right":"goWordRight","Cmd-Left":"goLineStart","Cmd-Right":"goLineEnd","Alt-Backspace":"delWordLeft","Ctrl-Alt-Backspace":"delWordRight","Alt-Delete":"delWordRight","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore",fallthrough:["basic","emacsy"]};keyMap["default"]=mac?keyMap.macDefault:keyMap.pcDefault;keyMap.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft",
151
"Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharRight","Ctrl-H":"delCharLeft","Alt-D":"delWordRight","Alt-Backspace":"delWordLeft","Ctrl-K":"killLine","Ctrl-T":"transposeChars"};function getKeyMap(val){if(typeof val=="string")return keyMap[val];else return val}function lookupKey(name,extraMap,map,handle,stop){function lookup(map){map=getKeyMap(map);var found=
152
map[name];if(found===false){if(stop)stop();return true}if(found!=null&&handle(found))return true;if(map.nofallthrough){if(stop)stop();return true}var fallthrough=map.fallthrough;if(fallthrough==null)return false;if(Object.prototype.toString.call(fallthrough)!="[object Array]")return lookup(fallthrough);for(var i=0,e=fallthrough.length;i<e;++i)if(lookup(fallthrough[i]))return true;return false}if(extraMap&&lookup(extraMap))return true;return lookup(map)}function isModifierKey(event){var name=keyNames[e_prop(event,
153
"keyCode")];return name=="Ctrl"||name=="Alt"||name=="Shift"||name=="Mod"}CodeMirror.isModifierKey=isModifierKey;CodeMirror.fromTextArea=function(textarea,options){if(!options)options={};options.value=textarea.value;if(!options.tabindex&&textarea.tabindex)options.tabindex=textarea.tabindex;if(options.autofocus==null){var hasFocus=document.body;try{hasFocus=document.activeElement}catch(e){}options.autofocus=hasFocus==textarea||textarea.getAttribute("autofocus")!=null&&hasFocus==document.body}function save(){textarea.value=
154
instance.getValue()}if(textarea.form){var rmSubmit=connect(textarea.form,"submit",save,true);var form=textarea.form,realSubmit=form.submit;textarea.form.submit=function wrappedSubmit(){save();form.submit=realSubmit;form.submit();form.submit=wrappedSubmit}}textarea.style.display="none";var instance=CodeMirror(function(node){textarea.parentNode.insertBefore(node,textarea.nextSibling)},options);instance.save=save;instance.getTextArea=function(){return textarea};instance.toTextArea=function(){save();
155
textarea.parentNode.removeChild(instance.getWrapperElement());textarea.style.display="";if(textarea.form){rmSubmit();if(typeof textarea.form.submit=="function")textarea.form.submit=realSubmit}};return instance};var gecko=/gecko\/\d/i.test(navigator.userAgent);var ie=/MSIE \d/.test(navigator.userAgent);var ie_lt8=/MSIE [1-7]\b/.test(navigator.userAgent);var ie_lt9=/MSIE [1-8]\b/.test(navigator.userAgent);var quirksMode=ie&&document.documentMode==5;var webkit=/WebKit\//.test(navigator.userAgent);var qtwebkit=
156
webkit&&/Qt\/\d+\.\d+/.test(navigator.userAgent);var chrome=/Chrome\//.test(navigator.userAgent);var opera=/Opera\//.test(navigator.userAgent);var safari=/Apple Computer/.test(navigator.vendor);var khtml=/KHTML\//.test(navigator.userAgent);var mac_geLion=/Mac OS X 10\D([7-9]|\d\d)\D/.test(navigator.userAgent);var opera_version=opera&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);if(opera_version)opera_version=Number(opera_version[1]);var flipCtrlCmd=mac&&(qtwebkit||opera&&(opera_version==null||
157
opera_version<12.11));function copyState(mode,state){if(state===true)return state;if(mode.copyState)return mode.copyState(state);var nstate={};for(var n in state){var val=state[n];if(val instanceof Array)val=val.concat([]);nstate[n]=val}return nstate}CodeMirror.copyState=copyState;function startState(mode,a1,a2){return mode.startState?mode.startState(a1,a2):true}CodeMirror.startState=startState;CodeMirror.innerMode=function(mode,state){while(mode.innerMode){var info=mode.innerMode(state);state=info.state;
158
mode=info.mode}return info||{mode:mode,state:state}};function StringStream(string,tabSize){this.pos=this.start=0;this.string=string;this.tabSize=tabSize||8}StringStream.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(match){var ch=this.string.charAt(this.pos);if(typeof match=="string")var ok=
159
ch==match;else var ok=ch&&(match.test?match.test(ch):match(ch));if(ok){++this.pos;return ch}},eatWhile:function(match){var start=this.pos;while(this.eat(match));return this.pos>start},eatSpace:function(){var start=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>start},skipToEnd:function(){this.pos=this.string.length},skipTo:function(ch){var found=this.string.indexOf(ch,this.pos);if(found>-1){this.pos=found;return true}},backUp:function(n){this.pos-=n},column:function(){return countColumn(this.string,
160
this.start,this.tabSize)},indentation:function(){return countColumn(this.string,null,this.tabSize)},match:function(pattern,consume,caseInsensitive){if(typeof pattern=="string"){var cased=function(str){return caseInsensitive?str.toLowerCase():str};if(cased(this.string).indexOf(cased(pattern),this.pos)==this.pos){if(consume!==false)this.pos+=pattern.length;return true}}else{var match=this.string.slice(this.pos).match(pattern);if(match&&match.index>0)return null;if(match&&consume!==false)this.pos+=match[0].length;
161
return match}},current:function(){return this.string.slice(this.start,this.pos)}};CodeMirror.StringStream=StringStream;function MarkedSpan(from,to,marker){this.from=from;this.to=to;this.marker=marker}function getMarkedSpanFor(spans,marker){if(spans)for(var i=0;i<spans.length;++i){var span=spans[i];if(span.marker==marker)return span}}function removeMarkedSpan(spans,span){var r;for(var i=0;i<spans.length;++i)if(spans[i]!=span)(r||(r=[])).push(spans[i]);return r}function markedSpansBefore(old,startCh,
162
endCh){if(old)for(var i=0,nw;i<old.length;++i){var span=old[i],marker=span.marker;var startsBefore=span.from==null||(marker.inclusiveLeft?span.from<=startCh:span.from<startCh);if(startsBefore||marker.type=="bookmark"&&span.from==startCh&&span.from!=endCh){var endsAfter=span.to==null||(marker.inclusiveRight?span.to>=startCh:span.to>startCh);(nw||(nw=[])).push({from:span.from,to:endsAfter?null:span.to,marker:marker})}}return nw}function markedSpansAfter(old,endCh){if(old)for(var i=0,nw;i<old.length;++i){var span=
163
old[i],marker=span.marker;var endsAfter=span.to==null||(marker.inclusiveRight?span.to>=endCh:span.to>endCh);if(endsAfter||marker.type=="bookmark"&&span.from==endCh){var startsBefore=span.from==null||(marker.inclusiveLeft?span.from<=endCh:span.from<endCh);(nw||(nw=[])).push({from:startsBefore?null:span.from-endCh,to:span.to==null?null:span.to-endCh,marker:marker})}}return nw}function updateMarkedSpans(oldFirst,oldLast,startCh,endCh,newText){if(!oldFirst&&!oldLast)return newText;var first=markedSpansBefore(oldFirst,
164
startCh);var last=markedSpansAfter(oldLast,endCh);var sameLine=newText.length==1,offset=lst(newText).length+(sameLine?startCh:0);if(first)for(var i=0;i<first.length;++i){var span=first[i];if(span.to==null){var found=getMarkedSpanFor(last,span.marker);if(!found)span.to=startCh;else if(sameLine)span.to=found.to==null?null:found.to+offset}}if(last)for(var i=0;i<last.length;++i){var span=last[i];if(span.to!=null)span.to+=offset;if(span.from==null){var found=getMarkedSpanFor(first,span.marker);if(!found){span.from=
165
offset;if(sameLine)(first||(first=[])).push(span)}}else{span.from+=offset;if(sameLine)(first||(first=[])).push(span)}}var newMarkers=[newHL(newText[0],first)];if(!sameLine){var gap=newText.length-2,gapMarkers;if(gap>0&&first)for(var i=0;i<first.length;++i)if(first[i].to==null)(gapMarkers||(gapMarkers=[])).push({from:null,to:null,marker:first[i].marker});for(var i=0;i<gap;++i)newMarkers.push(newHL(newText[i+1],gapMarkers));newMarkers.push(newHL(lst(newText),last))}return newMarkers}function hlText(val){return typeof val==
166
"string"?val:val.text}function hlSpans(val){if(typeof val=="string")return null;var spans=val.markedSpans,out=null;for(var i=0;i<spans.length;++i)if(spans[i].marker.explicitlyCleared){if(!out)out=spans.slice(0,i)}else if(out)out.push(spans[i]);return!out?spans:out.length?out:null}function newHL(text,spans){return spans?{text:text,markedSpans:spans}:text}function detachMarkedSpans(line){var spans=line.markedSpans;if(!spans)return;for(var i=0;i<spans.length;++i){var lines=spans[i].marker.lines;var ix=
167
indexOf(lines,line);lines.splice(ix,1)}line.markedSpans=null}function attachMarkedSpans(line,spans){if(!spans)return;for(var i=0;i<spans.length;++i)var marker=spans[i].marker.lines.push(line);line.markedSpans=spans}var eolSpanContent=" ";if(gecko||ie&&!ie_lt8)eolSpanContent="\u200b";else if(opera)eolSpanContent="";function Line(text,markedSpans){this.text=text;this.height=1;attachMarkedSpans(this,markedSpans)}Line.prototype={update:function(text,markedSpans){this.text=text;this.stateAfter=this.styles=
168
null;detachMarkedSpans(this);attachMarkedSpans(this,markedSpans)},highlight:function(mode,state,tabSize){var stream=new StringStream(this.text,tabSize),st=this.styles||(this.styles=[]);var pos=st.length=0;if(this.text==""&&mode.blankLine)mode.blankLine(state);while(!stream.eol()){var style=mode.token(stream,state),substr=stream.current();stream.start=stream.pos;if(pos&&st[pos-1]==style)st[pos-2]+=substr;else if(substr){st[pos++]=substr;st[pos++]=style}if(stream.pos>5E3){st[pos++]=this.text.slice(stream.pos);
169
st[pos++]=null;break}}},process:function(mode,state,tabSize){var stream=new StringStream(this.text,tabSize);if(this.text==""&&mode.blankLine)mode.blankLine(state);while(!stream.eol()&&stream.pos<=5E3){mode.token(stream,state);stream.start=stream.pos}},getTokenAt:function(mode,state,tabSize,ch){var txt=this.text,stream=new StringStream(txt,tabSize);while(stream.pos<ch&&!stream.eol()){stream.start=stream.pos;var style=mode.token(stream,state)}return{start:stream.start,end:stream.pos,string:stream.current(),
170
className:style||null,state:state}},indentation:function(tabSize){return countColumn(this.text,null,tabSize)},getContent:function(tabSize,wrapAt,compensateForWrapping){var first=true,col=0,specials=/[\t\u0000-\u0019\u200b\u2028\u2029\uFEFF]/g;var pre=elt("pre");function span_(html,text,style){if(!text)return;if(first&&ie&&text.charAt(0)==" ")text="\u00a0"+text.slice(1);first=false;if(!specials.test(text)){col+=text.length;var content=document.createTextNode(text)}else{var content=document.createDocumentFragment(),
171
pos=0;while(true){specials.lastIndex=pos;var m=specials.exec(text);var skipped=m?m.index-pos:text.length-pos;if(skipped){content.appendChild(document.createTextNode(text.slice(pos,pos+skipped)));col+=skipped}if(!m)break;pos+=skipped+1;if(m[0]=="\t"){var tabWidth=tabSize-col%tabSize;content.appendChild(elt("span",spaceStr(tabWidth),"cm-tab"));col+=tabWidth}else{var token=elt("span","\u2022","cm-invalidchar");token.title="\\u"+m[0].charCodeAt(0).toString(16);content.appendChild(token);col+=1}}}if(style)html.appendChild(elt("span",
172
[content],style));else html.appendChild(content)}var span=span_;if(wrapAt!=null){var outPos=0,anchor=pre.anchor=elt("span");span=function(html,text,style){var l=text.length;if(wrapAt>=outPos&&wrapAt<outPos+l){var cut=wrapAt-outPos;if(cut){span_(html,text.slice(0,cut),style);if(compensateForWrapping){var view=text.slice(cut-1,cut+1);if(spanAffectsWrapping.test(view))html.appendChild(elt("wbr"));else if(!ie_lt8&&/\w\w/.test(view))html.appendChild(document.createTextNode("\u200d"))}}html.appendChild(anchor);
173
span_(anchor,opera?text.slice(cut,cut+1):text.slice(cut),style);if(opera)span_(html,text.slice(cut+1),style);wrapAt--;outPos+=l}else{outPos+=l;span_(html,text,style);if(outPos==wrapAt&&outPos==len){setTextContent(anchor,eolSpanContent);html.appendChild(anchor)}else if(outPos>wrapAt+10&&/\s/.test(text))span=function(){}}}}var st=this.styles,allText=this.text,marked=this.markedSpans;var len=allText.length;function styleToClass(style){if(!style)return null;return"cm-"+style.replace(/ +/g," cm-")}if(!allText&&
174
wrapAt==null)span(pre," ");else if(!marked||!marked.length)for(var i=0,ch=0;ch<len;i+=2){var str=st[i],style=st[i+1],l=str.length;if(ch+l>len)str=str.slice(0,len-ch);ch+=l;span(pre,str,styleToClass(style))}else{marked.sort(function(a,b){return a.from-b.from});var pos=0,i=0,text="",style,sg=0;var nextChange=marked[0].from||0,marks=[],markpos=0;var advanceMarks=function(){var m;while(markpos<marked.length&&((m=marked[markpos]).from==pos||m.from==null)){if(m.marker.type=="range")marks.push(m);++markpos}nextChange=
175
markpos<marked.length?marked[markpos].from:Infinity;for(var i=0;i<marks.length;++i){var to=marks[i].to;if(to==null)to=Infinity;if(to==pos)marks.splice(i--,1);else nextChange=Math.min(to,nextChange)}};var m=0;while(pos<len){if(nextChange==pos)advanceMarks();var upto=Math.min(len,nextChange);while(true){if(text){var end=pos+text.length;var appliedStyle=style;for(var j=0;j<marks.length;++j){var mark=marks[j];appliedStyle=(appliedStyle?appliedStyle+" ":"")+mark.marker.style;if(mark.marker.endStyle&&mark.to===
176
Math.min(end,upto))appliedStyle+=" "+mark.marker.endStyle;if(mark.marker.startStyle&&mark.from===pos)appliedStyle+=" "+mark.marker.startStyle}span(pre,end>upto?text.slice(0,upto-pos):text,appliedStyle);if(end>=upto){text=text.slice(upto-pos);pos=upto;break}pos=end}text=st[i++];style=styleToClass(st[i++])}}}return pre},cleanUp:function(){this.parent=null;detachMarkedSpans(this)}};function LeafChunk(lines){this.lines=lines;this.parent=null;for(var i=0,e=lines.length,height=0;i<e;++i){lines[i].parent=
177
this;height+=lines[i].height}this.height=height}LeafChunk.prototype={chunkSize:function(){return this.lines.length},remove:function(at,n,callbacks){for(var i=at,e=at+n;i<e;++i){var line=this.lines[i];this.height-=line.height;line.cleanUp();if(line.handlers)for(var j=0;j<line.handlers.length;++j)callbacks.push(line.handlers[j])}this.lines.splice(at,n)},collapse:function(lines){lines.splice.apply(lines,[lines.length,0].concat(this.lines))},insertHeight:function(at,lines,height){this.height+=height;
178
this.lines=this.lines.slice(0,at).concat(lines).concat(this.lines.slice(at));for(var i=0,e=lines.length;i<e;++i)lines[i].parent=this},iterN:function(at,n,op){for(var e=at+n;at<e;++at)if(op(this.lines[at]))return true}};function BranchChunk(children){this.children=children;var size=0,height=0;for(var i=0,e=children.length;i<e;++i){var ch=children[i];size+=ch.chunkSize();height+=ch.height;ch.parent=this}this.size=size;this.height=height;this.parent=null}BranchChunk.prototype={chunkSize:function(){return this.size},
179
remove:function(at,n,callbacks){this.size-=n;for(var i=0;i<this.children.length;++i){var child=this.children[i],sz=child.chunkSize();if(at<sz){var rm=Math.min(n,sz-at),oldHeight=child.height;child.remove(at,rm,callbacks);this.height-=oldHeight-child.height;if(sz==rm){this.children.splice(i--,1);child.parent=null}if((n-=rm)==0)break;at=0}else at-=sz}if(this.size-n<25){var lines=[];this.collapse(lines);this.children=[new LeafChunk(lines)];this.children[0].parent=this}},collapse:function(lines){for(var i=
180
0,e=this.children.length;i<e;++i)this.children[i].collapse(lines)},insert:function(at,lines){var height=0;for(var i=0,e=lines.length;i<e;++i)height+=lines[i].height;this.insertHeight(at,lines,height)},insertHeight:function(at,lines,height){this.size+=lines.length;this.height+=height;for(var i=0,e=this.children.length;i<e;++i){var child=this.children[i],sz=child.chunkSize();if(at<=sz){child.insertHeight(at,lines,height);if(child.lines&&child.lines.length>50){while(child.lines.length>50){var spilled=
181
child.lines.splice(child.lines.length-25,25);var newleaf=new LeafChunk(spilled);child.height-=newleaf.height;this.children.splice(i+1,0,newleaf);newleaf.parent=this}this.maybeSpill()}break}at-=sz}},maybeSpill:function(){if(this.children.length<=10)return;var me=this;do{var spilled=me.children.splice(me.children.length-5,5);var sibling=new BranchChunk(spilled);if(!me.parent){var copy=new BranchChunk(me.children);copy.parent=me;me.children=[copy,sibling];me=copy}else{me.size-=sibling.size;me.height-=
182
sibling.height;var myIndex=indexOf(me.parent.children,me);me.parent.children.splice(myIndex+1,0,sibling)}sibling.parent=me.parent}while(me.children.length>10);me.parent.maybeSpill()},iter:function(from,to,op){this.iterN(from,to-from,op)},iterN:function(at,n,op){for(var i=0,e=this.children.length;i<e;++i){var child=this.children[i],sz=child.chunkSize();if(at<sz){var used=Math.min(n,sz-at);if(child.iterN(at,used,op))return true;if((n-=used)==0)break;at=0}else at-=sz}}};function getLineAt(chunk,n){while(!chunk.lines)for(var i=
183
0;;++i){var child=chunk.children[i],sz=child.chunkSize();if(n<sz){chunk=child;break}n-=sz}return chunk.lines[n]}function lineNo(line){if(line.parent==null)return null;var cur=line.parent,no=indexOf(cur.lines,line);for(var chunk=cur.parent;chunk;cur=chunk,chunk=chunk.parent)for(var i=0;;++i){if(chunk.children[i]==cur)break;no+=chunk.children[i].chunkSize()}return no}function lineAtHeight(chunk,h){var n=0;outer:do{for(var i=0,e=chunk.children.length;i<e;++i){var child=chunk.children[i],ch=child.height;
184
if(h<ch){chunk=child;continue outer}h-=ch;n+=child.chunkSize()}return n}while(!chunk.lines);for(var i=0,e=chunk.lines.length;i<e;++i){var line=chunk.lines[i],lh=line.height;if(h<lh)break;h-=lh}return n+i}function heightAtLine(chunk,n){var h=0;outer:do{for(var i=0,e=chunk.children.length;i<e;++i){var child=chunk.children[i],sz=child.chunkSize();if(n<sz){chunk=child;continue outer}n-=sz;h+=child.height}return h}while(!chunk.lines);for(var i=0;i<n;++i)h+=chunk.lines[i].height;return h}function History(){this.time=
185
0;this.done=[];this.undone=[];this.compound=0;this.closed=false}History.prototype={addChange:function(start,added,old){this.undone.length=0;var time=+new Date,cur=lst(this.done),last=cur&&lst(cur);var dtime=time-this.time;if(cur&&!this.closed&&this.compound)cur.push({start:start,added:added,old:old});else if(dtime>400||!last||this.closed||last.start>start+old.length||last.start+last.added<start){this.done.push([{start:start,added:added,old:old}]);this.closed=false}else{var startBefore=Math.max(0,
186
last.start-start),endAfter=Math.max(0,start+old.length-(last.start+last.added));for(var i=startBefore;i>0;--i)last.old.unshift(old[i-1]);for(var i=endAfter;i>0;--i)last.old.push(old[old.length-i]);if(startBefore)last.start=start;last.added+=added-(old.length-startBefore-endAfter)}this.time=time},startCompound:function(){if(!this.compound++)this.closed=true},endCompound:function(){if(!--this.compound)this.closed=true}};function stopMethod(){e_stop(this)}function addStop(event){if(!event.stop)event.stop=
187
stopMethod;return event}function e_preventDefault(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false}function e_stopPropagation(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true}function e_stop(e){e_preventDefault(e);e_stopPropagation(e)}CodeMirror.e_stop=e_stop;CodeMirror.e_preventDefault=e_preventDefault;CodeMirror.e_stopPropagation=e_stopPropagation;function e_target(e){return e.target||e.srcElement}function e_button(e){var b=e.which;if(b==null)if(e.button&1)b=
188
1;else if(e.button&2)b=3;else if(e.button&4)b=2;if(mac&&e.ctrlKey&&b==1)b=3;return b}function e_prop(e,prop){var overridden=e.override&&e.override.hasOwnProperty(prop);return overridden?e.override[prop]:e[prop]}function connect(node,type,handler,disconnect){if(typeof node.addEventListener=="function"){node.addEventListener(type,handler,false);if(disconnect)return function(){node.removeEventListener(type,handler,false)}}else{var wrapHandler=function(event){handler(event||window.event)};node.attachEvent("on"+
189
type,wrapHandler);if(disconnect)return function(){node.detachEvent("on"+type,wrapHandler)}}}CodeMirror.connect=connect;function Delayed(){this.id=null}Delayed.prototype={set:function(ms,f){clearTimeout(this.id);this.id=setTimeout(f,ms)}};var Pass=CodeMirror.Pass={toString:function(){return"CodeMirror.Pass"}};var dragAndDrop=function(){if(ie_lt9)return false;var div=elt("div");return"draggable"in div||"dragDrop"in div}();var lineSep=function(){var te=elt("textarea");te.value="foo\nbar";if(te.value.indexOf("\r")>
190
-1)return"\r\n";return"\n"}();var spanAffectsWrapping=/^$/;if(gecko)spanAffectsWrapping=/$'/;else if(safari)spanAffectsWrapping=/\-[^ \-?]|\?[^ !'"\),.\-\/:;\?\]\}]/;else if(chrome)spanAffectsWrapping=/\-[^ \-\.?]|\?[^ \-\.?\]\}:;!'"\),\/]|[\.!"#&%\)*+,:;=>\]|\}~][\(\{\[<]|\$'/;function countColumn(string,end,tabSize){if(end==null){end=string.search(/[^\s\u00a0]/);if(end==-1)end=string.length}for(var i=0,n=0;i<end;++i)if(string.charAt(i)=="\t")n+=tabSize-n%tabSize;else++n;return n}function eltOffset(node,
191
screen){try{var box=node.getBoundingClientRect();box={top:box.top,left:box.left}}catch(e){box={top:0,left:0}}if(!screen)if(window.pageYOffset==null){var t=document.documentElement||document.body.parentNode;if(t.scrollTop==null)t=document.body;box.top+=t.scrollTop;box.left+=t.scrollLeft}else{box.top+=window.pageYOffset;box.left+=window.pageXOffset}return box}function eltText(node){return node.textContent||node.innerText||node.nodeValue||""}var spaceStrs=[""];function spaceStr(n){while(spaceStrs.length<=
192
n)spaceStrs.push(lst(spaceStrs)+" ");return spaceStrs[n]}function lst(arr){return arr[arr.length-1]}function selectInput(node){if(ios){node.selectionStart=0;node.selectionEnd=node.value.length}else node.select()}function posEq(a,b){return a.line==b.line&&a.ch==b.ch}function posLess(a,b){return a.line<b.line||a.line==b.line&&a.ch<b.ch}function copyPos(x){return{line:x.line,ch:x.ch}}function elt(tag,content,className,style){var e=document.createElement(tag);if(className)e.className=className;if(style)e.style.cssText=
193
style;if(typeof content=="string")setTextContent(e,content);else if(content)for(var i=0;i<content.length;++i)e.appendChild(content[i]);return e}function removeChildren(e){e.innerHTML="";return e}function removeChildrenAndAdd(parent,e){removeChildren(parent).appendChild(e)}function setTextContent(e,str){if(ie_lt9){e.innerHTML="";e.appendChild(document.createTextNode(str))}else e.textContent=str}function editEnd(from,to){if(!to)return 0;if(!from)return to.length;for(var i=from.length,j=to.length;i>=
194
0&&j>=0;--i,--j)if(from.charAt(i)!=to.charAt(j))break;return j+1}function indexOf(collection,elt){if(collection.indexOf)return collection.indexOf(elt);for(var i=0,e=collection.length;i<e;++i)if(collection[i]==elt)return i;return-1}var nonASCIISingleCaseWordChar=/[\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc]/;function isWordChar(ch){return/\w/.test(ch)||ch>"\u0080"&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch))}var splitLines="\n\nb".split(/\n/).length!=3?function(string){var pos=
195
0,result=[],l=string.length;while(pos<=l){var nl=string.indexOf("\n",pos);if(nl==-1)nl=string.length;var line=string.slice(pos,string.charAt(nl-1)=="\r"?nl-1:nl);var rt=line.indexOf("\r");if(rt!=-1){result.push(line.slice(0,rt));pos+=rt+1}else{result.push(line);pos=nl+1}}return result}:function(string){return string.split(/\r\n?|\n/)};CodeMirror.splitLines=splitLines;var hasSelection=window.getSelection?function(te){try{return te.selectionStart!=te.selectionEnd}catch(e){return false}}:function(te){try{var range=
196
te.ownerDocument.selection.createRange()}catch(e){}if(!range||range.parentElement()!=te)return false;return range.compareEndPoints("StartToEnd",range)!=0};CodeMirror.defineMode("null",function(){return{token:function(stream){stream.skipToEnd()}}});CodeMirror.defineMIME("text/plain","null");var keyNames={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",
197
44:"PrintScrn",45:"Insert",46:"Delete",59:";",91:"Mod",92:"Mod",93:"Mod",109:"-",107:"=",127:"Delete",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63276:"PageUp",63277:"PageDown",63275:"End",63273:"Home",63234:"Left",63232:"Up",63235:"Right",63233:"Down",63302:"Insert",63272:"Delete"};CodeMirror.keyNames=keyNames;(function(){for(var i=0;i<10;i++)keyNames[i+48]=String(i);for(var i=65;i<=90;i++)keyNames[i]=String.fromCharCode(i);for(var i=1;i<=12;i++)keyNames[i+
198
111]=keyNames[i+63235]="F"+i})();CodeMirror.version="2.38";return CodeMirror}();window["CodeMirror"]=CodeMirror;(function(){CodeMirror.defaults["closeTagEnabled"]=true;CodeMirror.defaults["closeTagIndent"]=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];CodeMirror.defaults["closeTagVoid"]=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];function innerXMLState(cm,state){var inner=CodeMirror.innerMode(cm.getMode(),
199
state);if(inner.mode.name=="xml")return inner.state}CodeMirror.defineExtension("closeTag",function(cm,ch,indent,vd){if(!cm.getOption("closeTagEnabled"))throw CodeMirror.Pass;var pos=cm.getCursor();var tok=cm.getTokenAt(pos);var state=innerXMLState(cm,tok.state);if(state)if(ch==">"){var type=state.type;if(tok.className=="tag"&&type=="closeTag")throw CodeMirror.Pass;cm.replaceSelection(">");pos={line:pos.line,ch:pos.ch+1};cm.setCursor(pos);tok=cm.getTokenAt(cm.getCursor());state=innerXMLState(cm,tok.state);
200
if(!state)throw CodeMirror.Pass;var type=state.type;if(tok.className=="tag"&&type!="selfcloseTag"){var tagName=state.tagName;if(tagName.length>0&&shouldClose(cm,vd,tagName))insertEndTag(cm,indent,pos,tagName);return}cm.setSelection({line:pos.line,ch:pos.ch-1},pos);cm.replaceSelection("")}else if(ch=="/")if(tok.className=="tag"&&tok.string=="<"){var ctx=state.context,tagName=ctx?ctx.tagName:"";if(tagName.length>0){completeEndTag(cm,pos,tagName);return}}throw CodeMirror.Pass;});function insertEndTag(cm,
201
indent,pos,tagName){if(shouldIndent(cm,indent,tagName)){cm.replaceSelection("\n\n</"+tagName+">","end");cm.indentLine(pos.line+1);cm.indentLine(pos.line+2);cm.setCursor({line:pos.line+1,ch:cm.getLine(pos.line+1).length})}else{cm.replaceSelection("</"+tagName+">");cm.setCursor(pos)}}function shouldIndent(cm,indent,tagName){if(typeof indent=="undefined"||indent==null||indent==true)indent=cm.getOption("closeTagIndent");if(!indent)indent=[];return indexOf(indent,tagName.toLowerCase())!=-1}function shouldClose(cm,
202
vd,tagName){if(cm.getOption("mode")=="xml")return true;if(typeof vd=="undefined"||vd==null)vd=cm.getOption("closeTagVoid");if(!vd)vd=[];return indexOf(vd,tagName.toLowerCase())==-1}function indexOf(collection,elt){if(collection.indexOf)return collection.indexOf(elt);for(var i=0,e=collection.length;i<e;++i)if(collection[i]==elt)return i;return-1}function completeEndTag(cm,pos,tagName){cm.replaceSelection("/"+tagName+">");cm.setCursor({line:pos.line,ch:pos.ch+tagName.length+2})}})();(function(){var modes=["clike","css","javascript"];for(var i=0;i<modes.length;++i)CodeMirror.extendMode(modes[i],{blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * "});CodeMirror.commands.newlineAndIndentContinueComment=function(cm){var pos=cm.getCursor(),token=cm.getTokenAt(pos);var mode=CodeMirror.innerMode(cm.getMode(),token.state).mode;var space;if(token.className=="comment"&&mode.blockCommentStart){var end=token.string.indexOf(mode.blockCommentEnd);var full=cm.getRange({line:pos.line,
203
ch:0},{line:pos.line,ch:token.end}),found;if(end!=-1&&end==token.string.length-mode.blockCommentEnd.length);else if(token.string.indexOf(mode.blockCommentStart)==0){space=full.slice(0,token.start);if(!/^\s*$/.test(space)){space="";for(var i=0;i<token.start;++i)space+=" "}}else if((found=full.indexOf(mode.blockCommentContinue))!=-1&&found+mode.blockCommentContinue.length>token.start&&/^\s*$/.test(full.slice(0,found)))space=full.slice(0,found)}if(space!=null)cm.replaceSelection("\n"+space+mode.blockCommentContinue,
204
"end");else cm.execCommand("newlineAndIndent")}})();(function(){CodeMirror.commands.newlineAndIndentContinueMarkdownList=function(cm){var pos=cm.getCursor(),token=cm.getTokenAt(pos);var mode=CodeMirror.innerMode(cm.getMode(),token.state).mode;var space;if(token.className=="string"){var full=cm.getRange({line:pos.line,ch:0},{line:pos.line,ch:token.end});var listStart=/\*|\d+\./,listContinue;if(token.string.search(listStart)==0){var reg=/^[\W]*(\d+)\./g;var matches=reg.exec(full);if(matches)listContinue=parseInt(matches[1])+1+". ";else listContinue=
205
"* ";space=full.slice(0,token.start);if(!/^\s*$/.test(space)){space="";for(var i=0;i<token.start;++i)space+=" "}}}if(space!=null)cm.replaceSelection("\n"+space+listContinue,"end");else cm.execCommand("newlineAndIndent")}})();(function(){function dialogDiv(cm,template,bottom){var wrap=cm.getWrapperElement();var dialog;dialog=wrap.appendChild(document.createElement("div"));if(bottom)dialog.className="CodeMirror-dialog CodeMirror-dialog-bottom";else dialog.className="CodeMirror-dialog CodeMirror-dialog-top";dialog.innerHTML=template;return dialog}CodeMirror.defineExtension("openDialog",function(template,callback,options){var dialog=dialogDiv(this,template,options&&options.bottom);var closed=false,me=this;function close(){if(closed)return;
206
closed=true;dialog.parentNode.removeChild(dialog)}var inp=dialog.getElementsByTagName("input")[0],button;if(inp){CodeMirror.connect(inp,"keydown",function(e){if(e.keyCode==13||e.keyCode==27){CodeMirror.e_stop(e);close();me.focus();if(e.keyCode==13)callback(inp.value)}});if(options&&options.value)inp.value=options.value;inp.focus();CodeMirror.connect(inp,"blur",close)}else if(button=dialog.getElementsByTagName("button")[0]){CodeMirror.connect(button,"click",function(){close();me.focus()});button.focus();
207
CodeMirror.connect(button,"blur",close)}return close});CodeMirror.defineExtension("openConfirm",function(template,callbacks,options){var dialog=dialogDiv(this,template,options&&options.bottom);var buttons=dialog.getElementsByTagName("button");var closed=false,me=this,blurring=1;function close(){if(closed)return;closed=true;dialog.parentNode.removeChild(dialog);me.focus()}buttons[0].focus();for(var i=0;i<buttons.length;++i){var b=buttons[i];(function(callback){CodeMirror.connect(b,"click",function(e){CodeMirror.e_preventDefault(e);
208
close();if(callback)callback(me)})})(callbacks[i]);CodeMirror.connect(b,"blur",function(){--blurring;setTimeout(function(){if(blurring<=0)close()},200)});CodeMirror.connect(b,"focus",function(){++blurring})}})})();CodeMirror.tagRangeFinder=function(cm,line,hideEnd){var nameStartChar="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";var nameChar=nameStartChar+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";var xmlNAMERegExp=new RegExp("^["+nameStartChar+"]["+nameChar+"]*");var lineText=cm.getLine(line);var found=false;var tag=null;var pos=0;while(!found){pos=lineText.indexOf("<",pos);if(-1==
209
pos)return;if(pos+1<lineText.length&&lineText[pos+1]=="/"){pos++;continue}if(!lineText.substr(pos+1).match(xmlNAMERegExp)){pos++;continue}var gtPos=lineText.indexOf(">",pos+1);if(-1==gtPos){var l=line+1;var foundGt=false;var lastLine=cm.lineCount();while(l<lastLine&&!foundGt){var lt=cm.getLine(l);var gt=lt.indexOf(">");if(-1!=gt){foundGt=true;var slash=lt.lastIndexOf("/",gt);if(-1!=slash&&slash<gt){var str=lineText.substr(slash,gt-slash+1);if(!str.match(/\/\s*>/)){if(hideEnd===true)l++;return l}}}l++}found=
210
true}else{var slashPos=lineText.lastIndexOf("/",gtPos);if(-1==slashPos)found=true;else{var str=lineText.substr(slashPos,gtPos-slashPos+1);if(!str.match(/\/\s*>/))found=true}}if(found){var subLine=lineText.substr(pos+1);tag=subLine.match(xmlNAMERegExp);if(tag){tag=tag[0];if(-1!=lineText.indexOf("</"+tag+">",pos))found=false}else found=false}if(!found)pos++}if(found){var startTag="(\\<\\/"+tag+"\\>)|(\\<"+tag+"\\>)|(\\<"+tag+"\\s)|(\\<"+tag+"$)";var startTagRegExp=new RegExp(startTag,"g");var endTag=
211
"</"+tag+">";var depth=1;var l=line+1;var lastLine=cm.lineCount();while(l<lastLine){lineText=cm.getLine(l);var match=lineText.match(startTagRegExp);if(match)for(var i=0;i<match.length;i++){if(match[i]==endTag)depth--;else depth++;if(!depth){if(hideEnd===true)l++;return l}}l++}return}};
212
CodeMirror.braceRangeFinder=function(cm,line,hideEnd){var lineText=cm.getLine(line),at=lineText.length,startChar,tokenType;for(;;){var found=lineText.lastIndexOf("{",at);if(found<0)break;tokenType=cm.getTokenAt({line:line,ch:found}).className;if(!/^(comment|string)/.test(tokenType)){startChar=found;break}at=found-1}if(startChar==null||lineText.lastIndexOf("}")>startChar)return;var count=1,lastLine=cm.lineCount(),end;outer:for(var i=line+1;i<lastLine;++i){var text=cm.getLine(i),pos=0;for(;;){var nextOpen=
213
text.indexOf("{",pos),nextClose=text.indexOf("}",pos);if(nextOpen<0)nextOpen=text.length;if(nextClose<0)nextClose=text.length;pos=Math.min(nextOpen,nextClose);if(pos==text.length)break;if(cm.getTokenAt({line:i,ch:pos+1}).className==tokenType)if(pos==nextOpen)++count;else if(!--count){end=i;break outer}++pos}}if(end==null||end==line+1)return;if(hideEnd===true)end++;return end};
214
CodeMirror.indentRangeFinder=function(cm,line){var tabSize=cm.getOption("tabSize");var myIndent=cm.getLineHandle(line).indentation(tabSize),last;for(var i=line+1,end=cm.lineCount();i<end;++i){var handle=cm.getLineHandle(i);if(!/^\s*$/.test(handle.text)){if(handle.indentation(tabSize)<=myIndent)break;last=i}}if(!last)return null;return last+1};
215
CodeMirror.newFoldFunction=function(rangeFinder,markText,hideEnd){var folded=[];if(markText==null)markText='<div style="position: absolute; left: 2px; color:#600">&#x25bc;</div>%N%';function isFolded(cm,n){for(var i=0;i<folded.length;++i){var start=cm.lineInfo(folded[i].start);if(!start)folded.splice(i--,1);else if(start.line==n)return{pos:i,region:folded[i]}}}function expand(cm,region){cm.clearMarker(region.start);for(var i=0;i<region.hidden.length;++i)cm.showLine(region.hidden[i])}return function(cm,
216
line){cm.operation(function(){var known=isFolded(cm,line);if(known){folded.splice(known.pos,1);expand(cm,known.region)}else{var end=rangeFinder(cm,line,hideEnd);if(end==null)return;var hidden=[];for(var i=line+1;i<end;++i){var handle=cm.hideLine(i);if(handle)hidden.push(handle)}var first=cm.setMarker(line,markText);var region={start:first,hidden:hidden};cm.onDeleteLine(first,function(){expand(cm,region)});folded.push(region)}})}};(function(){CodeMirror.extendMode("css",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(type,content){return/^[;{}]$/.test(content)}});CodeMirror.extendMode("javascript",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(type,content,textAfter,state){if(this.jsonMode)return/^[\[,{]$/.test(content)||/^}/.test(textAfter);else{if(content==";"&&state.lexical&&state.lexical.type==")")return false;return/^[;{}]$/.test(content)&&!/^;/.test(textAfter)}}});CodeMirror.extendMode("xml",
217
{commentStart:"\x3c!--",commentEnd:"--\x3e",newlineAfterToken:function(type,content,textAfter){return type=="tag"&&/>$/.test(content)||/^</.test(textAfter)}});CodeMirror.defineExtension("commentRange",function(isComment,from,to){var cm=this,curMode=CodeMirror.innerMode(cm.getMode(),cm.getTokenAt(from).state).mode;cm.operation(function(){if(isComment){cm.replaceRange(curMode.commentEnd,to);cm.replaceRange(curMode.commentStart,from);if(from.line==to.line&&from.ch==to.ch)cm.setCursor(from.line,from.ch+
218
curMode.commentStart.length)}else{var selText=cm.getRange(from,to);var startIndex=selText.indexOf(curMode.commentStart);var endIndex=selText.lastIndexOf(curMode.commentEnd);if(startIndex>-1&&endIndex>-1&&endIndex>startIndex)selText=selText.substr(0,startIndex)+selText.substring(startIndex+curMode.commentStart.length,endIndex)+selText.substr(endIndex+curMode.commentEnd.length);cm.replaceRange(selText,from,to)}})});CodeMirror.defineExtension("autoIndentRange",function(from,to){var cmInstance=this;this.operation(function(){for(var i=
219
from.line;i<=to.line;i++)cmInstance.indentLine(i,"smart")})});CodeMirror.defineExtension("autoFormatRange",function(from,to){var cm=this;var outer=cm.getMode(),text=cm.getRange(from,to).split("\n");var state=CodeMirror.copyState(outer,cm.getTokenAt(from).state);var tabSize=cm.getOption("tabSize");var out="",lines=0,atSol=from.ch==0;function newline(){out+="\n";atSol=true;++lines}for(var i=0;i<text.length;++i){var stream=new CodeMirror.StringStream(text[i],tabSize);while(!stream.eol()){var inner=CodeMirror.innerMode(outer,
220
state);var style=outer.token(stream,state),cur=stream.current();stream.start=stream.pos;if(!atSol||/\S/.test(cur)){out+=cur;atSol=false}if(!atSol&&inner.mode.newlineAfterToken&&inner.mode.newlineAfterToken(style,cur,stream.string.slice(stream.pos)||text[i+1]||"",inner.state))newline()}if(!stream.pos&&outer.blankLine)outer.blankLine(state);if(!atSol)newline()}cm.operation(function(){cm.replaceRange(out,from,to);for(var cur=from.line+1,end=from.line+lines;cur<=end;++cur)cm.indentLine(cur,"smart");cm.setSelection(from,
221
cm.getCursor(false))})})})();(function(){function forEach(arr,f){for(var i=0,e=arr.length;i<e;++i)f(arr[i])}function arrayContains(arr,item){if(!Array.prototype.indexOf){var i=arr.length;while(i--)if(arr[i]===item)return true;return false}return arr.indexOf(item)!=-1}function scriptHint(editor,keywords,getToken,options){var cur=editor.getCursor(),token=getToken(editor,cur),tprop=token;if(!/^[\w$_]*$/.test(token.string))token=tprop={start:cur.ch,end:cur.ch,string:"",state:token.state,className:token.string=="."?"property":null};
222
while(tprop.className=="property"){tprop=getToken(editor,{line:cur.line,ch:tprop.start});if(tprop.string!=".")return;tprop=getToken(editor,{line:cur.line,ch:tprop.start});if(tprop.string==")"){var level=1;do{tprop=getToken(editor,{line:cur.line,ch:tprop.start});switch(tprop.string){case ")":level++;break;case "(":level--;break;default:break}}while(level>0);tprop=getToken(editor,{line:cur.line,ch:tprop.start});if(tprop.className=="variable")tprop.className="function";else return}if(!context)var context=
223
[];context.push(tprop)}return{list:getCompletions(token,context,keywords,options),from:{line:cur.line,ch:token.start},to:{line:cur.line,ch:token.end}}}CodeMirror.javascriptHint=function(editor,options){return scriptHint(editor,javascriptKeywords,function(e,cur){return e.getTokenAt(cur)},options)};function getCoffeeScriptToken(editor,cur){var token=editor.getTokenAt(cur);if(cur.ch==token.start+1&&token.string.charAt(0)=="."){token.end=token.start;token.string=".";token.className="property"}else if(/^\.[\w$_]*$/.test(token.string)){token.className=
224
"property";token.start++;token.string=token.string.replace(/\./,"")}return token}CodeMirror.coffeescriptHint=function(editor,options){return scriptHint(editor,coffeescriptKeywords,getCoffeeScriptToken,options)};var stringProps=("charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight "+"toUpperCase toLowerCase split concat match replace search").split(" ");var arrayProps=("length concat join splice push pop shift unshift slice reverse sort indexOf "+"lastIndexOf every some filter forEach map reduce reduceRight ").split(" ");
225
var funcProps="prototype apply call bind".split(" ");var javascriptKeywords=("break case catch continue debugger default delete do else false finally for function "+"if in instanceof new null return switch throw true try typeof var void while with").split(" ");var coffeescriptKeywords=("and break catch class continue delete do else extends false finally for "+"if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes").split(" ");function getCompletions(token,
226
context,keywords,options){var found=[],start=token.string;function maybeAdd(str){if(str.indexOf(start)==0&&!arrayContains(found,str))found.push(str)}function gatherCompletions(obj){if(typeof obj=="string")forEach(stringProps,maybeAdd);else if(obj instanceof Array)forEach(arrayProps,maybeAdd);else if(obj instanceof Function)forEach(funcProps,maybeAdd);for(var name in obj)maybeAdd(name)}if(context){var obj=context.pop(),base;if(obj.className=="variable"){if(options&&options.additionalContext)base=options.additionalContext[obj.string];
227
base=base||window[obj.string]}else if(obj.className=="string")base="";else if(obj.className=="atom")base=1;else if(obj.className=="function")if(window.jQuery!=null&&(obj.string=="$"||obj.string=="jQuery")&&typeof window.jQuery=="function")base=window.jQuery();else if(window._!=null&&obj.string=="_"&&typeof window._=="function")base=window._();while(base!=null&&context.length)base=base[context.pop().string];if(base!=null)gatherCompletions(base)}else{for(var v=token.state.localVars;v;v=v.next)maybeAdd(v.name);
228
for(var v=token.state.globalVars;v;v=v.next)maybeAdd(v.name);gatherCompletions(window);forEach(keywords,maybeAdd)}return found}})();(function(){if(!CodeMirror.modeURL)CodeMirror.modeURL="../mode/%N/%N.js";var loading={};function splitCallback(cont,n){var countDown=n;return function(){if(--countDown==0)cont()}}function ensureDeps(mode,cont){var deps=CodeMirror.modes[mode].dependencies;if(!deps)return cont();var missing=[];for(var i=0;i<deps.length;++i)if(!CodeMirror.modes.hasOwnProperty(deps[i]))missing.push(deps[i]);if(!missing.length)return cont();var split=splitCallback(cont,missing.length);for(var i=0;i<missing.length;++i)CodeMirror.requireMode(missing[i],
229
split)}CodeMirror.requireMode=function(mode,cont){if(typeof mode!="string")mode=mode.name;if(CodeMirror.modes.hasOwnProperty(mode))return ensureDeps(mode,cont);if(loading.hasOwnProperty(mode))return loading[mode].push(cont);var script=document.createElement("script");script.src=CodeMirror.modeURL.replace(/%N/g,mode);var others=document.getElementsByTagName("script")[0];others.parentNode.insertBefore(script,others);var list=loading[mode]=[cont];var count=0,poll=setInterval(function(){if(++count>100)return clearInterval(poll);
230
if(CodeMirror.modes.hasOwnProperty(mode)){clearInterval(poll);loading[mode]=null;ensureDeps(mode,function(){for(var i=0;i<list.length;++i)list[i]()})}},200)};CodeMirror.autoLoadMode=function(instance,mode){if(!CodeMirror.modes.hasOwnProperty(mode))CodeMirror.requireMode(mode,function(){instance.setOption("mode",instance.getOption("mode"))})}})();(function(){var DEFAULT_MIN_CHARS=2;function MatchHighlightState(){this.marked=[]}function getMatchHighlightState(cm){return cm._matchHighlightState||(cm._matchHighlightState=new MatchHighlightState)}function clearMarks(cm){var state=getMatchHighlightState(cm);for(var i=0;i<state.marked.length;++i)state.marked[i].clear();state.marked=[]}function markDocument(cm,className,minChars){clearMarks(cm);minChars=typeof minChars!=="undefined"?minChars:DEFAULT_MIN_CHARS;if(cm.somethingSelected()&&cm.getSelection().replace(/^\s+|\s+$/g,
231
"").length>=minChars){var state=getMatchHighlightState(cm);var query=cm.getSelection();cm.operation(function(){if(cm.lineCount()<2E3)for(var cursor=cm.getSearchCursor(query);cursor.findNext();)if(!(cursor.from().line===cm.getCursor(true).line&&cursor.from().ch===cm.getCursor(true).ch))state.marked.push(cm.markText(cursor.from(),cursor.to(),className))})}}CodeMirror.defineExtension("matchHighlight",function(className,minChars){markDocument(this,className,minChars)})})();CodeMirror.multiplexingMode=function(outer){var others=Array.prototype.slice.call(arguments,1);var n_others=others.length;function indexOf(string,pattern,from){if(typeof pattern=="string")return string.indexOf(pattern,from);var m=pattern.exec(from?string.slice(from):string);return m?m.index+from:-1}return{startState:function(){return{outer:CodeMirror.startState(outer),innerActive:null,inner:null}},copyState:function(state){return{outer:CodeMirror.copyState(outer,state.outer),innerActive:state.innerActive,
232
inner:state.innerActive&&CodeMirror.copyState(state.innerActive.mode,state.inner)}},token:function(stream,state){if(!state.innerActive){var cutOff=Infinity,oldContent=stream.string;for(var i=0;i<n_others;++i){var other=others[i];var found=indexOf(oldContent,other.open,stream.pos);if(found==stream.pos){stream.match(other.open);state.innerActive=other;state.inner=CodeMirror.startState(other.mode,outer.indent?outer.indent(state.outer,""):0);return other.delimStyle}else if(found!=-1&&found<cutOff)cutOff=
233
found}if(cutOff!=Infinity)stream.string=oldContent.slice(0,cutOff);var outerToken=outer.token(stream,state.outer);if(cutOff!=Infinity)stream.string=oldContent;return outerToken}else{var curInner=state.innerActive,oldContent=stream.string;var found=indexOf(oldContent,curInner.close,stream.pos);if(found==stream.pos){stream.match(curInner.close);state.innerActive=state.inner=null;return curInner.delimStyle}if(found>-1)stream.string=oldContent.slice(0,found);var innerToken=curInner.mode.token(stream,
234
state.inner);if(found>-1)stream.string=oldContent;var cur=stream.current(),found=cur.indexOf(curInner.close);if(found>-1)stream.backUp(cur.length-found);return innerToken}},indent:function(state,textAfter){var mode=state.innerActive?state.innerActive.mode:outer;if(!mode.indent)return CodeMirror.Pass;return mode.indent(state.innerActive?state.inner:state.outer,textAfter)},blankLine:function(state){var mode=state.innerActive?state.innerActive.mode:outer;if(mode.blankLine)mode.blankLine(state.innerActive?
235
state.inner:state.outer);if(!state.innerActive)for(var i=0;i<n_others;++i){var other=others[i];if(other.open==="\n"){state.innerActive=other;state.inner=CodeMirror.startState(other.mode,mode.indent?mode.indent(state.outer,""):0)}}else if(mode.close==="\n")state.innerActive=state.inner=null},electricChars:outer.electricChars,innerMode:function(state){return state.inner?{state:state.inner,mode:state.innerActive.mode}:{state:state.outer,mode:outer}}}};CodeMirror.overlayMode=CodeMirror.overlayParser=function(base,overlay,combine){return{startState:function(){return{base:CodeMirror.startState(base),overlay:CodeMirror.startState(overlay),basePos:0,baseCur:null,overlayPos:0,overlayCur:null}},copyState:function(state){return{base:CodeMirror.copyState(base,state.base),overlay:CodeMirror.copyState(overlay,state.overlay),basePos:state.basePos,baseCur:null,overlayPos:state.overlayPos,overlayCur:null}},token:function(stream,state){if(stream.start==state.basePos){state.baseCur=
236
base.token(stream,state.base);state.basePos=stream.pos}if(stream.start==state.overlayPos){stream.pos=stream.start;state.overlayCur=overlay.token(stream,state.overlay);state.overlayPos=stream.pos}stream.pos=Math.min(state.basePos,state.overlayPos);if(stream.eol())state.basePos=state.overlayPos=0;if(state.overlayCur==null)return state.baseCur;if(state.baseCur!=null&&combine)return state.baseCur+" "+state.overlayCur;else return state.overlayCur},indent:base.indent&&function(state,textAfter){return base.indent(state.base,
237
textAfter)},electricChars:base.electricChars,innerMode:function(state){return{state:state.base,mode:base}},blankLine:function(state){if(base.blankLine)base.blankLine(state.base);if(overlay.blankLine)overlay.blankLine(state.overlay)}}};(function(){function forEach(arr,f){for(var i=0,e=arr.length;i<e;++i)f(arr[i])}function arrayContains(arr,item){if(!Array.prototype.indexOf){var i=arr.length;while(i--)if(arr[i]===item)return true;return false}return arr.indexOf(item)!=-1}function scriptHint(editor,keywords,getToken){var cur=editor.getCursor(),token=getToken(editor,cur),tprop=token;if(!/^[\w$_]*$/.test(token.string))token=tprop={start:cur.ch,end:cur.ch,string:"",state:token.state,className:token.string==":"?"pig-type":null};if(!context)var context=
238
[];context.push(tprop);var completionList=getCompletions(token,context);completionList=completionList.sort();if(completionList.length==1)completionList.push(" ");return{list:completionList,from:{line:cur.line,ch:token.start},to:{line:cur.line,ch:token.end}}}CodeMirror.pigHint=function(editor){return scriptHint(editor,pigKeywordsU,function(e,cur){return e.getTokenAt(cur)})};function toTitleCase(str){return str.replace(/(?:^|\s)\w/g,function(match){return match.toUpperCase()})}var pigKeywords="VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP "+
239
"JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL "+"PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE "+"SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE "+"NEQ MATCHES TRUE FALSE";var pigKeywordsU=pigKeywords.split(" ");var pigKeywordsL=pigKeywords.toLowerCase().split(" ");var pigTypes="BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP";var pigTypesU=pigTypes.split(" ");
240
var pigTypesL=pigTypes.toLowerCase().split(" ");var pigBuiltins="ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL "+"CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS "+"DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG "+"FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN "+"INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER "+
241
"ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS "+"LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA "+"PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE "+"SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG "+"TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER";var pigBuiltinsU=pigBuiltins.split(" ").join("() ").split(" ");
242
var pigBuiltinsL=pigBuiltins.toLowerCase().split(" ").join("() ").split(" ");var pigBuiltinsC=("BagSize BinStorage Bloom BuildBloom ConstantSize CubeDimensions DoubleAbs "+"DoubleAvg DoubleBase DoubleMax DoubleMin DoubleRound DoubleSum FloatAbs FloatAvg FloatMax "+"FloatMin FloatRound FloatSum GenericInvoker IntAbs IntAvg IntMax IntMin IntSum "+"InvokeForDouble InvokeForFloat InvokeForInt InvokeForLong InvokeForString Invoker "+"IsEmpty JsonLoader JsonMetadata JsonStorage LongAbs LongAvg LongMax LongMin LongSum MapSize "+
243
"MonitoredUDF Nondeterministic OutputSchema PigStorage PigStreaming StringConcat StringMax "+"StringMin StringSize TextLoader TupleSize Utf8StorageConverter").split(" ").join("() ").split(" ");function getCompletions(token,context){var found=[],start=token.string;function maybeAdd(str){if(str.indexOf(start)==0&&!arrayContains(found,str))found.push(str)}function gatherCompletions(obj){if(obj==":")forEach(pigTypesL,maybeAdd);else{forEach(pigBuiltinsU,maybeAdd);forEach(pigBuiltinsL,maybeAdd);forEach(pigBuiltinsC,
244
maybeAdd);forEach(pigTypesU,maybeAdd);forEach(pigTypesL,maybeAdd);forEach(pigKeywordsU,maybeAdd);forEach(pigKeywordsL,maybeAdd)}}if(context){var obj=context.pop(),base;if(obj.className=="pig-word")base=obj.string;else if(obj.className=="pig-type")base=":"+obj.string;while(base!=null&&context.length)base=base[context.pop().string];if(base!=null)gatherCompletions(base)}return found}})();(function(){if(typeof exports==="undefined")return;function splitLines(string){return string.split(/\r?\n|\r/)}function StringStream(string){this.pos=this.start=0;this.string=string}StringStream.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)||null},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(match){var ch=this.string.charAt(this.pos);if(typeof match==
245
"string")var ok=ch==match;else var ok=ch&&(match.test?match.test(ch):match(ch));if(ok){++this.pos;return ch}},eatWhile:function(match){var start=this.pos;while(this.eat(match));return this.pos>start},eatSpace:function(){var start=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>start},skipToEnd:function(){this.pos=this.string.length},skipTo:function(ch){var found=this.string.indexOf(ch,this.pos);if(found>-1){this.pos=found;return true}},backUp:function(n){this.pos-=
246
n},column:function(){return this.start},indentation:function(){return 0},match:function(pattern,consume,caseInsensitive){if(typeof pattern=="string"){var cased=function(str){return caseInsensitive?str.toLowerCase():str};if(cased(this.string).indexOf(cased(pattern),this.pos)==this.pos){if(consume!==false)this.pos+=pattern.length;return true}}else{var match=this.string.slice(this.pos).match(pattern);if(match&&consume!==false)this.pos+=match[0].length;return match}},current:function(){return this.string.slice(this.start,
247
this.pos)}};exports.StringStream=StringStream;exports.startState=function(mode,a1,a2){return mode.startState?mode.startState(a1,a2):true};var modes=exports.modes={},mimeModes=exports.mimeModes={};exports.defineMode=function(name,mode){modes[name]=mode};exports.defineMIME=function(mime,spec){mimeModes[mime]=spec};exports.getMode=function(options,spec){if(typeof spec=="string"&&mimeModes.hasOwnProperty(spec))spec=mimeModes[spec];if(typeof spec=="string")var mname=spec,config={};else if(spec!=null)var mname=
248
spec.name,config=spec;var mfactory=modes[mname];if(!mfactory)throw new Error("Unknown mode: "+spec);return mfactory(options,config||{})};exports.runMode=function(string,modespec,callback){var mode=exports.getMode({indentUnit:2},modespec);var lines=splitLines(string),state=exports.startState(mode);for(var i=0,e=lines.length;i<e;++i){if(i)callback("\n");var stream=new exports.StringStream(lines[i]);while(!stream.eol()){var style=mode.token(stream,state);callback(stream.current(),style,i,stream.start);
249
stream.start=stream.pos}}}})();CodeMirror.runMode=function(string,modespec,callback,options){function esc(str){return str.replace(/[<&]/g,function(ch){return ch=="<"?"&lt;":"&amp;"})}var mode=CodeMirror.getMode(CodeMirror.defaults,modespec);var isNode=callback.nodeType==1;var tabSize=options&&options.tabSize||CodeMirror.defaults.tabSize;if(isNode){var node=callback,accum=[],col=0;callback=function(text,style){if(text=="\n"){accum.push("<br>");col=0;return}var escaped="";for(var pos=0;;){var idx=text.indexOf("\t",pos);if(idx==-1){escaped+=
250
esc(text.slice(pos));col+=text.length-pos;break}else{col+=idx-pos;escaped+=esc(text.slice(pos,idx));var size=tabSize-col%tabSize;col+=size;for(var i=0;i<size;++i)escaped+=" ";pos=idx+1}}if(style)accum.push('<span class="cm-'+esc(style)+'">'+escaped+"</span>");else accum.push(escaped)}}var lines=CodeMirror.splitLines(string),state=CodeMirror.startState(mode);for(var i=0,e=lines.length;i<e;++i){if(i)callback("\n");var stream=new CodeMirror.StringStream(lines[i]);while(!stream.eol()){var style=mode.token(stream,
251
state);callback(stream.current(),style,i,stream.start);stream.start=stream.pos}}if(isNode)node.innerHTML=accum.join("")};(function(){function SearchState(){this.posFrom=this.posTo=this.query=null;this.marked=[]}function getSearchState(cm){return cm._searchState||(cm._searchState=new SearchState)}function getSearchCursor(cm,query,pos){return cm.getSearchCursor(query,pos,typeof query=="string"&&query==query.toLowerCase())}function dialog(cm,text,shortText,f){if(cm.openDialog)cm.openDialog(text,f);else f(prompt(shortText,""))}function confirmDialog(cm,text,shortText,fs){if(cm.openConfirm)cm.openConfirm(text,fs);else if(confirm(shortText))fs[0]()}
252
function parseQuery(query){var isRE=query.match(/^\/(.*)\/([a-z]*)$/);return isRE?new RegExp(isRE[1],isRE[2].indexOf("i")==-1?"":"i"):query}var queryDialog='Search: <input type="text" style="width: 10em"/> <span style="color: #888">(Use /re/ syntax for regexp search)</span>';function doSearch(cm,rev){var state=getSearchState(cm);if(state.query)return findNext(cm,rev);dialog(cm,queryDialog,"Search for:",function(query){cm.operation(function(){if(!query||state.query)return;state.query=parseQuery(query);
253
if(cm.lineCount()<2E3)for(var cursor=getSearchCursor(cm,state.query);cursor.findNext();)state.marked.push(cm.markText(cursor.from(),cursor.to(),"CodeMirror-searching"));state.posFrom=state.posTo=cm.getCursor();findNext(cm,rev)})})}function findNext(cm,rev){cm.operation(function(){var state=getSearchState(cm);var cursor=getSearchCursor(cm,state.query,rev?state.posFrom:state.posTo);if(!cursor.find(rev)){cursor=getSearchCursor(cm,state.query,rev?{line:cm.lineCount()-1}:{line:0,ch:0});if(!cursor.find(rev))return}cm.setSelection(cursor.from(),
254
cursor.to());state.posFrom=cursor.from();state.posTo=cursor.to()})}function clearSearch(cm){cm.operation(function(){var state=getSearchState(cm);if(!state.query)return;state.query=null;for(var i=0;i<state.marked.length;++i)state.marked[i].clear();state.marked.length=0})}var replaceQueryDialog='Replace: <input type="text" style="width: 10em"/> <span style="color: #888">(Use /re/ syntax for regexp search)</span>';var replacementQueryDialog='With: <input type="text" style="width: 10em"/>';var doReplaceConfirm=
255
"Replace? <button>Yes</button> <button>No</button> <button>Stop</button>";function replace(cm,all){dialog(cm,replaceQueryDialog,"Replace:",function(query){if(!query)return;query=parseQuery(query);dialog(cm,replacementQueryDialog,"Replace with:",function(text){if(all)cm.compoundChange(function(){cm.operation(function(){for(var cursor=getSearchCursor(cm,query);cursor.findNext();)if(typeof query!="string"){var match=cm.getRange(cursor.from(),cursor.to()).match(query);cursor.replace(text.replace(/\$(\d)/,
256
function(w,i){return match[i]}))}else cursor.replace(text)})});else{var doReplace=function(match){cursor.replace(typeof query=="string"?text:text.replace(/\$(\d)/,function(w,i){return match[i]}));advance()};var advance=function(){var start=cursor.from(),match;if(!(match=cursor.findNext())){cursor=getSearchCursor(cm,query);if(!(match=cursor.findNext())||start&&cursor.from().line==start.line&&cursor.from().ch==start.ch)return}cm.setSelection(cursor.from(),cursor.to());confirmDialog(cm,doReplaceConfirm,
257
"Replace?",[function(){doReplace(match)},advance])};clearSearch(cm);var cursor=getSearchCursor(cm,query,cm.getCursor());advance()}})})}CodeMirror.commands.find=function(cm){clearSearch(cm);doSearch(cm)};CodeMirror.commands.findNext=doSearch;CodeMirror.commands.findPrev=function(cm){doSearch(cm,true)};CodeMirror.commands.clearSearch=clearSearch;CodeMirror.commands.replace=replace;CodeMirror.commands.replaceAll=function(cm){replace(cm,true)}})();(function(){function SearchCursor(cm,query,pos,caseFold){this.atOccurrence=false;this.cm=cm;if(caseFold==null&&typeof query=="string")caseFold=false;pos=pos?cm.clipPos(pos):{line:0,ch:0};this.pos={from:pos,to:pos};if(typeof query!="string"){if(!query.global)query=new RegExp(query.source,query.ignoreCase?"ig":"g");this.matches=function(reverse,pos){if(reverse){query.lastIndex=0;var line=cm.getLine(pos.line).slice(0,pos.ch),match=query.exec(line),start=0;while(match){start+=match.index+1;line=line.slice(start);
258
query.lastIndex=0;var newmatch=query.exec(line);if(newmatch)match=newmatch;else break}start--}else{query.lastIndex=pos.ch;var line=cm.getLine(pos.line),match=query.exec(line),start=match&&match.index}if(match)return{from:{line:pos.line,ch:start},to:{line:pos.line,ch:start+match[0].length},match:match}}}else{if(caseFold)query=query.toLowerCase();var fold=caseFold?function(str){return str.toLowerCase()}:function(str){return str};var target=query.split("\n");if(target.length==1)this.matches=function(reverse,
259
pos){var line=fold(cm.getLine(pos.line)),len=query.length,match;if(reverse?pos.ch>=len&&(match=line.lastIndexOf(query,pos.ch-len))!=-1:(match=line.indexOf(query,pos.ch))!=-1)return{from:{line:pos.line,ch:match},to:{line:pos.line,ch:match+len}}};else this.matches=function(reverse,pos){var ln=pos.line,idx=reverse?target.length-1:0,match=target[idx],line=fold(cm.getLine(ln));var offsetA=reverse?line.indexOf(match)+match.length:line.lastIndexOf(match);if(reverse?offsetA>=pos.ch||offsetA!=match.length:
260
offsetA<=pos.ch||offsetA!=line.length-match.length)return;for(;;){if(reverse?!ln:ln==cm.lineCount()-1)return;line=fold(cm.getLine(ln+=reverse?-1:1));match=target[reverse?--idx:++idx];if(idx>0&&idx<target.length-1)if(line!=match)return;else continue;var offsetB=reverse?line.lastIndexOf(match):line.indexOf(match)+match.length;if(reverse?offsetB!=line.length-match.length:offsetB!=match.length)return;var start={line:pos.line,ch:offsetA},end={line:ln,ch:offsetB};return{from:reverse?end:start,to:reverse?
261
start:end}}}}}SearchCursor.prototype={findNext:function(){return this.find(false)},findPrevious:function(){return this.find(true)},find:function(reverse){var self=this,pos=this.cm.clipPos(reverse?this.pos.from:this.pos.to);function savePosAndFail(line){var pos={line:line,ch:0};self.pos={from:pos,to:pos};self.atOccurrence=false;return false}for(;;){if(this.pos=this.matches(reverse,pos)){this.atOccurrence=true;return this.pos.match||true}if(reverse){if(!pos.line)return savePosAndFail(0);pos={line:pos.line-
262
1,ch:this.cm.getLine(pos.line-1).length}}else{var maxLine=this.cm.lineCount();if(pos.line==maxLine-1)return savePosAndFail(maxLine);pos={line:pos.line+1,ch:0}}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(newText){var self=this;if(this.atOccurrence)self.pos.to=this.cm.replaceRange(newText,self.pos.from,self.pos.to)}};CodeMirror.defineExtension("getSearchCursor",function(query,pos,caseFold){return new SearchCursor(this,
263
query,pos,caseFold)})})();(function(){CodeMirror.simpleHint=function(editor,getHints,givenOptions){var options={},defaults=CodeMirror.simpleHint.defaults;for(var opt in defaults)if(defaults.hasOwnProperty(opt))options[opt]=(givenOptions&&givenOptions.hasOwnProperty(opt)?givenOptions:defaults)[opt];function collectHints(previousToken){if(editor.somethingSelected())return;var tempToken=editor.getTokenAt(editor.getCursor());if(options.closeOnTokenChange&&previousToken!=null&&(tempToken.start!=previousToken.start||tempToken.className!=
264
previousToken.className))return;var result=getHints(editor,givenOptions);if(!result||!result.list.length)return;var completions=result.list;function insert(str){editor.replaceRange(str,result.from,result.to)}if(options.completeSingle&&completions.length==1){insert(completions[0]);return true}var complete=document.createElement("div");complete.className="CodeMirror-completions";var sel=complete.appendChild(document.createElement("select"));if(!window.opera)sel.multiple=true;for(var i=0;i<completions.length;++i){var opt=
265
sel.appendChild(document.createElement("option"));opt.appendChild(document.createTextNode(completions[i]))}sel.firstChild.selected=true;sel.size=Math.min(10,completions.length);var pos=options.alignWithWord?editor.charCoords(result.from):editor.cursorCoords();complete.style.left=pos.x+"px";complete.style.top=pos.yBot+"px";document.body.appendChild(complete);var winW=window.innerWidth||Math.max(document.body.offsetWidth,document.documentElement.offsetWidth);if(winW-pos.x<sel.clientWidth)complete.style.left=
266
pos.x-sel.clientWidth+"px";if(completions.length<=10)complete.style.width=sel.clientWidth-1+"px";var done=false;function close(){if(done)return;done=true;complete.parentNode.removeChild(complete)}function pick(){insert(completions[sel.selectedIndex]);close();setTimeout(function(){editor.focus()},50)}CodeMirror.connect(sel,"blur",close);CodeMirror.connect(sel,"keydown",function(event){var code=event.keyCode;if(code==13){CodeMirror.e_stop(event);pick()}else if(code==27){CodeMirror.e_stop(event);close();
267
editor.focus()}else if(code!=38&&code!=40&&code!=33&&code!=34&&!CodeMirror.isModifierKey(event)){close();editor.focus();editor.triggerOnKeyDown(event);if(!options.closeOnBackspace||code!=8)setTimeout(function(){collectHints(tempToken)},50)}});CodeMirror.connect(sel,"dblclick",pick);sel.focus();if(window.opera)setTimeout(function(){if(!done)sel.focus()},100);return true}return collectHints()};CodeMirror.simpleHint.defaults={closeOnBackspace:true,closeOnTokenChange:false,completeSingle:true,alignWithWord:true}})();(function(){CodeMirror.xmlHints=[];CodeMirror.xmlHint=function(cm,simbol){if(simbol.length>0){var cursor=cm.getCursor();cm.replaceSelection(simbol);cursor={line:cursor.line,ch:cursor.ch+1};cm.setCursor(cursor)}CodeMirror.simpleHint(cm,getHint)};var getHint=function(cm){var cursor=cm.getCursor();if(cursor.ch>0){var text=cm.getRange({line:0,ch:0},cursor);var typed="";var simbol="";for(var i=text.length-1;i>=0;i--)if(text[i]==" "||text[i]=="<"){simbol=text[i];break}else typed=text[i]+typed;text=text.slice(0,
268
text.length-typed.length);var path=getActiveElement(cm,text)+simbol;var hints=CodeMirror.xmlHints[path];if(typeof hints==="undefined")hints=[""];else{hints=hints.slice(0);for(var i=hints.length-1;i>=0;i--)if(hints[i].indexOf(typed)!=0)hints.splice(i,1)}return{list:hints,from:{line:cursor.line,ch:cursor.ch-typed.length},to:cursor}}};var getActiveElement=function(codeMirror,text){var element="";if(text.length>=0){var regex=new RegExp("<([^!?][^\\s/>]*).*?>","g");var matches=[];var match;while((match=
269
regex.exec(text))!=null)matches.push({tag:match[1],selfclose:match[0].slice(match[0].length-2)==="/>"});for(var i=matches.length-1,skip=0;i>=0;i--){var item=matches[i];if(item.tag[0]=="/")skip++;else if(item.selfclose==false)if(skip>0)skip--;else element="<"+item.tag+">"+element}element+=getOpenTag(text)}return element};var getOpenTag=function(text){var open=text.lastIndexOf("<");var close=text.lastIndexOf(">");if(close<open){text=text.slice(open);if(text!="<"){var space=text.indexOf(" ");if(space<
270
0)space=text.indexOf("\t");if(space<0)space=text.indexOf("\n");if(space<0)space=text.length;return text.slice(0,space)}}return""}})();CodeMirror.defineMode("xml",function(config,parserConfig){var indentUnit=config.indentUnit;var Kludges=parserConfig.htmlMode?{autoSelfClosers:{"area":true,"base":true,"br":true,"col":true,"command":true,"embed":true,"frame":true,"hr":true,"img":true,"input":true,"keygen":true,"link":true,"meta":true,"param":true,"source":true,"track":true,"wbr":true},implicitlyClosed:{"dd":true,"li":true,"optgroup":true,"option":true,"p":true,"rp":true,"rt":true,"tbody":true,"td":true,"tfoot":true,"th":true,"tr":true},
271
contextGrabbers:{"dd":{"dd":true,"dt":true},"dt":{"dd":true,"dt":true},"li":{"li":true},"option":{"option":true,"optgroup":true},"optgroup":{"optgroup":true},"p":{"address":true,"article":true,"aside":true,"blockquote":true,"dir":true,"div":true,"dl":true,"fieldset":true,"footer":true,"form":true,"h1":true,"h2":true,"h3":true,"h4":true,"h5":true,"h6":true,"header":true,"hgroup":true,"hr":true,"menu":true,"nav":true,"ol":true,"p":true,"pre":true,"section":true,"table":true,"ul":true},"rp":{"rp":true,
272
"rt":true},"rt":{"rp":true,"rt":true},"tbody":{"tbody":true,"tfoot":true},"td":{"td":true,"th":true},"tfoot":{"tbody":true},"th":{"td":true,"th":true},"thead":{"tbody":true,"tfoot":true},"tr":{"tr":true}},doNotIndent:{"pre":true},allowUnquoted:true,allowMissing:true}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:false,allowMissing:false};var alignCDATA=parserConfig.alignCDATA;var tagName,type;function inText(stream,state){function chain(parser){state.tokenize=
273
parser;return parser(stream,state)}var ch=stream.next();if(ch=="<")if(stream.eat("!"))if(stream.eat("["))if(stream.match("CDATA["))return chain(inBlock("atom","]]\x3e"));else return null;else if(stream.match("--"))return chain(inBlock("comment","--\x3e"));else if(stream.match("DOCTYPE",true,true)){stream.eatWhile(/[\w\._\-]/);return chain(doctype(1))}else return null;else if(stream.eat("?")){stream.eatWhile(/[\w\._\-]/);state.tokenize=inBlock("meta","?>");return"meta"}else{var isClose=stream.eat("/");
274
tagName="";var c;while(c=stream.eat(/[^\s\u00a0=<>"'\/?]/))tagName+=c;if(!tagName)return"error";type=isClose?"closeTag":"openTag";state.tokenize=inTag;return"tag"}else if(ch=="&"){var ok;if(stream.eat("#"))if(stream.eat("x"))ok=stream.eatWhile(/[a-fA-F\d]/)&&stream.eat(";");else ok=stream.eatWhile(/[\d]/)&&stream.eat(";");else ok=stream.eatWhile(/[\w\.\-:]/)&&stream.eat(";");return ok?"atom":"error"}else{stream.eatWhile(/[^&<]/);return null}}function inTag(stream,state){var ch=stream.next();if(ch==
275
">"||ch=="/"&&stream.eat(">")){state.tokenize=inText;type=ch==">"?"endTag":"selfcloseTag";return"tag"}else if(ch=="="){type="equals";return null}else if(/['"]/.test(ch)){state.tokenize=inAttribute(ch);return state.tokenize(stream,state)}else{stream.eatWhile(/[^\s\u00a0=<>"']/);return"word"}}function inAttribute(quote){return function(stream,state){while(!stream.eol())if(stream.next()==quote){state.tokenize=inTag;break}return"string"}}function inBlock(style,terminator){return function(stream,state){while(!stream.eol()){if(stream.match(terminator)){state.tokenize=
276
inText;break}stream.next()}return style}}function doctype(depth){return function(stream,state){var ch;while((ch=stream.next())!=null)if(ch=="<"){state.tokenize=doctype(depth+1);return state.tokenize(stream,state)}else if(ch==">")if(depth==1){state.tokenize=inText;break}else{state.tokenize=doctype(depth-1);return state.tokenize(stream,state)}return"meta"}}var curState,setStyle;function pass(){for(var i=arguments.length-1;i>=0;i--)curState.cc.push(arguments[i])}function cont(){pass.apply(null,arguments);
277
return true}function pushContext(tagName,startOfLine){var noIndent=Kludges.doNotIndent.hasOwnProperty(tagName)||curState.context&&curState.context.noIndent;curState.context={prev:curState.context,tagName:tagName,indent:curState.indented,startOfLine:startOfLine,noIndent:noIndent}}function popContext(){if(curState.context)curState.context=curState.context.prev}function element(type){if(type=="openTag"){curState.tagName=tagName;return cont(attributes,endtag(curState.startOfLine))}else if(type=="closeTag"){var err=
278
false;if(curState.context){if(curState.context.tagName!=tagName){if(Kludges.implicitlyClosed.hasOwnProperty(curState.context.tagName.toLowerCase()))popContext();err=!curState.context||curState.context.tagName!=tagName}}else err=true;if(err)setStyle="error";return cont(endclosetag(err))}return cont()}function endtag(startOfLine){return function(type){if(type=="selfcloseTag"||type=="endTag"&&Kludges.autoSelfClosers.hasOwnProperty(curState.tagName.toLowerCase())){maybePopContext(curState.tagName.toLowerCase());
279
return cont()}if(type=="endTag"){maybePopContext(curState.tagName.toLowerCase());pushContext(curState.tagName,startOfLine);return cont()}return cont()}}function endclosetag(err){return function(type){if(err)setStyle="error";if(type=="endTag"){popContext();return cont()}setStyle="error";return cont(arguments.callee)}}function maybePopContext(nextTagName){var parentTagName;while(true){if(!curState.context)return;parentTagName=curState.context.tagName.toLowerCase();if(!Kludges.contextGrabbers.hasOwnProperty(parentTagName)||
280
!Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName))return;popContext()}}function attributes(type){if(type=="word"){setStyle="attribute";return cont(attribute,attributes)}if(type=="endTag"||type=="selfcloseTag")return pass();setStyle="error";return cont(attributes)}function attribute(type){if(type=="equals")return cont(attvalue,attributes);if(!Kludges.allowMissing)setStyle="error";else if(type=="word")setStyle="attribute";return type=="endTag"||type=="selfcloseTag"?pass():cont()}function attvalue(type){if(type==
281
"string")return cont(attvaluemaybe);if(type=="word"&&Kludges.allowUnquoted){setStyle="string";return cont()}setStyle="error";return type=="endTag"||type=="selfCloseTag"?pass():cont()}function attvaluemaybe(type){if(type=="string")return cont(attvaluemaybe);else return pass()}return{startState:function(){return{tokenize:inText,cc:[],indented:0,startOfLine:true,tagName:null,context:null}},token:function(stream,state){if(stream.sol()){state.startOfLine=true;state.indented=stream.indentation()}if(stream.eatSpace())return null;
282
setStyle=type=tagName=null;var style=state.tokenize(stream,state);state.type=type;if((style||type)&&style!="comment"){curState=state;while(true){var comb=state.cc.pop()||element;if(comb(type||style))break}}state.startOfLine=false;return setStyle||style},indent:function(state,textAfter,fullLine){var context=state.context;if(state.tokenize!=inTag&&state.tokenize!=inText||context&&context.noIndent)return fullLine?fullLine.match(/^(\s*)/)[0].length:0;if(alignCDATA&&/<!\[CDATA\[/.test(textAfter))return 0;
283
if(context&&/^<\//.test(textAfter))context=context.prev;while(context&&!context.startOfLine)context=context.prev;if(context)return context.indent+indentUnit;else return 0},electricChars:"/",configuration:parserConfig.htmlMode?"html":"xml"}});CodeMirror.defineMIME("text/xml","xml");CodeMirror.defineMIME("application/xml","xml");if(!CodeMirror.mimeModes.hasOwnProperty("text/html"))CodeMirror.defineMIME("text/html",{name:"xml",htmlMode:true});CodeMirror.defineMode("css",function(config){var indentUnit=config.indentUnit,type;var atMediaTypes=keySet(["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"]);var atMediaFeatures=keySet(["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio",
284
"max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"]);var propertyKeywords=keySet(["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-iteration-count","animation-name","animation-play-state","animation-timing-function",
285
"appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color",
286
"border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow",
287
"box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align",
288
"drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position",
289
"font-weight","grid-cell","grid-column","grid-column-align","grid-column-sizing","grid-column-span","grid-columns","grid-flow","grid-row","grid-row-align","grid-row-sizing","grid-row-span","grid-rows","grid-template","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style",
290
"list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x",
291
"overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","size",
292
"speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-shadow","text-space-collapse",
293
"text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"]);var colorKeywords=keySet(["black",
294
"silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua"]);var valueKeywords=keySet(["above","absolute","activeborder","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","auto","avoid","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold",
295
"bolder","border","border-box","both","bottom","break-all","break-word","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","compact","condensed","contain","content","content-box","context-menu","continuous","copy","cover","crop","cross","crosshair",
296
"currentcolor","cursive","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er",
297
"ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ew-resize","expanded","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher",
298
"highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-table","inset","inside","intrinsic","invert","italic","justify","kannada","katakana","katakana-iroha","khmer","landscape","lao","large","larger","left","level","lighter","line-through","linear","lines","list-item","listbox","listitem","local",
299
"logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container",
300
"media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","navy","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside",
301
"overlay","overline","padding","padding-box","painted","paused","persian","plus-darker","plus-lighter","pointer","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radio","read-only","read-write","read-write-plaintext-only","relative","repeat","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration",
302
"searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","single","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize",
303
"table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian",
304
"upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","white","wider","window","windowframe","windowtext","x-large","x-small","xor","xx-large","xx-small","yellow"]);function keySet(array){var keys={};for(var i=0;i<array.length;++i)keys[array[i]]=true;return keys}function ret(style,tp){type=tp;return style}function tokenBase(stream,
305
state){var ch=stream.next();if(ch=="@"){stream.eatWhile(/[\w\\\-]/);return ret("def",stream.current())}else if(ch=="/"&&stream.eat("*")){state.tokenize=tokenCComment;return tokenCComment(stream,state)}else if(ch=="<"&&stream.eat("!")){state.tokenize=tokenSGMLComment;return tokenSGMLComment(stream,state)}else if(ch=="=")ret(null,"compare");else if((ch=="~"||ch=="|")&&stream.eat("="))return ret(null,"compare");else if(ch=='"'||ch=="'"){state.tokenize=tokenString(ch);return state.tokenize(stream,state)}else if(ch==
306
"#"){stream.eatWhile(/[\w\\\-]/);return ret("atom","hash")}else if(ch=="!"){stream.match(/^\s*\w*/);return ret("keyword","important")}else if(/\d/.test(ch)){stream.eatWhile(/[\w.%]/);return ret("number","unit")}else if(ch==="-")if(/\d/.test(stream.peek())){stream.eatWhile(/[\w.%]/);return ret("number","unit")}else{if(stream.match(/^[^-]+-/))return ret("meta",type)}else if(/[,+>*\/]/.test(ch))return ret(null,"select-op");else if(ch=="."&&stream.match(/^-?[_a-z][_a-z0-9-]*/i))return ret("qualifier",
307
type);else if(ch==":")return ret("operator",ch);else if(/[;{}\[\]\(\)]/.test(ch))return ret(null,ch);else if(ch=="u"&&stream.match("rl(")){stream.backUp(1);state.tokenize=tokenParenthesized;return ret("property","variable")}else{stream.eatWhile(/[\w\\\-]/);return ret("property","variable")}}function tokenCComment(stream,state){var maybeEnd=false,ch;while((ch=stream.next())!=null){if(maybeEnd&&ch=="/"){state.tokenize=tokenBase;break}maybeEnd=ch=="*"}return ret("comment","comment")}function tokenSGMLComment(stream,
308
state){var dashes=0,ch;while((ch=stream.next())!=null){if(dashes>=2&&ch==">"){state.tokenize=tokenBase;break}dashes=ch=="-"?dashes+1:0}return ret("comment","comment")}function tokenString(quote,nonInclusive){return function(stream,state){var escaped=false,ch;while((ch=stream.next())!=null){if(ch==quote&&!escaped)break;escaped=!escaped&&ch=="\\"}if(!escaped){if(nonInclusive)stream.backUp(1);state.tokenize=tokenBase}return ret("string","string")}}function tokenParenthesized(stream,state){stream.next();
309
if(!stream.match(/\s*["']/,false))state.tokenize=tokenString(")",true);else state.tokenize=tokenBase;return ret(null,"(")}return{startState:function(base){return{tokenize:tokenBase,baseIndent:base||0,stack:[]}},token:function(stream,state){if(state.tokenize==tokenBase&&stream.eatSpace())return null;var style=state.tokenize(stream,state);var context=state.stack[state.stack.length-1];if(style=="property")if(context=="propertyValue")if(valueKeywords[stream.current()])style="string-2";else if(colorKeywords[stream.current()])style=
310
"keyword";else style="variable-2";else if(context=="rule"){if(!propertyKeywords[stream.current()])style+=" error"}else if(!context||context=="@media{")style="tag";else if(context=="@media")if(atMediaTypes[stream.current()])style="attribute";else if(/^(only|not)$/i.test(stream.current()))style="keyword";else if(stream.current().toLowerCase()=="and")style="error";else if(atMediaFeatures[stream.current()])style="error";else style="attribute error";else if(context=="@mediaType")if(atMediaTypes[stream.current()])style=
311
"attribute";else if(stream.current().toLowerCase()=="and")style="operator";else if(/^(only|not)$/i.test(stream.current()))style="error";else if(atMediaFeatures[stream.current()])style="error";else style="error";else if(context=="@mediaType(")if(propertyKeywords[stream.current()]);else if(atMediaTypes[stream.current()])style="error";else if(stream.current().toLowerCase()=="and")style="operator";else if(/^(only|not)$/i.test(stream.current()))style="error";else style+=" error";else style="error";else if(style==
312
"atom")if(!context||context=="@media{")style="builtin";else if(context=="propertyValue"){if(!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(stream.current()))style+=" error"}else style="error";else if(context=="@media"&&type=="{")style="error";if(type=="{")if(context=="@media"||context=="@mediaType"){state.stack.pop();state.stack[state.stack.length-1]="@media{"}else state.stack.push("rule");else if(type=="}"){state.stack.pop();if(context=="propertyValue")state.stack.pop()}else if(type=="@media")state.stack.push("@media");
313
else if(context=="@media"&&/\b(keyword|attribute)\b/.test(style))state.stack.push("@mediaType");else if(context=="@mediaType"&&stream.current()==",")state.stack.pop();else if(context=="@mediaType"&&type=="(")state.stack.push("@mediaType(");else if(context=="@mediaType("&&type==")")state.stack.pop();else if(context=="rule"&&type==":")state.stack.push("propertyValue");else if(context=="propertyValue"&&type==";")state.stack.pop();return style},indent:function(state,textAfter){var n=state.stack.length;
314
if(/^\}/.test(textAfter))n-=state.stack[state.stack.length-1]=="propertyValue"?2:1;return state.baseIndent+n*indentUnit},electricChars:"}"}});CodeMirror.defineMIME("text/css","css");CodeMirror.defineMode("javascript",function(config,parserConfig){var indentUnit=config.indentUnit;var jsonMode=parserConfig.json;var isTS=parserConfig.typescript;var keywords=function(){function kw(type){return{type:type,style:"keyword"}}var A=kw("keyword a"),B=kw("keyword b"),C=kw("keyword c");var operator=kw("operator"),atom={type:"atom",style:"atom"};var jsKeywords={"if":A,"while":A,"with":A,"else":B,"do":B,"try":B,"finally":B,"return":C,"break":C,"continue":C,"new":C,"delete":C,"throw":C,"var":kw("var"),
315
"const":kw("var"),"let":kw("var"),"function":kw("function"),"catch":kw("catch"),"for":kw("for"),"switch":kw("switch"),"case":kw("case"),"default":kw("default"),"in":operator,"typeof":operator,"instanceof":operator,"true":atom,"false":atom,"null":atom,"undefined":atom,"NaN":atom,"Infinity":atom};if(isTS){var type={type:"variable",style:"variable-3"};var tsKeywords={"interface":kw("interface"),"class":kw("class"),"extends":kw("extends"),"constructor":kw("constructor"),"public":kw("public"),"private":kw("private"),
316
"protected":kw("protected"),"static":kw("static"),"super":kw("super"),"string":type,"number":type,"bool":type,"any":type};for(var attr in tsKeywords)jsKeywords[attr]=tsKeywords[attr]}return jsKeywords}();var isOperatorChar=/[+\-*&%=<>!?|]/;function chain(stream,state,f){state.tokenize=f;return f(stream,state)}function nextUntilUnescaped(stream,end){var escaped=false,next;while((next=stream.next())!=null){if(next==end&&!escaped)return false;escaped=!escaped&&next=="\\"}return escaped}var type,content;
317
function ret(tp,style,cont){type=tp;content=cont;return style}function jsTokenBase(stream,state){var ch=stream.next();if(ch=='"'||ch=="'")return chain(stream,state,jsTokenString(ch));else if(/[\[\]{}\(\),;:\.]/.test(ch))return ret(ch);else if(ch=="0"&&stream.eat(/x/i)){stream.eatWhile(/[\da-f]/i);return ret("number","number")}else if(/\d/.test(ch)||ch=="-"&&stream.eat(/\d/)){stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);return ret("number","number")}else if(ch=="/")if(stream.eat("*"))return chain(stream,
318
state,jsTokenComment);else if(stream.eat("/")){stream.skipToEnd();return ret("comment","comment")}else if(state.lastType=="operator"||state.lastType=="keyword c"||/^[\[{}\(,;:]$/.test(state.lastType)){nextUntilUnescaped(stream,"/");stream.eatWhile(/[gimy]/);return ret("regexp","string-2")}else{stream.eatWhile(isOperatorChar);return ret("operator",null,stream.current())}else if(ch=="#"){stream.skipToEnd();return ret("error","error")}else if(isOperatorChar.test(ch)){stream.eatWhile(isOperatorChar);
319
return ret("operator",null,stream.current())}else{stream.eatWhile(/[\w\$_]/);var word=stream.current(),known=keywords.propertyIsEnumerable(word)&&keywords[word];return known&&state.lastType!="."?ret(known.type,known.style,word):ret("variable","variable",word)}}function jsTokenString(quote){return function(stream,state){if(!nextUntilUnescaped(stream,quote))state.tokenize=jsTokenBase;return ret("string","string")}}function jsTokenComment(stream,state){var maybeEnd=false,ch;while(ch=stream.next()){if(ch==
320
"/"&&maybeEnd){state.tokenize=jsTokenBase;break}maybeEnd=ch=="*"}return ret("comment","comment")}var atomicTypes={"atom":true,"number":true,"variable":true,"string":true,"regexp":true};function JSLexical(indented,column,type,align,prev,info){this.indented=indented;this.column=column;this.type=type;this.prev=prev;this.info=info;if(align!=null)this.align=align}function inScope(state,varname){for(var v=state.localVars;v;v=v.next)if(v.name==varname)return true}function parseJS(state,style,type,content,
321
stream){var cc=state.cc;cx.state=state;cx.stream=stream;cx.marked=null,cx.cc=cc;if(!state.lexical.hasOwnProperty("align"))state.lexical.align=true;while(true){var combinator=cc.length?cc.pop():jsonMode?expression:statement;if(combinator(type,content)){while(cc.length&&cc[cc.length-1].lex)cc.pop()();if(cx.marked)return cx.marked;if(type=="variable"&&inScope(state,content))return"variable-2";return style}}}var cx={state:null,column:null,marked:null,cc:null};function pass(){for(var i=arguments.length-
322
1;i>=0;i--)cx.cc.push(arguments[i])}function cont(){pass.apply(null,arguments);return true}function register(varname){function inList(list){for(var v=list;v;v=v.next)if(v.name==varname)return true;return false}var state=cx.state;if(state.context){cx.marked="def";if(inList(state.localVars))return;state.localVars={name:varname,next:state.localVars}}else{if(inList(state.globalVars))return;state.globalVars={name:varname,next:state.globalVars}}}var defaultVars={name:"this",next:{name:"arguments"}};function pushcontext(){cx.state.context=
323
{prev:cx.state.context,vars:cx.state.localVars};cx.state.localVars=defaultVars}function popcontext(){cx.state.localVars=cx.state.context.vars;cx.state.context=cx.state.context.prev}function pushlex(type,info){var result=function(){var state=cx.state;state.lexical=new JSLexical(state.indented,cx.stream.column(),type,null,state.lexical,info)};result.lex=true;return result}function poplex(){var state=cx.state;if(state.lexical.prev){if(state.lexical.type==")")state.indented=state.lexical.indented;state.lexical=
324
state.lexical.prev}}poplex.lex=true;function expect(wanted){return function expecting(type){if(type==wanted)return cont();else if(wanted==";")return pass();else return cont(arguments.callee)}}function statement(type){if(type=="var")return cont(pushlex("vardef"),vardef1,expect(";"),poplex);if(type=="keyword a")return cont(pushlex("form"),expression,statement,poplex);if(type=="keyword b")return cont(pushlex("form"),statement,poplex);if(type=="{")return cont(pushlex("}"),block,poplex);if(type==";")return cont();
325
if(type=="function")return cont(functiondef);if(type=="for")return cont(pushlex("form"),expect("("),pushlex(")"),forspec1,expect(")"),poplex,statement,poplex);if(type=="variable")return cont(pushlex("stat"),maybelabel);if(type=="switch")return cont(pushlex("form"),expression,pushlex("}","switch"),expect("{"),block,poplex,poplex);if(type=="case")return cont(expression,expect(":"));if(type=="default")return cont(expect(":"));if(type=="catch")return cont(pushlex("form"),pushcontext,expect("("),funarg,
326
expect(")"),statement,poplex,popcontext);return pass(pushlex("stat"),expression,expect(";"),poplex)}function expression(type){if(atomicTypes.hasOwnProperty(type))return cont(maybeoperator);if(type=="function")return cont(functiondef);if(type=="keyword c")return cont(maybeexpression);if(type=="(")return cont(pushlex(")"),maybeexpression,expect(")"),poplex,maybeoperator);if(type=="operator")return cont(expression);if(type=="[")return cont(pushlex("]"),commasep(expression,"]"),poplex,maybeoperator);
327
if(type=="{")return cont(pushlex("}"),commasep(objprop,"}"),poplex,maybeoperator);return cont()}function maybeexpression(type){if(type.match(/[;\}\)\],]/))return pass();return pass(expression)}function maybeoperator(type,value){if(type=="operator"&&/\+\+|--/.test(value))return cont(maybeoperator);if(type=="operator"&&value=="?")return cont(expression,expect(":"),expression);if(type==";")return;if(type=="(")return cont(pushlex(")"),commasep(expression,")"),poplex,maybeoperator);if(type==".")return cont(property,
328
maybeoperator);if(type=="[")return cont(pushlex("]"),expression,expect("]"),poplex,maybeoperator)}function maybelabel(type){if(type==":")return cont(poplex,statement);return pass(maybeoperator,expect(";"),poplex)}function property(type){if(type=="variable"){cx.marked="property";return cont()}}function objprop(type){if(type=="variable")cx.marked="property";if(atomicTypes.hasOwnProperty(type))return cont(expect(":"),expression)}function commasep(what,end){function proceed(type){if(type==",")return cont(what,
329
proceed);if(type==end)return cont();return cont(expect(end))}return function commaSeparated(type){if(type==end)return cont();else return pass(what,proceed)}}function block(type){if(type=="}")return cont();return pass(statement,block)}function maybetype(type){if(type==":")return cont(typedef);return pass()}function typedef(type){if(type=="variable"){cx.marked="variable-3";return cont()}return pass()}function vardef1(type,value){if(type=="variable"){register(value);return isTS?cont(maybetype,vardef2):
330
cont(vardef2)}return pass()}function vardef2(type,value){if(value=="=")return cont(expression,vardef2);if(type==",")return cont(vardef1)}function forspec1(type){if(type=="var")return cont(vardef1,expect(";"),forspec2);if(type==";")return cont(forspec2);if(type=="variable")return cont(formaybein);return cont(forspec2)}function formaybein(type,value){if(value=="in")return cont(expression);return cont(maybeoperator,forspec2)}function forspec2(type,value){if(type==";")return cont(forspec3);if(value==
331
"in")return cont(expression);return cont(expression,expect(";"),forspec3)}function forspec3(type){if(type!=")")cont(expression)}function functiondef(type,value){if(type=="variable"){register(value);return cont(functiondef)}if(type=="(")return cont(pushlex(")"),pushcontext,commasep(funarg,")"),poplex,statement,popcontext)}function funarg(type,value){if(type=="variable"){register(value);return isTS?cont(maybetype):cont()}}return{startState:function(basecolumn){return{tokenize:jsTokenBase,lastType:null,
332
cc:[],lexical:new JSLexical((basecolumn||0)-indentUnit,0,"block",false),localVars:parserConfig.localVars,globalVars:parserConfig.globalVars,context:parserConfig.localVars&&{vars:parserConfig.localVars},indented:0}},token:function(stream,state){if(stream.sol()){if(!state.lexical.hasOwnProperty("align"))state.lexical.align=false;state.indented=stream.indentation()}if(stream.eatSpace())return null;var style=state.tokenize(stream,state);if(type=="comment")return style;state.lastType=type;return parseJS(state,
333
style,type,content,stream)},indent:function(state,textAfter){if(state.tokenize==jsTokenComment)return CodeMirror.Pass;if(state.tokenize!=jsTokenBase)return 0;var firstChar=textAfter&&textAfter.charAt(0),lexical=state.lexical;if(lexical.type=="stat"&&firstChar=="}")lexical=lexical.prev;var type=lexical.type,closing=firstChar==type;if(type=="vardef")return lexical.indented+(state.lastType=="operator"||state.lastType==","?4:0);else if(type=="form"&&firstChar=="{")return lexical.indented;else if(type==
334
"form")return lexical.indented+indentUnit;else if(type=="stat")return lexical.indented+(state.lastType=="operator"||state.lastType==","?indentUnit:0);else if(lexical.info=="switch"&&!closing)return lexical.indented+(/^(?:case|default)\b/.test(textAfter)?indentUnit:2*indentUnit);else if(lexical.align)return lexical.column+(closing?0:1);else return lexical.indented+(closing?0:indentUnit)},electricChars:":{}",jsonMode:jsonMode}});CodeMirror.defineMIME("text/javascript","javascript");
335
CodeMirror.defineMIME("text/ecmascript","javascript");CodeMirror.defineMIME("application/javascript","javascript");CodeMirror.defineMIME("application/ecmascript","javascript");CodeMirror.defineMIME("application/json",{name:"javascript",json:true});CodeMirror.defineMIME("text/typescript",{name:"javascript",typescript:true});CodeMirror.defineMIME("application/typescript",{name:"javascript",typescript:true});CodeMirror.defineMode("htmlmixed",function(config){var htmlMode=CodeMirror.getMode(config,{name:"xml",htmlMode:true});var jsMode=CodeMirror.getMode(config,"javascript");var cssMode=CodeMirror.getMode(config,"css");function html(stream,state){var style=htmlMode.token(stream,state.htmlState);if(/(?:^|\s)tag(?:\s|$)/.test(style)&&stream.current()==">"&&state.htmlState.context)if(/^script$/i.test(state.htmlState.context.tagName)){state.token=javascript;state.localState=jsMode.startState(htmlMode.indent(state.htmlState,
336
""))}else if(/^style$/i.test(state.htmlState.context.tagName)){state.token=css;state.localState=cssMode.startState(htmlMode.indent(state.htmlState,""))}return style}function maybeBackup(stream,pat,style){var cur=stream.current();var close=cur.search(pat),m;if(close>-1)stream.backUp(cur.length-close);else if(m=cur.match(/<\/?$/)){stream.backUp(cur.length);if(!stream.match(pat,false))stream.match(cur[0])}return style}function javascript(stream,state){if(stream.match(/^<\/\s*script\s*>/i,false)){state.token=
337
html;state.localState=null;return html(stream,state)}return maybeBackup(stream,/<\/\s*script\s*>/,jsMode.token(stream,state.localState))}function css(stream,state){if(stream.match(/^<\/\s*style\s*>/i,false)){state.token=html;state.localState=null;return html(stream,state)}return maybeBackup(stream,/<\/\s*style\s*>/,cssMode.token(stream,state.localState))}return{startState:function(){var state=htmlMode.startState();return{token:html,localState:null,mode:"html",htmlState:state}},copyState:function(state){if(state.localState)var local=
338
CodeMirror.copyState(state.token==css?cssMode:jsMode,state.localState);return{token:state.token,localState:local,mode:state.mode,htmlState:CodeMirror.copyState(htmlMode,state.htmlState)}},token:function(stream,state){return state.token(stream,state)},indent:function(state,textAfter){if(state.token==html||/^\s*<\//.test(textAfter))return htmlMode.indent(state.htmlState,textAfter);else if(state.token==javascript)return jsMode.indent(state.localState,textAfter);else return cssMode.indent(state.localState,
339
textAfter)},electricChars:"/{}:",innerMode:function(state){var mode=state.token==html?htmlMode:state.token==javascript?jsMode:cssMode;return{state:state.localState||state.htmlState,mode:mode}}}},"xml","javascript","css");CodeMirror.defineMIME("text/html","htmlmixed");
340