/ * *
* simplemde v1 . 8.1
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
* /
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ; else { var t ; t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , t . SimpleMDE = e ( ) } } ( function ( ) { var e ; return function t ( e , n , r ) { function i ( l , a ) { if ( ! n [ l ] ) { if ( ! e [ l ] ) { var s = "function" == typeof require && require ; if ( ! a && s ) return s ( l , ! 0 ) ; if ( o ) return o ( l , ! 0 ) ; var c = new Error ( "Cannot find module '" + l + "'" ) ; throw c . code = "MODULE_NOT_FOUND" , c } var u = n [ l ] = { exports : { } } ; e [ l ] [ 0 ] . call ( u . exports , function ( t ) { var n = e [ l ] [ 1 ] [ t ] ; return i ( n ? n : t ) } , u , u . exports , t , e , n , r ) } return n [ l ] . exports } for ( var o = "function" == typeof require && require , l = 0 ; l < r . length ; l ++ ) i ( r [ l ] ) ; return i } ( { 1 : [ function ( e , t , n ) { ( function ( n ) { Typo = n . Typo = e ( "/Users/wescossick/Documents/Websites/simplemde-markdown-editor/node_modules/codemirror-spell-checker/src/js/typo.js" ) , CodeMirror = n . CodeMirror = e ( "codemirror" ) ; ( function ( e , t , n ) { var r , i = 0 , o = ! 1 , l = ! 1 , a = "" , s = "" ; CodeMirror . defineMode ( "spell-checker" , function ( e , t ) { if ( ! o ) { o = ! 0 ; var n = new XMLHttpRequest ; n . open ( "GET" , "https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff" , ! 0 ) , n . onload = function ( e ) { 4 === n . readyState && 200 === n . status && ( a = n . responseText , i ++ , 2 == i && ( r = new Typo ( "en_US" , a , s , { platform : "any" } ) ) ) } , n . send ( null ) } if ( ! l ) { l = ! 0 ; var c = new XMLHttpRequest ; c . open ( "GET" , "https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic" , ! 0 ) , c . onload = function ( e ) { 4 === c . readyState && 200 === c . status && ( s = c . responseText , i ++ , 2 == i && ( r = new Typo ( "en_US" , a , s , { platform : "any" } ) ) ) } , c . send ( null ) } var u = '!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~ ' , d = { token : function ( e , t ) { var n = e . peek ( ) , i = "" ; if ( u . includes ( n ) ) return e . next ( ) , null ; for ( ; null != ( n = e . peek ( ) ) && ! u . includes ( n ) ; ) i += n , e . next ( ) ; return r && ! r . check ( i ) ? "spell-error" : null } } , h = CodeMirror . getMode ( e , e . backdrop || "text/plain" ) ; return CodeMirror . overlayMode ( h , d , ! 0 ) } ) , String . prototype . includes || ( String . prototype . includes = function ( ) { "use strict" ; return - 1 !== String . prototype . indexOf . apply ( this , arguments ) } ) } ) . call ( n , t , void 0 , void 0 ) } ) . call ( this , "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } ) } , { "/Users/wescossick/Documents/Websites/simplemde-markdown-editor/node_modules/codemirror-spell-checker/src/js/typo.js" : 2 , codemirror : 6 } ] , 2 : [ function ( e , t , n ) { ( function ( e ) { ( function ( e , t , n , r , i ) { "use strict" ; var o = function ( e , t , n , r ) { if ( r = r || { } , this . platform = r . platform || "chrome" , this . dictionary = null , this . rules = { } , this . dictionaryTable = { } , this . compoundRules = [ ] , this . compoundRuleCodes = { } , this . replacementTable = [ ] , this . flags = r . flags || { } , e ) { if ( this . dictionary = e , "chrome" == this . platform ) t || ( t = this . _readFile ( chrome . extension . getURL ( "lib/typo/dictionaries/" + e + "/" + e + ".aff" ) ) ) , n || ( n = this . _readFile ( chrome . extension . getURL ( "lib/typo/dictionaries/" + e + "/" + e + ".dic" ) ) ) ; else { var i = r . dictionaryPath || "" ; t || ( t = this . _readFile ( i + "/" + e + "/" + e + ".aff" ) ) , n || ( n = this . _readFile ( i + "/" + e + "/" + e + ".dic" ) ) } this . rules = this . _parseAFF ( t ) , this . compoundRuleCodes = { } ; for ( var o = 0 , l = this . compoundRules . length ; l > o ; o ++ ) for ( var a = this . compoundRules [ o ] , s = 0 , c = a . length ; c > s ; s ++ ) this . compoundRuleCodes [ a [ s ] ] = [ ] ; "ONLYINCOMPOUND" in this . flags && ( this . compoundRuleCodes [ this . flags . ONLYINCOMPOUND ] = [ ] ) , this . dictionaryTable = this . _parseDIC ( n ) ; for ( var o in this . compoundRuleCodes ) 0 == this . compoundRuleCodes [ o ] . length && delete this . compoundRuleCodes [ o ] ; for ( var o = 0 , l = this . compoundRules . length ; l > o ; o ++ ) { for ( var u = this . compoundRules [ o ] , d = "" , s = 0 , c = u . length ; c > s ; s ++ ) { var h = u [ s ] ; d += h in this . compoundRuleCodes ? "(" + this . compoundRuleCodes [ h ] . join ( "|" ) + ")" : h } this . compoundRules [ o ] = new RegExp ( d , "i" ) } } return this } ; o . prototype = { load : function ( e ) { for ( var t in e ) this [ t ] = e [ t ] ; return this } , _readFile : function ( e , t ) { t || ( t = "ISO8859-1" ) ; var n = new XMLHttpRequest ; return n . open ( "GET" , e , ! 1 ) , n . overrideMimeType && n . overrideMimeType ( "text/plain; charset=" + t ) , n . send ( null ) , n . responseText } , _parseAFF : function ( e ) { var t = { } ; e = this . _removeAffixComments ( e ) ; for ( var n = e . split ( "\n" ) , r = 0 , i = n . length ; i > r ; r ++ ) { var o = n [ r ] , l = o . split ( /\s+/ ) , a = l [ 0 ] ; if ( "PFX" == a || "SFX" == a ) { for ( var s = l [ 1 ] , c = l [ 2 ] , u = parseInt ( l [ 3 ] , 10 ) , d = [ ] , h = r + 1 , f = r + 1 + u
for ( var i = 0 ; i < e . display . view . length ; i ++ ) { var o = e . display . view [ i ] ; if ( o . node == r ) return ce ( o , t , n ) } } function ce ( e , t , n ) { function r ( t , n , r ) { for ( var i = - 1 ; i < ( u ? u . length : 0 ) ; i ++ ) for ( var o = 0 > i ? c . map : u [ i ] , l = 0 ; l < o . length ; l += 3 ) { var a = o [ l + 2 ] ; if ( a == t || a == n ) { var s = ei ( 0 > i ? e . line : e . rest [ i ] ) , d = o [ l ] + r ; return ( 0 > r || a != t ) && ( d = o [ l + ( r ? 1 : 0 ) ] ) , Po ( s , d ) } } } var i = e . text . firstChild , o = ! 1 ; if ( ! t || ! $l ( i , t ) ) return ae ( Po ( ei ( e . line ) , 0 ) , ! 0 ) ; if ( t == i && ( o = ! 0 , t = i . childNodes [ n ] , n = 0 , ! t ) ) { var l = e . rest ? Wi ( e . rest ) : e . line ; return ae ( Po ( ei ( l ) , l . text . length ) , o ) } var a = 3 == t . nodeType ? t : null , s = t ; for ( a || 1 != t . childNodes . length || 3 != t . firstChild . nodeType || ( a = t . firstChild , n && ( n = a . nodeValue . length ) ) ; s . parentNode != i ; ) s = s . parentNode ; var c = e . measure , u = c . maps , d = r ( a , s , n ) ; if ( d ) return ae ( d , o ) ; for ( var h = s . nextSibling , f = a ? a . nodeValue . length - n : 0 ; h ; h = h . nextSibling ) { if ( d = r ( h , h . firstChild , 0 ) ) return ae ( Po ( d . line , d . ch - f ) , o ) ; f += h . textContent . length } for ( var p = s . previousSibling , f = n ; p ; p = p . previousSibling ) { if ( d = r ( p , p . firstChild , - 1 ) ) return ae ( Po ( d . line , d . ch + f ) , o ) ; f += h . textContent . length } } function ue ( e , t , n , r , i ) { function o ( e ) { return function ( t ) { return t . id == e } } function l ( t ) { if ( 1 == t . nodeType ) { var n = t . getAttribute ( "cm-text" ) ; if ( null != n ) return "" == n && ( n = t . textContent . replace ( /\u200b/g , "" ) ) , void ( a += n ) ; var u , d = t . getAttribute ( "cm-marker" ) ; if ( d ) { var h = e . findMarks ( Po ( r , 0 ) , Po ( i + 1 , 0 ) , o ( + d ) ) ; return void ( h . length && ( u = h [ 0 ] . find ( ) ) && ( a += Zr ( e . doc , u . from , u . to ) . join ( c ) ) ) } if ( "false" == t . getAttribute ( "contenteditable" ) ) return ; for ( var f = 0 ; f < t . childNodes . length ; f ++ ) l ( t . childNodes [ f ] ) ; /^(pre|div|p)$/i . test ( t . nodeName ) && ( s = ! 0 ) } else if ( 3 == t . nodeType ) { var p = t . nodeValue ; if ( ! p ) return ; s && ( a += c , s = ! 1 ) , a += p } } for ( var a = "" , s = ! 1 , c = e . doc . lineSeparator ( ) ; l ( t ) , t != n ; ) t = t . nextSibling ; return a } function de ( e , t ) { this . ranges = e , this . primIndex = t } function he ( e , t ) { this . anchor = e , this . head = t } function fe ( e , t ) { var n = e [ t ] ; e . sort ( function ( e , t ) { return zo ( e . from ( ) , t . from ( ) ) } ) , t = Hi ( e , n ) ; for ( var r = 1 ; r < e . length ; r ++ ) { var i = e [ r ] , o = e [ r - 1 ] ; if ( zo ( o . to ( ) , i . from ( ) ) >= 0 ) { var l = X ( o . from ( ) , i . from ( ) ) , a = K ( o . to ( ) , i . to ( ) ) , s = o . empty ( ) ? i . from ( ) == i . head : o . from ( ) == o . head ; t >= r && -- t , e . splice ( -- r , 2 , new he ( s ? a : l , s ? l : a ) ) } } return new de ( e , t ) } function pe ( e , t ) { return new de ( [ new he ( e , t || e ) ] , 0 ) } function me ( e , t ) { return Math . max ( e . first , Math . min ( t , e . first + e . size - 1 ) ) } function ge ( e , t ) { if ( t . line < e . first ) return Po ( e . first , 0 ) ; var n = e . first + e . size - 1 ; return t . line > n ? Po ( n , Yr ( e , n ) . text . length ) : ve ( t , Yr ( e , t . line ) . text . length ) } function ve ( e , t ) { var n = e . ch ; return null == n || n > t ? Po ( e . line , t ) : 0 > n ? Po ( e . line , 0 ) : e } function ye ( e , t ) { return t >= e . first && t < e . first + e . size } function xe ( e , t ) { for ( var n = [ ] , r = 0 ; r < t . length ; r ++ ) n [ r ] = ge ( e , t [ r ] ) ; return n } function be ( e , t , n , r ) { if ( e . cm && e . cm . display . shift || e . extend ) { var i = t . anchor ; if ( r ) { var o = zo ( n , i ) < 0 ; o != zo ( r , i ) < 0 ? ( i = n , n = r ) : o != zo ( n , r ) < 0 && ( n = r ) } return new he ( i , n ) } return new he ( r || n , n ) } function we ( e , t , n , r ) { Me ( e , new de ( [ be ( e , e . sel . primary ( ) , t , n ) ] , 0 ) , r ) } function ke ( e , t , n ) { for ( var r = [ ] , i = 0 ; i < e . sel . ranges . length ; i ++ ) r [ i ] = be ( e , e . sel . ranges [ i ] , t [ i ] , null ) ; var o = fe ( r , e . sel . primIndex ) ; Me ( e , o , n ) } function Ce ( e , t , n , r ) { var i = e . sel . ranges . slice ( 0 ) ; i [ t ] = n , Me ( e , fe ( i , e . sel . primIndex ) , r ) } function Se ( e , t , n , r ) { Me ( e , pe ( t , n ) , r ) } function Le ( e , t ) { var n = { ranges : t . ranges , update : function ( t ) { this . ranges = [ ] ; for ( var n = 0 ; n < t . length ; n ++ ) this . ranges [ n ] = new he ( ge ( e , t [ n ] . anchor ) , ge ( e , t [ n ] . head ) ) } } ; return Wl ( e , "beforeSelectionChange" , e , n ) , e . cm && Wl ( e . cm , "beforeSelectionChange" , e . cm , n ) , n . ranges != t . ranges ? fe ( n . ranges , n . ranges . length - 1 ) : t } function Te ( e , t , n ) { var r = e . history . done , i = Wi ( r ) ; i && i . ranges ? ( r [ r . length - 1 ] = t , Ne ( e , t , n ) ) : Me ( e , t , n ) } function Me ( e , t , n ) { Ne ( e , t , n ) , ui ( e , e . sel , e . cm ? e . cm . curOp . id : NaN , n ) } function Ne ( e , t , n ) { ( Mi ( e , "beforeSelectionChange" ) || e . cm && Mi ( e . cm , "beforeSelectionChange" ) ) && ( t = Le ( e , t ) ) ; var r = n && n . bias || ( zo ( t . primary ( ) . head , e . sel . primary ( ) . head ) < 0 ? - 1 : 1 ) ; Ae ( e , We ( e , t , r , ! 0 ) ) , n && n . scroll === ! 1 || ! e . cm || zn ( e . cm ) } function Ae ( e , t ) { t . equals ( e . sel ) || ( e . sel = t , e . cm && ( e . cm . curOp . updateInput = e . cm . curOp . selectionChanged = ! 0 , Ti ( e . cm ) ) , Ci ( e , "cursorActivity" , e ) ) } function Oe ( e ) { Ae ( e , We ( e , e . sel , null , ! 1 ) , Il ) } function We ( e , t , n , r ) { for ( var i , o = 0 ; o < t . ranges . length ; o ++ ) { var l = t . ranges [ o ] , a = He ( e , l . anchor , n , r ) , s = He ( e , l . head , n , r ) ; ( i || a != l .
t . dataTransfer . setDragImage ( n , 0 , 0 ) , Co && n . parentNode . removeChild ( n ) } } function en ( e , t ) { var n = Ut ( e , t ) ; if ( n ) { var r = document . createDocumentFragment ( ) ; Ie ( e , n , r ) , e . display . dragCursor || ( e . display . dragCursor = _i ( "div" , null , "CodeMirror-cursors CodeMirror-dragcursors" ) , e . display . lineSpace . insertBefore ( e . display . dragCursor , e . display . cursorDiv ) ) , qi ( e . display . dragCursor , r ) } } function tn ( e ) { e . display . dragCursor && ( e . display . lineSpace . removeChild ( e . display . dragCursor ) , e . display . dragCursor = null ) } function nn ( e , t ) { Math . abs ( e . doc . scrollTop - t ) < 2 || ( e . doc . scrollTop = t , mo || A ( e , { top : t } ) , e . display . scroller . scrollTop != t && ( e . display . scroller . scrollTop = t ) , e . display . scrollbars . setScrollTop ( t ) , mo && A ( e ) , Fe ( e , 100 ) ) } function rn ( e , t , n ) { ( n ? t == e . doc . scrollLeft : Math . abs ( e . doc . scrollLeft - t ) < 2 ) || ( t = Math . min ( t , e . display . scroller . scrollWidth - e . display . scroller . clientWidth ) , e . doc . scrollLeft = t , w ( e ) , e . display . scroller . scrollLeft != t && ( e . display . scroller . scrollLeft = t ) , e . display . scrollbars . setScrollLeft ( t ) ) } function on ( e , t ) { var n = Ko ( t ) , r = n . x , i = n . y , o = e . display , l = o . scroller , a = l . scrollWidth > l . clientWidth , s = l . scrollHeight > l . clientHeight ; if ( r && a || i && s ) { if ( i && Ao && bo ) e : for ( var c = t . target , u = o . view ; c != l ; c = c . parentNode ) for ( var d = 0 ; d < u . length ; d ++ ) if ( u [ d ] . node == c ) { e . display . currentWheelTarget = c ; break e } if ( r && ! mo && ! Co && null != Vo ) return i && s && nn ( e , Math . max ( 0 , Math . min ( l . scrollTop + i * Vo , l . scrollHeight - l . clientHeight ) ) ) , rn ( e , Math . max ( 0 , Math . min ( l . scrollLeft + r * Vo , l . scrollWidth - l . clientWidth ) ) ) , ( ! i || i && s ) && Ll ( t ) , void ( o . wheelStartX = null ) ; if ( i && null != Vo ) { var h = i * Vo , f = e . doc . scrollTop , p = f + o . wrapper . clientHeight ; 0 > h ? f = Math . max ( 0 , f + h - 50 ) : p = Math . min ( e . doc . height , p + h + 50 ) , A ( e , { top : f , bottom : p } ) } 20 > $o && ( null == o . wheelStartX ? ( o . wheelStartX = l . scrollLeft , o . wheelStartY = l . scrollTop , o . wheelDX = r , o . wheelDY = i , setTimeout ( function ( ) { if ( null != o . wheelStartX ) { var e = l . scrollLeft - o . wheelStartX , t = l . scrollTop - o . wheelStartY , n = t && o . wheelDY && t / o . wheelDY || e && o . wheelDX && e / o . wheelDX ; o . wheelStartX = o . wheelStartY = null , n && ( Vo = ( Vo * $o + n ) / ( $o + 1 ) , ++ $o ) } } , 200 ) ) : ( o . wheelDX += r , o . wheelDY += i ) ) } } function ln ( e , t , n ) { if ( "string" == typeof t && ( t = sl [ t ] , ! t ) ) return ! 1 ; e . display . input . ensurePolled ( ) ; var r = e . display . shift , i = ! 1 ; try { Z ( e ) && ( e . state . suppressEdits = ! 0 ) , n && ( e . display . shift = ! 1 ) , i = t ( e ) != El } finally { e . display . shift = r , e . state . suppressEdits = ! 1 } return i } function an ( e , t , n ) { for ( var r = 0 ; r < e . state . keyMaps . length ; r ++ ) { var i = ul ( t , e . state . keyMaps [ r ] , n , e ) ; if ( i ) return i } return e . options . extraKeys && ul ( t , e . options . extraKeys , n , e ) || ul ( t , e . options . keyMap , n , e ) } function sn ( e , t , n , r ) { var i = e . state . keySeq ; if ( i ) { if ( dl ( t ) ) return "handled" ; Xo . set ( 50 , function ( ) { e . state . keySeq == i && ( e . state . keySeq = null , e . display . input . reset ( ) ) } ) , t = i + " " + t } var o = an ( e , t , r ) ; return "multi" == o && ( e . state . keySeq = t ) , "handled" == o && Ci ( e , "keyHandled" , e , t , n ) , ( "handled" == o || "multi" == o ) && ( Ll ( n ) , ze ( e ) ) , i && ! o && /\'$/ . test ( t ) ? ( Ll ( n ) , ! 0 ) : ! ! o } function cn ( e , t ) { var n = hl ( t , ! 0 ) ; return n ? t . shiftKey && ! e . state . keySeq ? sn ( e , "Shift-" + n , t , function ( t ) { return ln ( e , t , ! 0 ) } ) || sn ( e , n , t , function ( t ) { return ( "string" == typeof t ? /^go[A-Z]/ . test ( t ) : t . motion ) ? ln ( e , t ) : void 0 } ) : sn ( e , n , t , function ( t ) { return ln ( e , t ) } ) : ! 1 } function un ( e , t , n ) { return sn ( e , "'" + n + "'" , t , function ( t ) { return ln ( e , t , ! 0 ) } ) } function dn ( e ) { var t = this ; if ( t . curOp . focus = Gi ( ) , ! Li ( t , e ) ) { yo && 11 > xo && 27 == e . keyCode && ( e . returnValue = ! 1 ) ; var n = e . keyCode ; t . display . shift = 16 == n || e . shiftKey ; var r = cn ( t , e ) ; Co && ( Yo = r ? n : null , ! r && 88 == n && ! ta && ( Ao ? e . metaKey : e . ctrlKey ) && t . replaceSelection ( "" , null , "cut" ) ) , 18 != n || /\bCodeMirror-crosshair\b/ . test ( t . display . lineDiv . className ) || hn ( t ) } } function hn ( e ) { function t ( e ) { 18 != e . keyCode && e . altKey || ( Xl ( n , "CodeMirror-crosshair" ) , Ol ( document , "keyup" , t ) , Ol ( document , "mouseover" , t ) ) } var n = e . display . lineDiv ; Yl ( n , "CodeMirror-crosshair" ) , Nl ( document , "keyup" , t ) , Nl ( document , "mouseover" , t ) } function fn ( e ) { 16 == e . keyCode && ( this . doc . sel . shift = ! 1 ) , Li ( this , e ) } function pn ( e ) { var t = this ; if ( ! ( Gt ( t . display , e ) || Li ( t , e ) || e . ctrlKey && ! e . altKey || Ao && e . metaKey ) ) { var n = e . keyCode , r = e . charCode ; if ( Co && n == Yo ) return Yo = null , void Ll ( e ) ; if ( ! Co || e . which && ! ( e . which < 10 ) || ! cn ( t , e ) ) { var i = String . fromCharCode ( null == r ? n : r ) ; un ( t , e , i ) || t . display . input . onKeyPress ( e ) } } } function mn ( e ) { e . state . delayingBlurEve
this . lastOp = this . lastSelOp = null , this . lastOrigin = this . lastSelOrigin = null , this . generation = this . maxGeneration = e || 1 } function oi ( e , t ) { var n = { from : V ( t . from ) , to : Zo ( t ) , text : Zr ( e , t . from , t . to ) } ; return hi ( e , n , t . from . line , t . to . line + 1 ) , Kr ( e , function ( e ) { hi ( e , n , t . from . line , t . to . line + 1 ) } , ! 0 ) , n } function li ( e ) { for ( ; e . length ; ) { var t = Wi ( e ) ; if ( ! t . ranges ) break ; e . pop ( ) } } function ai ( e , t ) { return t ? ( li ( e . done ) , Wi ( e . done ) ) : e . done . length && ! Wi ( e . done ) . ranges ? Wi ( e . done ) : e . done . length > 1 && ! e . done [ e . done . length - 2 ] . ranges ? ( e . done . pop ( ) , Wi ( e . done ) ) : void 0 } function si ( e , t , n , r ) { var i = e . history ; i . undone . length = 0 ; var o , l = + new Date ; if ( ( i . lastOp == r || i . lastOrigin == t . origin && t . origin && ( "+" == t . origin . charAt ( 0 ) && e . cm && i . lastModTime > l - e . cm . options . historyEventDelay || "*" == t . origin . charAt ( 0 ) ) ) && ( o = ai ( i , i . lastOp == r ) ) ) { var a = Wi ( o . changes ) ; 0 == zo ( t . from , t . to ) && 0 == zo ( t . from , a . to ) ? a . to = Zo ( t ) : o . changes . push ( oi ( e , t ) ) } else { var s = Wi ( i . done ) ; for ( s && s . ranges || di ( e . sel , i . done ) , o = { changes : [ oi ( e , t ) ] , generation : i . generation } , i . done . push ( o ) ; i . done . length > i . undoDepth ; ) i . done . shift ( ) , i . done [ 0 ] . ranges || i . done . shift ( ) } i . done . push ( n ) , i . generation = ++ i . maxGeneration , i . lastModTime = i . lastSelTime = l , i . lastOp = i . lastSelOp = r , i . lastOrigin = i . lastSelOrigin = t . origin , a || Wl ( e , "historyAdded" ) } function ci ( e , t , n , r ) { var i = t . charAt ( 0 ) ; return "*" == i || "+" == i && n . ranges . length == r . ranges . length && n . somethingSelected ( ) == r . somethingSelected ( ) && new Date - e . history . lastSelTime <= ( e . cm ? e . cm . options . historyEventDelay : 500 ) } function ui ( e , t , n , r ) { var i = e . history , o = r && r . origin ; n == i . lastSelOp || o && i . lastSelOrigin == o && ( i . lastModTime == i . lastSelTime && i . lastOrigin == o || ci ( e , o , Wi ( i . done ) , t ) ) ? i . done [ i . done . length - 1 ] = t : di ( t , i . done ) , i . lastSelTime = + new Date , i . lastSelOrigin = o , i . lastSelOp = n , r && r . clearRedo !== ! 1 && li ( i . undone ) } function di ( e , t ) { var n = Wi ( t ) ; n && n . ranges && n . equals ( e ) || t . push ( e ) } function hi ( e , t , n , r ) { var i = t [ "spans_" + e . id ] , o = 0 ; e . iter ( Math . max ( e . first , n ) , Math . min ( e . first + e . size , r ) , function ( n ) { n . markedSpans && ( ( i || ( i = t [ "spans_" + e . id ] = { } ) ) [ o ] = n . markedSpans ) , ++ o } ) } function fi ( e ) { if ( ! e ) return null ; for ( var t , n = 0 ; n < e . length ; ++ n ) e [ n ] . marker . explicitlyCleared ? t || ( t = e . slice ( 0 , n ) ) : t && t . push ( e [ n ] ) ; return t ? t . length ? t : null : e } function pi ( e , t ) { var n = t [ "spans_" + e . id ] ; if ( ! n ) return null ; for ( var r = 0 , i = [ ] ; r < t . text . length ; ++ r ) i . push ( fi ( n [ r ] ) ) ; return i } function mi ( e , t , n ) { for ( var r = 0 , i = [ ] ; r < e . length ; ++ r ) { var o = e [ r ] ; if ( o . ranges ) i . push ( n ? de . prototype . deepCopy . call ( o ) : o ) ; else { var l = o . changes , a = [ ] ; i . push ( { changes : a } ) ; for ( var s = 0 ; s < l . length ; ++ s ) { var c , u = l [ s ] ; if ( a . push ( { from : u . from , to : u . to , text : u . text } ) , t ) for ( var d in u ) ( c = d . match ( /^spans_(\d+)$/ ) ) && Hi ( t , Number ( c [ 1 ] ) ) > - 1 && ( Wi ( a ) [ d ] = u [ d ] , delete u [ d ] ) } } } return i } function gi ( e , t , n , r ) { n < e . line ? e . line += r : t < e . line && ( e . line = t , e . ch = 0 ) } function vi ( e , t , n , r ) { for ( var i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] , l = ! 0 ; if ( o . ranges ) { o . copied || ( o = e [ i ] = o . deepCopy ( ) , o . copied = ! 0 ) ; for ( var a = 0 ; a < o . ranges . length ; a ++ ) gi ( o . ranges [ a ] . anchor , t , n , r ) , gi ( o . ranges [ a ] . head , t , n , r ) } else { for ( var a = 0 ; a < o . changes . length ; ++ a ) { var s = o . changes [ a ] ; if ( n < s . from . line ) s . from = Po ( s . from . line + r , s . from . ch ) , s . to = Po ( s . to . line + r , s . to . ch ) ; else if ( t <= s . to . line ) { l = ! 1 ; break } } l || ( e . splice ( 0 , i + 1 ) , i = 0 ) } } } function yi ( e , t ) { var n = t . from . line , r = t . to . line , i = t . text . length - ( r - n ) - 1 ; vi ( e . done , n , r , i ) , vi ( e . undone , n , r , i ) } function xi ( e ) { return null != e . defaultPrevented ? e . defaultPrevented : 0 == e . returnValue } function bi ( e ) { return e . target || e . srcElement } function wi ( e ) { var t = e . which ; return null == t && ( 1 & e . button ? t = 1 : 2 & e . button ? t = 3 : 4 & e . button && ( t = 2 ) ) , Ao && e . ctrlKey && 1 == t && ( t = 3 ) , t } function ki ( e , t , n ) { var r = e . _handlers && e . _handlers [ t ] ; return n ? r && r . length > 0 ? r . slice ( ) : Al : r || Al } function Ci ( e , t ) { function n ( e ) { return function ( ) { e . apply ( null , o ) } } var r = ki ( e , t , ! 1 ) ; if ( r . length ) { var i , o = Array . prototype . slice . call ( arguments , 2 ) ; qo ? i = qo . delayedCallbacks : Hl ? i = Hl : ( i = Hl = [ ] , setTimeout ( Si , 0 ) ) ; for ( var l = 0 ; l < r . length ; ++ l ) i . push ( n ( r [ l ] ) ) } } function Si ( ) { var e = Hl ; Hl = null ; for ( var t = 0 ; t < e . length ; ++ t ) e [ t ] ( ) } function Li ( e , t , n ) { return "string" == typeof t && ( t = { type : t , preventDefault : function ( ) { this . defaultPrevented = ! 0 } } ) , Wl ( e , n || t . type , e , t ) , xi ( t ) || t . codemirrorIgnore } function Ti ( e ) { var t = e . _handlers && e . _handlers . cursorActivity ; if ( t ) for ( var n =
from : Po ( e , 0 ) , to : null } : null == e . from && ( e = { from : e , to : null } ) , e . to || ( e . to = e . from ) , e . margin = t || 0 , null != e . from . line ) Fn ( this ) , this . curOp . scrollToPos = e ; else { var n = In ( this , Math . min ( e . from . left , e . to . left ) , Math . min ( e . from . top , e . to . top ) - e . margin , Math . max ( e . from . right , e . to . right ) , Math . max ( e . from . bottom , e . to . bottom ) + e . margin ) ; this . scrollTo ( n . scrollLeft , n . scrollTop ) } } ) , setSize : Ot ( function ( e , t ) { function n ( e ) { return "number" == typeof e || /^\d+$/ . test ( String ( e ) ) ? e + "px" : e } var r = this ; null != e && ( r . display . wrapper . style . width = n ( e ) ) , null != t && ( r . display . wrapper . style . height = n ( t ) ) , r . options . lineWrapping && ot ( this ) ; var i = r . display . viewFrom ; r . doc . iter ( i , r . display . viewTo , function ( e ) { if ( e . widgets ) for ( var t = 0 ; t < e . widgets . length ; t ++ ) if ( e . widgets [ t ] . noHScroll ) { It ( r , i , "widget" ) ; break } ++ i } ) , r . curOp . forceUpdate = ! 0 , Wl ( r , "refresh" , this ) } ) , operation : function ( e ) { return Nt ( this , e ) } , refresh : Ot ( function ( ) { var e = this . display . cachedTextHeight ; Et ( this ) , this . curOp . forceUpdate = ! 0 , lt ( this ) , this . scrollTo ( this . doc . scrollLeft , this . doc . scrollTop ) , u ( this ) , ( null == e || Math . abs ( e - vt ( this . display ) ) > . 5 ) && l ( this ) , Wl ( this , "refresh" , this ) } ) , swapDoc : Ot ( function ( e ) { var t = this . doc ; return t . cm = null , Xr ( this , e ) , lt ( this ) , this . display . input . reset ( ) , this . scrollTo ( e . scrollLeft , e . scrollTop ) , this . curOp . forceScroll = ! 0 , Ci ( this , "swapDoc" , this , t ) , t } ) , getInputField : function ( ) { return this . display . input . getField ( ) } , getWrapperElement : function ( ) { return this . display . wrapper } , getScrollerElement : function ( ) { return this . display . scroller } , getGutterElement : function ( ) { return this . display . gutters } } , Ni ( e ) ; var Qo = e . defaults = { } , Jo = e . optionHandlers = { } , el = e . Init = { toString : function ( ) { return "CodeMirror.Init" } } ; Gn ( "value" , "" , function ( e , t ) { e . setValue ( t ) } , ! 0 ) , Gn ( "mode" , null , function ( e , t ) { e . doc . modeOption = t , n ( e ) } , ! 0 ) , Gn ( "indentUnit" , 2 , n , ! 0 ) , Gn ( "indentWithTabs" , ! 1 ) , Gn ( "smartIndent" , ! 0 ) , Gn ( "tabSize" , 4 , function ( e ) { r ( e ) , lt ( e ) , Et ( e ) } , ! 0 ) , Gn ( "lineSeparator" , null , function ( e , t ) { if ( e . doc . lineSep = t , t ) { var n = [ ] , r = e . doc . first ; e . doc . iter ( function ( e ) { for ( var i = 0 ; ; ) { var o = e . text . indexOf ( t , i ) ; if ( - 1 == o ) break ; i = o + t . length , n . push ( Po ( r , o ) ) } r ++ } ) ; for ( var i = n . length - 1 ; i >= 0 ; i -- ) Wn ( e . doc , t , n [ i ] , Po ( n [ i ] . line , n [ i ] . ch + t . length ) ) } } ) , Gn ( "specialChars" , /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g , function ( t , n , r ) { t . state . specialChars = new RegExp ( n . source + ( n . test ( " " ) ? "" : "| " ) , "g" ) , r != e . Init && t . refresh ( ) } ) , Gn ( "specialCharPlaceholder" , Fr , function ( e ) { e . refresh ( ) } , ! 0 ) , Gn ( "electricChars" , ! 0 ) , Gn ( "inputStyle" , No ? "contenteditable" : "textarea" , function ( ) { throw new Error ( "inputStyle can not (yet) be changed in a running editor" ) } , ! 0 ) , Gn ( "rtlMoveVisually" , ! Oo ) , Gn ( "wholeLineUpdateBefore" , ! 0 ) , Gn ( "theme" , "default" , function ( e ) { a ( e ) , s ( e ) } , ! 0 ) , Gn ( "keyMap" , "default" , function ( t , n , r ) { var i = $n ( n ) , o = r != e . Init && $n ( r ) ; o && o . detach && o . detach ( t , i ) , i . attach && i . attach ( t , o || null ) } ) , Gn ( "extraKeys" , null ) , Gn ( "lineWrapping" , ! 1 , i , ! 0 ) , Gn ( "gutters" , [ ] , function ( e ) { f ( e . options ) , s ( e ) } , ! 0 ) , Gn ( "fixedGutter" , ! 0 , function ( e , t ) { e . display . gutters . style . left = t ? S ( e . display ) + "px" : "0" , e . refresh ( ) } , ! 0 ) , Gn ( "coverGutterNextToScrollbar" , ! 1 , function ( e ) { y ( e ) } , ! 0 ) , Gn ( "scrollbarStyle" , "native" , function ( e ) { v ( e ) , y ( e ) , e . display . scrollbars . setScrollTop ( e . doc . scrollTop ) , e . display . scrollbars . setScrollLeft ( e . doc . scrollLeft ) } , ! 0 ) , Gn ( "lineNumbers" , ! 1 , function ( e ) { f ( e . options ) , s ( e ) } , ! 0 ) , Gn ( "firstLineNumber" , 1 , s , ! 0 ) , Gn ( "lineNumberFormatter" , function ( e ) { return e } , s , ! 0 ) , Gn ( "showCursorWhenSelecting" , ! 1 , De , ! 0 ) , Gn ( "resetSelectionOnContextMenu" , ! 0 ) , Gn ( "lineWiseCopyCut" , ! 0 ) , Gn ( "readOnly" , ! 1 , function ( e , t ) { "nocursor" == t ? ( vn ( e ) , e . display . input . blur ( ) , e . display . disabled = ! 0 ) : e . display . disabled = ! 1 , e . display . input . readOnlyChanged ( t ) } ) , Gn ( "disableInput" , ! 1 , function ( e , t ) { t || e . display . input . reset ( ) } , ! 0 ) , Gn ( "dragDrop" , ! 0 , jt ) , Gn ( "allowDropFileTypes" , null ) , Gn ( "cursorBlinkRate" , 530 ) , Gn ( "cursorScrollMargin" , 0 ) , Gn ( "cursorHeight" , 1 , De , ! 0 ) , Gn ( "singleCursorHeightPerLine" , ! 0 , De , ! 0 ) , Gn ( "workTime" , 100 ) , Gn ( "workDelay" , 100 ) , Gn ( "flattenSpans" , ! 0 , r , ! 0 ) , Gn ( "addModeClass" , ! 1 , r , ! 0 ) , Gn ( "pollInterval" , 100 ) , Gn ( "undoDepth" , 200 , function ( e , t ) { e . doc . history . undoDepth = t } ) , Gn ( "historyEventDelay" , 1250 ) , Gn ( "viewportMargin" , 10 , function ( e ) { e . refresh ( ) } , ! 0 ) , Gn ( " max
jl = document . createRange ? function ( e , t , n , r ) { var i = document . createRange ( ) ; return i . setEnd ( r || e , n ) , i . setStart ( e , t ) , i } : function ( e , t , n ) { var r = document . body . createTextRange ( ) ; try { r . moveToElementText ( e . parentNode ) } catch ( i ) { return r } return r . collapse ( ! 0 ) , r . moveEnd ( "character" , n ) , r . moveStart ( "character" , t ) , r } ; var $l = e . contains = function ( e , t ) { if ( 3 == t . nodeType && ( t = t . parentNode ) , e . contains ) return e . contains ( t ) ; do if ( 11 == t . nodeType && ( t = t . host ) , t == e ) return ! 0 ; while ( t = t . parentNode ) } ; yo && 11 > xo && ( Gi = function ( ) { try { return document . activeElement } catch ( e ) { return document . body } } ) ; var Vl , Kl , Xl = e . rmClass = function ( e , t ) { var n = e . className , r = Ui ( t ) . exec ( n ) ; if ( r ) { var i = n . slice ( r . index + r [ 0 ] . length ) ; e . className = n . slice ( 0 , r . index ) + ( i ? r [ 1 ] + i : "" ) } } , Yl = e . addClass = function ( e , t ) { var n = e . className ; Ui ( t ) . test ( n ) || ( e . className += ( n ? " " : "" ) + t ) } , Zl = ! 1 , Ql = function ( ) { if ( yo && 9 > xo ) return ! 1 ; var e = _i ( "div" ) ; return "draggable" in e || "dragDrop" in e } ( ) , Jl = e . splitLines = 3 != "\n\nb" . split ( /\n/ ) . length ? function ( e ) { for ( var t = 0 , n = [ ] , r = e . length ; r >= t ; ) { var i = e . indexOf ( "\n" , t ) ; - 1 == i && ( i = e . length ) ; var o = e . slice ( t , "\r" == e . charAt ( i - 1 ) ? i - 1 : i ) , l = o . indexOf ( "\r" ) ; - 1 != l ? ( n . push ( o . slice ( 0 , l ) ) , t += l + 1 ) : ( n . push ( o ) , t = i + 1 ) } return n } : function ( e ) { return e . split ( /\r\n?|\n/ ) } , ea = window . getSelection ? function ( e ) { try { return e . selectionStart != e . selectionEnd } catch ( t ) { return ! 1 } } : function ( e ) { try { var t = e . ownerDocument . selection . createRange ( ) } catch ( n ) { } return t && t . parentElement ( ) == e ? 0 != t . compareEndPoints ( "StartToEnd" , t ) : ! 1 } , ta = function ( ) { var e = _i ( "div" ) ; return "oncopy" in e ? ! 0 : ( e . setAttribute ( "oncopy" , "return;" ) , "function" == typeof e . oncopy ) } ( ) , na = null , ra = e . 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" , 44 : "PrintScrn" , 45 : "Insert" , 46 : "Delete" , 59 : ";" , 61 : "=" , 91 : "Mod" , 92 : "Mod" , 93 : "Mod" , 106 : "*" , 107 : "=" , 109 : "-" , 110 : "." , 111 : "/" , 127 : "Delete" , 173 : "-" , 186 : ";" , 187 : "=" , 188 : "," , 189 : "-" , 190 : "." , 191 : "/" , 192 : "`" , 219 : "[" , 220 : "\\" , 221 : "]" , 222 : "'" , 63232 : "Up" , 63233 : "Down" , 63234 : "Left" , 63235 : "Right" , 63272 : "Delete" , 63273 : "Home" , 63275 : "End" , 63276 : "PageUp" , 63277 : "PageDown" , 63302 : "Insert" } ; ! function ( ) { for ( var e = 0 ; 10 > e ; e ++ ) ra [ e + 48 ] = ra [ e + 96 ] = String ( e ) ; for ( var e = 65 ; 90 >= e ; e ++ ) ra [ e ] = String . fromCharCode ( e ) ; for ( var e = 1 ; 12 >= e ; e ++ ) ra [ e + 111 ] = ra [ e + 63235 ] = "F" + e } ( ) ; var ia , oa = function ( ) { function e ( e ) { return 247 >= e ? n . charAt ( e ) : e >= 1424 && 1524 >= e ? "R" : e >= 1536 && 1773 >= e ? r . charAt ( e - 1536 ) : e >= 1774 && 2220 >= e ? "r" : e >= 8192 && 8203 >= e ? "w" : 8204 == e ? "b" : "L" } function t ( e , t , n ) { this . level = e , this . from = t , this . to = n } var n = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN" , r = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm" , i = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/ , o = /[stwN]/ , l = /[LRr]/ , a = /[Lb1n]/ , s = /[1n]/ , c = "L" ; return function ( n ) { if ( ! i . test ( n ) ) return ! 1 ; for ( var r , u = n . length , d = [ ] , h = 0 ; u > h ; ++ h ) d . push ( r = e ( n . charCodeAt ( h ) ) ) ; for ( var h = 0 , f = c ; u > h ; ++ h ) { var r = d [ h ] ; "m" == r ? d [ h ] = f : f = r } for ( var h = 0 , p = c ; u > h ; ++ h ) { var r = d [ h ] ; "1" == r && "r" == p ? d [ h ] = "n" : l . test ( r ) && ( p = r , "r" == r && ( d [ h ] = "R" ) ) } for ( var h = 1 , f = d [ 0 ] ; u - 1 > h ; ++ h ) { var r = d [ h ] ; "+" == r && "1" == f && "1" == d [ h + 1 ] ? d [ h ] = "1" : "," != r || f != d [ h + 1 ] || "1" != f && "n" != f || ( d [ h ] = f ) , f = r } for ( var h = 0 ; u > h ; ++ h ) { var r = d [ h ] ; if ( "," == r ) d [ h ] = "N" ; else if ( "%" == r ) { for ( var m = h + 1 ; u > m && "%" == d [ m ] ; ++ m ) ; for ( var g = h && "!" == d [ h - 1 ] || u > m && "1" == d [ m ] ? "1" : "N" , v = h ; m > v ; ++ v ) d [ v ] = g ; h = m - 1 } } for ( var h = 0 , p = c ; u > h ; ++ h ) { var r = d [ h ] ; "L" == p && "1" == r ? d [ h ] = "L" : l . test ( r ) && ( p = r ) } for ( var h = 0 ; u > h ; ++ h ) if ( o . test ( d [ h ] ) ) { for ( var m = h + 1 ; u > m && o . test ( d [ m ] ) ; ++ m ) ; for ( var y = "L" == ( h ? d [ h - 1 ] : c ) , x = "L" == ( u > m ? d [ m ] : c ) , g = y || x ? "L" : "R" , v = h ; m > v ; ++ v ) d [ v ] = g ; h = m - 1 } for ( var b , w = [ ] , h = 0 ; u > h ; ) if ( a . test ( d [ h ] ) ) { var k = h ; for ( ++ h ; u > h && a . test ( d [ h ] ) ; ++ h ) ; w . push ( new t ( 0 , k , h ) ) } else { var C = h , S = w . length ; for ( ++ h ; u > h && "
v ; if ( "endTag" == e || "selfcloseTag" == e ) { var r = n . tagName , i = n . tagStart ; return n . tagName = n . tagStart = null , "selfcloseTag" == e || L . autoSelfClosers . hasOwnProperty ( r ) ? u ( n , r ) : ( u ( n , r ) , n . context = new s ( n , r , i == n . indented ) ) , d } return S = "error" , g } function v ( e , t , n ) { return "equals" == e ? y : ( L . allowMissing || ( S = "error" ) , g ( e , t , n ) ) } function y ( e , t , n ) { return "string" == e ? x : "word" == e && L . allowUnquoted ? ( S = "string" , g ) : ( S = "error" , g ( e , t , n ) ) } function x ( e , t , n ) { return "string" == e ? x : g ( e , t , n ) } var b = t . indentUnit , w = n . multilineTagIndentFactor || 1 , k = n . multilineTagIndentPastTag ; null == k && ( k = ! 0 ) ; var C , S , L = n . htmlMode ? { autoSelfClosers : { area : ! 0 , base : ! 0 , br : ! 0 , col : ! 0 , command : ! 0 , embed : ! 0 , frame : ! 0 , hr : ! 0 , img : ! 0 , input : ! 0 , keygen : ! 0 , link : ! 0 , meta : ! 0 , param : ! 0 , source : ! 0 , track : ! 0 , wbr : ! 0 , menuitem : ! 0 } , implicitlyClosed : { dd : ! 0 , li : ! 0 , optgroup : ! 0 , option : ! 0 , p : ! 0 , rp : ! 0 , rt : ! 0 , tbody : ! 0 , td : ! 0 , tfoot : ! 0 , th : ! 0 , tr : ! 0 } , contextGrabbers : { dd : { dd : ! 0 , dt : ! 0 } , dt : { dd : ! 0 , dt : ! 0 } , li : { li : ! 0 } , option : { option : ! 0 , optgroup : ! 0 } , optgroup : { optgroup : ! 0 } , p : { address : ! 0 , article : ! 0 , aside : ! 0 , blockquote : ! 0 , dir : ! 0 , div : ! 0 , dl : ! 0 , fieldset : ! 0 , footer : ! 0 , form : ! 0 , h1 : ! 0 , h2 : ! 0 , h3 : ! 0 , h4 : ! 0 , h5 : ! 0 , h6 : ! 0 , header : ! 0 , hgroup : ! 0 , hr : ! 0 , menu : ! 0 , nav : ! 0 , ol : ! 0 , p : ! 0 , pre : ! 0 , section : ! 0 , table : ! 0 , ul : ! 0 } , rp : { rp : ! 0 , rt : ! 0 } , rt : { rp : ! 0 , rt : ! 0 } , tbody : { tbody : ! 0 , tfoot : ! 0 } , td : { td : ! 0 , th : ! 0 } , tfoot : { tbody : ! 0 } , th : { td : ! 0 , th : ! 0 } , thead : { tbody : ! 0 , tfoot : ! 0 } , tr : { tr : ! 0 } } , doNotIndent : { pre : ! 0 } , allowUnquoted : ! 0 , allowMissing : ! 0 , caseFold : ! 0 } : { autoSelfClosers : { } , implicitlyClosed : { } , contextGrabbers : { } , doNotIndent : { } , allowUnquoted : ! 1 , allowMissing : ! 1 , caseFold : ! 1 } , T = n . alignCDATA ; return r . isInText = ! 0 , { startState : function ( ) { return { tokenize : r , state : d , indented : 0 , tagName : null , tagStart : null , context : null } } , token : function ( e , t ) { if ( ! t . tagName && e . sol ( ) && ( t . indented = e . indentation ( ) ) , e . eatSpace ( ) ) return null ; C = null ; var n = t . tokenize ( e , t ) ; return ( n || C ) && "comment" != n && ( S = null , t . state = t . state ( C || n , e , t ) , S && ( n = "error" == S ? n + " error" : S ) ) , n } , indent : function ( t , n , o ) { var l = t . context ; if ( t . tokenize . isInAttribute ) return t . tagStart == t . indented ? t . stringStartCol + 1 : t . indented + b ; if ( l && l . noIndent ) return e . Pass ; if ( t . tokenize != i && t . tokenize != r ) return o ? o . match ( /^(\s*)/ ) [ 0 ] . length : 0 ; if ( t . tagName ) return k ? t . tagStart + t . tagName . length + 2 : t . tagStart + b * w ; if ( T && /<!\[CDATA\[/ . test ( n ) ) return 0 ; var a = n && /^<(\/)?([\w_:\.-]*)/ . exec ( n ) ; if ( a && a [ 1 ] ) for ( ; l ; ) { if ( l . tagName == a [ 2 ] ) { l = l . prev ; break } if ( ! L . implicitlyClosed . hasOwnProperty ( l . tagName ) ) break ; l = l . prev } else if ( a ) for ( ; l ; ) { var s = L . contextGrabbers [ l . tagName ] ; if ( ! s || ! s . hasOwnProperty ( a [ 2 ] ) ) break ; l = l . prev } for ( ; l && ! l . startOfLine ; ) l = l . prev ; return l ? l . indent + b : 0 } , electricInput : /<\/[\s\w:]+>$/ , blockCommentStart : "<!--" , blockCommentEnd : "-->" , configuration : n . htmlMode ? "html" : "xml" , helperType : n . htmlMode ? "html" : "xml" } } ) , e . defineMIME ( "text/xml" , "xml" ) , e . defineMIME ( "application/xml" , "xml" ) , e . mimeModes . hasOwnProperty ( "text/html" ) || e . defineMIME ( "text/html" , { name : "xml" , htmlMode : ! 0 } ) } ) } , { "../../lib/codemirror" : 6 } ] , 11 : [ function ( t , n , r ) { ( function ( t ) { ( function ( ) { function t ( e ) { this . tokens = [ ] , this . tokens . links = { } , this . options = e || h . defaults , this . rules = f . normal , this . options . gfm && ( this . options . tables ? this . rules = f . tables : this . rules = f . gfm ) } function i ( e , t ) { if ( this . options = t || h . defaults , this . links = e , this . rules = p . normal , this . renderer = this . options . renderer || new o , this . renderer . options = this . options , ! this . links ) throw new Error ( "Tokens array requires a `links` property." ) ; this . options . gfm ? this . options . breaks ? this . rules = p . breaks : this . rules = p . gfm : this . options . pedantic && ( this . rules = p . pedantic ) } function o ( e ) { this . options = e || { } } function l ( e ) { this . tokens = [ ] , this . token = null , this . options = e || h . defaults , this . options . renderer = this . options . renderer || new o , this . renderer = this . options . renderer , this . renderer . options = this . options } function a ( e , t ) { return e . replace ( t ? /&/g : /&(?!#?\w+;)/g , "&" ) . replace ( /</g , "<" ) . replace ( />/g , ">" ) . replace ( /"/g , """ ) . replace ( /'/g , "'" ) } function s ( e ) { return e . replace ( /&([#\w]+);/g , function ( e , t ) { return t = t . toLowerCase ( ) , "colon" === t ? ":" : "#" === t . charAt ( 0 ) ? "x" === t . charAt ( 1 ) ? String . fromCharCode ( parseInt ( t . substring ( 2 ) , 16 ) ) : String . fromCharCode ( + t . substring ( 1 ) ) : "" } ) } function c ( e , t ) { return e = e . source , t = t || "" , fun
} , fullscreen : { name : "fullscreen" , action : a , className : "fa fa-arrows-alt no-disable no-mobile" , title : "Toggle Fullscreen (F11)" } , guide : { name : "guide" , action : "http://nextstepwebs.github.io/simplemde-markdown-editor/markdown-guide" , className : "fa fa-question-circle" , title : "Markdown Guide" } } , j = { link : [ "[" , "](http://)" ] , image : [ "![](http://" , ")" ] , horizontalRule : [ "" , "\n\n-----\n\n" ] } ; E . toolbar = [ "bold" , "italic" , "heading" , "|" , "quote" , "unordered-list" , "ordered-list" , "|" , "link" , "image" , "|" , "preview" , "side-by-side" , "fullscreen" , "guide" ] , E . prototype . markdown = function ( e ) { if ( P ) { var t = { } ; return this . options && this . options . renderingConfig && this . options . renderingConfig . singleLineBreaks !== ! 1 && ( t . breaks = ! 0 ) , this . options && this . options . renderingConfig && this . options . renderingConfig . codeSyntaxHighlighting === ! 0 && window . hljs && ( t . highlight = function ( e ) { return window . hljs . highlightAuto ( e ) . value } ) , P . setOptions ( t ) , P ( e ) } } , E . prototype . render = function ( e ) { if ( e || ( e = this . element || document . getElementsByTagName ( "textarea" ) [ 0 ] ) , ! this . _rendered || this . _rendered !== e ) { this . element = e ; var t = this . options , n = this , i = { } ; for ( var o in F ) ! function ( e ) { i [ r ( e ) ] = function ( ) { F [ e ] ( n ) } } ( o ) ; i . Enter = "newlineAndIndentContinueMarkdownList" , i . Tab = "tabAndIndentMarkdownList" , i [ "Shift-Tab" ] = "shiftTabAndUnindentMarkdownList" , i . F11 = function ( ) { a ( n ) } , i . F9 = function ( ) { L ( n ) } , i . Esc = function ( e ) { e . getOption ( "fullScreen" ) && a ( n ) } ; var l , s ; t . spellChecker !== ! 1 ? ( l = "spell-checker" , s = t . parsingConfig , s . name = "gfm" , s . gitHubSpice = ! 1 ) : ( l = t . parsingConfig , l . name = "gfm" , l . gitHubSpice = ! 1 ) , this . codemirror = I . fromTextArea ( e , { mode : l , backdrop : s , theme : "paper" , tabSize : void 0 != t . tabSize ? t . tabSize : 2 , indentUnit : void 0 != t . tabSize ? t . tabSize : 2 , indentWithTabs : t . indentWithTabs === ! 1 ? ! 1 : ! 0 , lineNumbers : ! 1 , autofocus : t . autofocus === ! 0 ? ! 0 : ! 1 , extraKeys : i , lineWrapping : t . lineWrapping === ! 1 ? ! 1 : ! 0 , allowDropFileTypes : [ "text/plain" ] } ) , t . toolbar !== ! 1 && this . createToolbar ( ) , t . status !== ! 1 && this . createStatusbar ( ) , void 0 != t . autosave && t . autosave . enabled === ! 0 && this . autosave ( ) , this . createSideBySide ( ) , this . _rendered = this . element } } , E . prototype . autosave = function ( ) { var e = this . value ( ) , t = this ; if ( void 0 == this . options . autosave . unique _id || "" == this . options . autosave . unique _id ) return void console . log ( "SimpleMDE: You must set a unique_id to use the autosave feature" ) ; null != t . element . form && void 0 != t . element . form && t . element . form . addEventListener ( "submit" , function ( ) { localStorage . setItem ( t . options . autosave . unique _id , "" ) } ) , this . options . autosave . loaded !== ! 0 && ( null != localStorage . getItem ( this . options . autosave . unique _id ) && this . codemirror . setValue ( localStorage . getItem ( this . options . autosave . unique _id ) ) , this . options . autosave . loaded = ! 0 ) , localStorage && localStorage . setItem ( this . options . autosave . unique _id , e ) ; var n = document . getElementById ( "autosaved" ) ; if ( null != n && void 0 != n && "" != n ) { var r = new Date , i = r . getHours ( ) , o = r . getMinutes ( ) , l = "am" , a = i ; a >= 12 && ( a = i - 12 , l = "pm" ) , 0 == a && ( a = 12 ) , o = 10 > o ? "0" + o : o , n . innerHTML = "Autosaved: " + a + ":" + o + " " + l } setTimeout ( function ( ) { t . autosave ( ) } , this . options . autosave . delay || 1e4 ) } , E . prototype . createSideBySide = function ( ) { var e = this . codemirror , t = e . getWrapperElement ( ) , n = t . nextSibling ; n && /editor-preview-side/ . test ( n . className ) || ( n = document . createElement ( "div" ) , n . className = "editor-preview-side" , t . parentNode . insertBefore ( n , t . nextSibling ) ) ; var r = ! 1 , i = ! 1 ; return e . on ( "scroll" , function ( e ) { if ( r ) return void ( r = ! 1 ) ; i = ! 0 ; var t = e . getScrollInfo ( ) . height - e . getScrollInfo ( ) . clientHeight , o = parseFloat ( e . getScrollInfo ( ) . top ) / t , l = ( n . scrollHeight - n . clientHeight ) * o ; n . scrollTop = l } ) , n . onscroll = function ( ) { if ( i ) return void ( i = ! 1 ) ; r = ! 0 ; var t = n . scrollHeight - n . clientHeight , o = parseFloat ( n . scrollTop ) / t , l = ( e . getScrollInfo ( ) . height - e . getScrollInfo ( ) . clientHeight ) * o ; e . scrollTo ( 0 , l ) } , ! 0 } , E . prototype . createToolbar = function ( e ) { if ( e = e || this . options . toolbar , e && 0 !== e . length ) { var t ; for ( t = 0 ; t < e . length ; t ++ ) void 0 != _ [ e [ t ] ] && ( e [ t ] = _ [ e [ t ] ] ) ; var n = document . createElement ( "div" ) ; n . className = "editor-toolbar" ; var r = this , a = { } ; for ( r . toolbar = e , t = 0 ; t < e . length ; t ++ ) ( "guide" != e [ t ] . name || r . options . toolbarGuideIcon !== ! 1 ) && ( r . options . hideIcons && - 1 != r . options . hideIcons . indexOf ( e [ t ] . name ) || ( "fullscreen" != e [ t ] . name && "side-by-side" != e [ t ] . name ||