function dependentSnippet(n,t,i){this.Code=t;this.Name=n;this.Type=i}function dependentSnippetIdRef(n,t){this.id=n;this.Type=t}function snippetCompiler(n,t,i,r,u,f,e,o,s,h,c,l,a){this.myCodeMirror;this.ctnr;this.pntrElem;this.typeName;this.saveOnSuccess;this.initialize=function(){var u,f;this.dependentSnippets=[];this.dependentSnippetIdRefs=[];this.contentChanged;u=this;this.ctnr=$("#"+n);f=this.ctnr.find(".ceTextArea").get(0);this.myCodeMirror=CodeMirror.fromTextArea(f,{lineNumbers:!0,gutters:["gutter"],matchBrackets:!0,mode:"text/x-csharp"});this.myCodeMirror.getDoc().setValue(r);this.myCodeMirror.on("change",function(n,t){u.onContentChange(u,n,t)});t&&this.ctnr.find(".outputTab").addClass("hidden");this.pntrElem=document.createElement("img");this.pntrElem.src=e;this.pntrElem.width=8;o&&this.ctnr.find(".chkReleaseMode").prop("checked",!0);s&&this.ctnr.find(".chkUseRoslyn").prop("checked",!0);t&&this.ctnr.find(".btnCompile").html("Compile");h?t?this.ctnr.find(".btnSave").click(function(){u.compile(!0)}):this.ctnr.find(".btnSave").click(function(){u.save()}):this.ctnr.find(".btnSave").addClass("hidden");this.ctnr.find(".btnCompile").click(function(){u.compile()});this.ctnr.find(".errorSummary").click(function(){u.showTab("errorsTab")});t&&this.ctnr.find('[href="#outputTab"]').closest("li").hide();t&&this.ctnr.find(".compilerOptionsText").addClass("hidden");this.typeName=i;this.saveOnSuccess=!1;this.ctnr.find("a.buildStatusTab").attr("href","#"+n+"buildStatusTab");this.ctnr.find("a.errorsTab").attr("href","#"+n+"errorsTab");this.ctnr.find("a.warningsTab").attr("href","#"+n+"warningsTab");this.ctnr.find("a.outputTab").attr("href","#"+n+"outputTab");this.ctnr.find("div.buildStatusTab").attr("id",n+"buildStatusTab");this.ctnr.find("div.errorsTab").attr("id",n+"errorsTab");this.ctnr.find("div.warningsTab").attr("id",n+"warningsTab");this.ctnr.find("div.outputTab").attr("id",n+"outputTab")};this.onContentChange=function(n){n.contentChanged!=null&&n.contentChanged(n.getSnippet())};this.compileSync=function(n){return this.compile(n,null,null,!0)};this.getSnippet=function(){return this.myCodeMirror.getValue()};this.compile=function(n,i,r,u){var e=!1,o=!1,s,f;if(this.ctnr.find(".chkReleaseMode").is(":checked")==!0&&(e=!0),this.ctnr.find(".chkUseRoslyn").is(":checked")==!0&&(o=!0),s=this,f={snippet:this.myCodeMirror.getValue(),releaseMode:e,useRoslyn:o,typeName:this.typeName,saveOnSuccess:n,snippetType:c,ownerId:l,id:a,compileOnly:t,dependentSnippets:this.dependentSnippets,dependentSnippetIdRefs:this.dependentSnippetIdRefs},this.busyStart(),u==!0)return this.callSync(f);this.callAsync(f,i,r)};this.callAsync=function(n,t,i){var r=this;$.ajax({type:"POST",url:u,contentType:"application/json",data:JSON.stringify(n),error:function(n){r.unexpected(n);i!=null&&i(n)},success:function(n){r.compileSuccess(n);t!=null&&t(n)}})};this.callSync=function(n){me=this;var t;return $.ajax({type:"POST",url:u,contentType:"application/json",data:JSON.stringify(n),error:function(n){me.unexpected(n);t=n},success:function(n){me.compileSuccess(n);t=n},async:!1}),t};this.lastSavedId=0;this.save=function(){var n=this,t=this.myCodeMirror.getValue(),i=t.split("\n").length;$.ajax({type:"POST",url:f,dataType:"json",data:{snippet:t,lastSavedId:this.lastSavedId},error:function(t){n.unexpected(t)},success:function(t){n.saveSuccess(t,i);n.lastSavedId=t}})};this.saveSuccess=function(n,t){var i=170+t*14,r,u;i>500&&(i=500);this.lastSavedId=n;r="http://volatileread.com/utilitylibrary/snippetcompiler?id="+n;u="#SNIPCOMP#"+n+"#H"+i+"#R"+(o?1:0)+(s?"#V6":"");this.ctnr.find(".permLink").html(r+"
Embed Key: "+u);this.ctnr.find(".permLinkSec").removeClass("hidden")};this.unexpected=function(){this.busyEnd();this.ctnr.find(".buildStatus").html("OOPS.. An unexpected error has occured. Please try again")};this.busyStart=function(){this.clear();this.ctnr.find(".tab-content").addClass("busyPanel");this.ctnr.find(".btnCompile").attr("disabled","disabled")};this.busyEnd=function(){this.ctnr.find(".tab-content").removeClass("busyPanel");this.ctnr.find(".btnCompile").removeAttr("disabled")};this.clear=function(){this.ctnr.find(".buildErrList").html("");this.ctnr.find(".warnList").html("");this.ctnr.find(".output").html("");this.ctnr.find(".buildSummary").html("");this.ctnr.find(".errorSummary").html("")};this.compileSuccess=function(n){var i,e;this.busyEnd();var r="",u="",f="",o=this.ctnr.find(".buildErrList"),s=this.ctnr.find(".warnList"),h=this.ctnr.find(".output");for(i=0;i"+n.SandboxerErrors[i].Message+"";if(n.Errors.length>0){for(i=0;i"+n.Errors[i].Message+"";this.ctnr.find(".errorSummary").html(n.Errors.length+(n.Errors.length==1?" Error":" Errors"));this.ctnr.find(".buildSummary").html("Build Failed. Please correct the errors and try again");this.showTab("errorsTab")}else this.ctnr.find(".buildSummary").html("Compilation Succeded!"),this.ctnr.find(".errorSummary").html("0 Errors"),n.SandboxerErrors.length==0?t?this.showTab("buildStatusTab"):this.showTab("outputTab"):this.showTab("errorsTab");for(i=0;i"+n.Warnings[i].Message+"";for(i=0;i"+n.Output[i].Message+"";o.html(r);s.html(u);h.html(f);e=this;this.ctnr.find(".errItem, .warnItem").click(function(){e.setGutter($(this).attr("l"),$(this).attr("c"))})};this.createMarker=function(){return this.pntrElem};this.showTab=function(t){var i=n+t;this.ctnr.find("[href=#"+i+"]").tab("show")};this.setGutter=function(n){this.myCodeMirror.focus();this.myCodeMirror.setCursor(n-1,0);this.myCodeMirror.setGutterMarker(n-1,"gutter",this.createMarker())}}(function(n){if(typeof exports=="object"&&typeof module=="object")module.exports=n();else{if(typeof define=="function"&&define.amd)return define([],n);this.CodeMirror=n()}})(function(){"use strict";function t(n,i){var r,e,u,f;if(!(this instanceof t))return new t(n,i);this.options=i=i?gr(i):{};gr(fv,i,!1);go(i);r=i.value;typeof r=="string"&&(r=new tt(r,i.mode));this.doc=r;e=this.display=new dp(n,r);e.wrapper.CodeMirror=this;kc(this);bc(this);i.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap");i.autofocus&&!vo&&it(this);this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new kh};s&&h<11&&setTimeout(kt(lt,this,!0),20);ob(this);ed();gi(this);this.curOp.forceUpdate=!0;ly(this,r);i.autofocus&&!vo||vi()==e.input?setTimeout(kt(th,this),20):ye(this);for(u in ir)ir.hasOwnProperty(u)&&ir[u](this,i[u],fh);for(gc(this),f=0;ft.maxLineLength&&(t.maxLineLength=i,t.maxLine=n)})}function go(n){var t=k(n.gutters,"CodeMirror-linenumbers");t==-1&&n.lineNumbers?n.gutters=n.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!n.lineNumbers&&(n.gutters=n.gutters.slice(0),n.gutters.splice(t,1))}function dc(n){return n.display.scroller.clientHeight-n.display.wrapper.clientHeightt.clientWidth;u&&t.scrollWidth<=t.clientWidth+1&&r>0&&!t.hScrollbarTakesSpace&&(u=!1);f=s>t.clientHeight;f?(i.scrollbarV.style.display="block",i.scrollbarV.style.bottom=u?r+"px":"0",i.scrollbarV.firstChild.style.height=Math.max(0,s-t.clientHeight+(t.barHeight||i.scrollbarV.clientHeight))+"px"):(i.scrollbarV.style.display="",i.scrollbarV.firstChild.style.height="0");u?(i.scrollbarH.style.display="block",i.scrollbarH.style.right=f?r+"px":"0",i.scrollbarH.firstChild.style.width=t.scrollWidth-t.clientWidth+(t.barWidth||i.scrollbarH.clientWidth)+"px"):(i.scrollbarH.style.display="",i.scrollbarH.firstChild.style.width="0");u&&f?(i.scrollbarFiller.style.display="block",i.scrollbarFiller.style.height=i.scrollbarFiller.style.width=r+"px"):i.scrollbarFiller.style.display="";u&&n.options.coverGutterNextToScrollbar&&n.options.fixedGutter?(i.gutterFiller.style.display="block",i.gutterFiller.style.height=r+"px",i.gutterFiller.style.width=i.gutters.offsetWidth+"px"):i.gutterFiller.style.display="";!n.state.checkedOverlayScrollbar&&t.clientHeight>0&&(r===0&&(h=ot&&!wp?"12px":"18px",i.scrollbarV.style.minWidth=i.scrollbarH.style.minHeight=h,o=function(t){hf(t)!=i.scrollbarV&&hf(t)!=i.scrollbarH&&v(n,ha)(t)},e(i.scrollbarV,"mousedown",o),e(i.scrollbarH,"mousedown",o)),n.state.checkedOverlayScrollbar=!0)}function ns(n,t,i){var u=i&&i.top!=null?Math.max(0,i.top):n.scroller.scrollTop,f,e;u=Math.floor(u-re(n));var h=i&&i.bottom!=null?i.bottom:u+n.wrapper.clientHeight,o=fr(t,u),s=fr(t,h);if(i&&i.ensure){if(f=i.ensure.from.line,e=i.ensure.to.line,f=s)return{from:fr(t,ii(r(t,e))-n.wrapper.clientHeight),to:e}}return{from:o,to:Math.max(s,o+1)}}function ts(n){var t=n.display,r=t.view,i,u,f;if(t.alignWidgets||t.gutters.firstChild&&n.options.fixedGutter){var e=rs(t)-t.scroller.scrollLeft+n.doc.scrollLeft,s=t.gutters.offsetWidth,o=e+"px";for(i=0;i=i.viewFrom&&t.visible.to<=i.viewTo&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo)&&sa(n)==0)return!1;gc(n)&&(oi(n),t.dims=ss(n));var c=o.first+o.size,u=Math.max(t.visible.from-n.options.viewportMargin,o.first),f=Math.min(c,t.visible.to+n.options.viewportMargin);return(i.viewFromf&&i.viewTo-f<20&&(f=Math.min(c,i.viewTo)),fi&&(u=hh(n.doc,u),f=bv(n.doc,f)),h=u!=i.viewFrom||f!=i.viewTo||i.lastSizeC!=t.wrapperHeight,eb(n,u,f),i.viewOffset=ii(r(n.doc,i.viewFrom)),n.display.mover.style.top=i.viewOffset+"px",s=sa(n),!h&&s==0&&!t.force&&(i.updateLineNumbers==null||i.updateLineNumbers>=i.viewTo))?!1:(e=vi(),s>4&&(i.lineDiv.style.display="none"),tw(n,i.updateLineNumbers,t.dims),s>4&&(i.lineDiv.style.display=""),e&&vi()!=e&&e.offsetHeight&&e.focus(),er(i.cursorDiv),er(i.selectionDiv),h&&(i.lastSizeC=t.wrapperHeight,su(n,400)),i.updateLineNumbers=null,!0)}function tl(n,t){for(var f=t.force,i=t.viewport,u,r=!0;;r=!1){if(r&&n.options.lineWrapping&&t.oldScrollerWidth!=n.display.scroller.clientWidth)f=!0;else if(f=!1,i&&i.top!=null&&(i={top:Math.min(n.doc.height+ys(n.display)-bt-n.display.scroller.clientHeight,i.top)}),t.visible=ns(n.display,n.doc,i),t.visible.from>=n.display.viewFrom&&t.visible.to<=n.display.viewTo)break;if(!us(n,t))break;os(n);u=kf(n);ou(n);es(n,u);pi(n,u)}b(n,"update",n);(n.display.viewFrom!=t.oldViewFrom||n.display.viewTo!=t.oldViewTo)&&b(n,"viewportChange",n,n.display.viewFrom,n.display.viewTo)}function fs(n,t){var r=new nl(n,t),i;us(n,r)&&(os(n),tl(n,r),i=kf(n),ou(n),es(n,i),pi(n,i))}function es(n,t){n.display.sizer.style.minHeight=n.display.heightForcer.style.top=t.docHeight+"px";n.display.gutters.style.height=Math.max(t.docHeight,t.clientHeight-bt)+"px"}function nw(n,t){n.display.sizer.offsetWidth+n.display.gutters.offsetWidth.001||c-1&&(s=!1),rl(n,r,f,i));s&&(er(r.lineNumber),r.lineNumber.appendChild(document.createTextNode(is(n.options,f))));u=r.node.nextSibling}else a=fw(n,r,f,i),h.insertBefore(a,u);f+=r.size}while(u)u=c(u)}function rl(n,t,i,r){for(var u,f=0;f=0){var f=as(r.from(),u.from()),e=ls(r.to(),u.to()),s=r.empty()?u.from()==u.head:r.from()==r.head;i<=t&&--t;n.splice(--i,2,new c(s?e:f,s?f:e))}return new dt(n,t)}function wi(n,t){return new dt([new c(n,t||n)],0)}function sl(n,t){return Math.max(n.first,Math.min(t,n.first+n.size-1))}function u(t,i){if(i.lineu?n(u,r(t,u).text.length):ow(i,r(t,i.line).text.length)}function ow(t,i){var r=t.ch;return r==null||r>i?n(t.line,i):r<0?n(t.line,0):t}function fu(n,t){return t>=n.first&&t=h.ch:c.to>h.ch))){if(e&&(y(l,"beforeCursorEnter"),l.explicitlyCleared))if(a.markedSpans){--v;continue}else break;if(!l.atomic)continue;if(s=l.find(p<0?-1:1),o(s,h)==0&&(s.ch+=p,s.ch<0?s=s.line>t.first?u(t,n(s.line-1)):null:s.ch>a.text.length&&(s=s.line3&&(o(a,r.top,null,r.bottom),a=h,r.bottoms.bottom||c.bottom==s.bottom&&c.right>s.right)&&(s=c);a0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(i=!i)?"":"hidden"},n.options.cursorBlinkRate):n.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden"))}function su(n,t){n.doc.mode.startState&&n.doc.frontier=n.display.viewTo)){var u=+new Date+n.options.workTime,i=pr(t.mode,hu(n,t.frontier)),r=[];t.iter(t.frontier,Math.min(t.first+t.size,n.display.viewTo+500),function(f){var s,l,o,e,c,h;if(t.frontier>=n.display.viewFrom){for(s=f.styles,l=ty(n,f,i,!0),f.styles=l.styles,o=f.styleClasses,e=l.classes,e?f.styleClasses=e:o&&(f.styleClasses=null),c=!s||s.length!=f.styles.length||o!=e&&(!o||!e||o.bgClass!=e.bgClass||o.textClass!=e.textClass),h=0;!c&&hu?(su(n,n.options.workDelay),!0):void 0});r.length&&ei(n,function(){for(var t=0;tc;--u){if(u<=f.first)return f.first;if(o=r(f,u-1),o.stateAfter&&(!i||u<=f.frontier))return u;s=ft(o.text,null,n.options.tabSize);(e==null||h>s)&&(e=u-1,h=s)}return e}function hu(n,t,i){var f=n.doc,o=n.display,u,e;return f.mode.startState?(u=vw(n,t,i),e=u>f.first&&r(f,u-1).stateAfter,e=e?pr(f.mode,e):ev(f.mode),f.iter(u,t,function(i){ah(n,i.text,e);var r=u==t-1||u%5==0||u>=o.viewFrom&&u2&&e.push((o.bottom+s.top)/2-i.top);e.push(i.bottom-i.top)}}function pw(n,t,i){var r;if(n.line==t)return{map:n.measure.map,cache:n.measure.cache};for(r=0;ri)return{map:n.measure.maps[r],cache:n.measure.caches[r],before:!0}}function ww(n,t){var r,i,u;return t=vt(t),r=a(t),i=n.display.externalMeasured=new oa(n.doc,t,r),i.lineN=r,u=i.built=ey(n,i),i.text=u.pre,ht(n.display.lineMeasure,u.pre),i}function kl(n,t,i,r){return gl(n,ps(n,t),i,r)}function dl(n,t){if(t>=n.display.viewFrom&&t=i.lineN&&ti)&&(l=y-a,e=l-1,i>=y&&(v="right")),e!=null){if(c=o[u+2],a==y&&r==(c.insertLeft?"left":"right")&&(v=r),r=="left"&&e==0)while(u&&o[u-2]==o[u-3]&&o[u-1].insertLeft)c=o[(u-=3)+2],v="left";if(r=="right"&&e==y-a)while(u0&&(v=r="right"),f=n.options.lineWrapping&&(p=c.getClientRects()).length>1?p[r=="right"?p.length-1:0]:c.getBoundingClientRect();s&&h<9&&!e&&(!f||!f.left&&!f.right)&&(w=c.parentNode.getClientRects()[0],f=w?{left:w.left,right:w.left+lu(n.display),top:w.top,bottom:w.bottom}:ue);var d=f.top-t.rect.top,g=f.bottom-t.rect.top,nt=(d+g)/2,b=t.view.measure.heights;for(u=0;ui.from)?h(n-1):h(n,r)}var o,s,a,c;return(u=u||r(n.doc,t.line),f||(f=ps(n,u)),o=pt(u),s=t.ch,!o)?h(s):(a=oc(o,s),c=l(s,a),wf!=null&&(c.other=l(s,wf)),c)}function fa(n,t){var i=0,t=u(n.doc,t),f,e;return n.options.lineWrapping||(i=lu(n.display)*t.ch),f=r(n.doc,t.line),e=ii(f)+re(n.display),{left:i,right:i,top:e,bottom:e+f.height}}function fe(t,i,r,u){var f=n(t,i);return f.xRel=u,r&&(f.outside=!0),f}function ks(n,t,i){var u=n.doc,f,s,e;if(i+=n.display.viewOffset,i<0)return fe(u.first,0,!0,-1);if(f=fr(u,i),s=u.first+u.size-1,f>s)return fe(u.first+u.size-1,r(u,s).text.length,!0,1);for(t<0&&(t=0),e=r(u,f);;){var o=dw(n,e,f,t,i),h=tf(e),c=h&&h.find(0,!0);if(h&&(o.ch>c.from.ch||o.ch==c.from.ch&&o.xRel>0))f=a(e=c.to.line);else return o}}function dw(t,i,r,u,f){function p(u){var f=gt(t,n(r,u),"line",i,rt);return(h=!0,g>f.bottom)?f.left-nt:gl)return fe(r,o,b,1);for(;;){if(tt?o==e||o==hc(i,e,1):o-e<=1){for(c=u1?1:0)}if(a=Math.ceil(w/2),s=e+a,tt)for(s=e,d=0;du?(o=s,l=y,(b=h)&&(l+=1e3),w=a):(e=s,v=y,it=h,w-=a)}}function ki(n){var r,t;if(n.cachedTextHeight!=null)return n.cachedTextHeight;if(bi==null){for(bi=i("pre"),r=0;r<49;++r)bi.appendChild(document.createTextNode("x")),bi.appendChild(i("br"));bi.appendChild(document.createTextNode("x"))}return ht(n.measure,bi),t=bi.offsetHeight/50,t>3&&(n.cachedTextHeight=t),er(n.measure),t||1}function lu(n){var r,f,u,t;return n.cachedCharWidth!=null?n.cachedCharWidth:(r=i("span","xxxxxxxxxx"),f=i("pre",[r]),ht(n.measure,f),u=r.getBoundingClientRect(),t=(u.right-u.left)/10,t>2&&(n.cachedCharWidth=t),t||10)}function gi(n){n.curOp={cm:n,viewChanged:!1,startHeight:n.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++ea};di?di.ops.push(n.curOp):n.curOp.ownsGroup=di={ops:[n.curOp],delayedCallbacks:[]}}function gw(n){var u=n.delayedCallbacks,i=0,r,t;do{for(;i=i.viewTo)||i.maxLineChanged&&t.options.lineWrapping;n.update=n.mustUpdate&&new nl(t,n.mustUpdate&&{top:n.scrollTop,ensure:n.scrollToPos},n.forceUpdate)}function ib(n){n.updatedDisplay=n.mustUpdate&&us(n.cm,n.update)}function rb(n){var t=n.cm,i=t.display;n.updatedDisplay&&os(t);n.barMeasure=kf(t);i.maxLineChanged&&!t.options.lineWrapping&&(n.adjustWidthTo=kl(t,i.maxLine,i.maxLine.text.length).left+3,n.maxScrollLeft=Math.max(0,i.sizer.offsetLeft+n.adjustWidthTo+bt-i.scroller.clientWidth));(n.updatedDisplay||n.selectionChanged)&&(n.newSelectionNodes=pl(t))}function ub(n){var t=n.cm;n.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=n.adjustWidthTo+"px",n.maxScrollLeft1&&pi(t),n.updatedDisplay&&tl(t,n.update),i.wheelStartX!=null&&(n.scrollTop!=null||n.scrollLeft!=null||n.scrollToPos)&&(i.wheelStartX=i.wheelStartY=null),n.scrollTop!=null&&(i.scroller.scrollTop!=n.scrollTop||n.forceScroll)&&(s=Math.max(0,Math.min(i.scroller.scrollHeight-i.scroller.clientHeight,n.scrollTop)),i.scroller.scrollTop=i.scrollbarV.scrollTop=f.scrollTop=s),n.scrollLeft!=null&&(i.scroller.scrollLeft!=n.scrollLeft||n.forceScroll)&&(h=Math.max(0,Math.min(i.scroller.scrollWidth-i.scroller.clientWidth,n.scrollLeft)),i.scroller.scrollLeft=i.scrollbarH.scrollLeft=f.scrollLeft=h,ts(t)),n.scrollToPos&&(c=gb(t,u(f,n.scrollToPos.from),u(f,n.scrollToPos.to),n.scrollToPos.margin),n.scrollToPos.isCursor&&t.state.focused&&db(t,c)),e=n.maybeHiddenMarkers,o=n.maybeUnhiddenMarkers,e)for(r=0;rn.barMeasure.clientWidth&&n.barMeasure.scrollWidtht)&&(u.updateLineNumbers=t);n.curOp.viewChanged=!0;t>=u.viewTo?fi&&hh(n.doc,t)u.viewFrom?oi(n):(u.viewFrom+=r,u.viewTo+=r):t<=u.viewFrom&&i>=u.viewTo?oi(n):t<=u.viewFrom?(f=oe(n,i,i+r,1),f?(u.view=u.view.slice(f.index),u.viewFrom=f.lineN,u.viewTo+=r):oi(n)):i>=u.viewTo?(f=oe(n,t,t,-1),f?(u.view=u.view.slice(0,f.index),u.viewTo=f.lineN):oi(n)):(o=oe(n,t,t,-1),s=oe(n,i,i+r,1),o&&s?(u.view=u.view.slice(0,o.index).concat(ee(n,o.lineN,s.lineN)).concat(u.view.slice(s.index)),u.viewTo+=r):oi(n));e=u.externalMeasured;e&&(i=u.lineN&&t=r.viewTo)||(f=r.view[au(n,t)],f.node!=null)&&(e=f.changes||(f.changes=[]),k(e,i)==-1&&e.push(i))}function oi(n){n.display.viewFrom=n.display.viewTo=n.doc.first;n.display.view=[];n.display.viewOffset=0}function au(n,t){var r,i;if(t>=n.display.viewTo||(t-=n.display.viewFrom,t<0))return null;for(r=n.display.view,i=0;i0){if(u==f.length-1)return null;o=e+f[u].size-t;u++}else o=e-t;t+=o;i+=o}while(hh(n.doc,i)!=i){if(u==(r<0?0:f.length-1))return null;i+=r*f[u-(r<0?1:0)].size;u+=r}return{index:u,lineN:i}}function eb(n,t,i){var r=n.display,u=r.view;u.length==0||t>=r.viewTo||i<=r.viewFrom?(r.view=ee(n,t,i),r.viewFrom=t):(r.viewFrom>t?r.view=ee(n,t,r.viewFrom).concat(r.view):r.viewFromi&&(r.view=r.view.slice(0,au(n,i))));r.viewTo=i}function sa(n){for(var r=n.display.view,u=0,i,t=0;t=9&&t.display.inputHasSelection===i||ot&&/[\uf700-\uf7ff]/.test(i))return lt(t),!1;for(it=!t.curOp,it&&gi(t),t.display.shift=!1,i.charCodeAt(0)!=8203||u.sel!=t.display.selForContextMenu||f||(f=""),e=0,rt=Math.min(f.length,i.length);e