2015-10-15 13:01:16 +03:00
/ * *
2016-06-14 12:48:07 -05:00
* simplemde v1 . 11.2
2015-10-15 13:01:16 +03:00
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
* /
2016-09-15 14:08:06 +02:00
! 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 e ( t , n , r ) { function i ( a , l ) { if ( ! n [ a ] ) { if ( ! t [ a ] ) { var s = "function" == typeof require && require ; if ( ! l && s ) return s ( a , ! 0 ) ; if ( o ) return o ( a , ! 0 ) ; var c = new Error ( "Cannot find module '" + a + "'" ) ; throw c . code = "MODULE_NOT_FOUND" , c } var u = n [ a ] = { exports : { } } ; t [ a ] [ 0 ] . call ( u . exports , function ( e ) { var n = t [ a ] [ 1 ] [ e ] ; return i ( n ? n : e ) } , u , u . exports , e , t , n , r ) } return n [ a ] . exports } for ( var o = "function" == typeof require && require , a = 0 ; a < r . length ; a ++ ) i ( r [ a ] ) ; return i } ( { 1 : [ function ( e , t , n ) { "use strict" ; function r ( ) { for ( var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" , t = 0 , n = e . length ; t < n ; ++ t ) s [ t ] = e [ t ] , c [ e . charCodeAt ( t ) ] = t ; c [ "-" . charCodeAt ( 0 ) ] = 62 , c [ "_" . charCodeAt ( 0 ) ] = 63 } function i ( e ) { var t , n , r , i , o , a , l = e . length ; if ( l % 4 > 0 ) throw new Error ( "Invalid string. Length must be a multiple of 4" ) ; o = "=" === e [ l - 2 ] ? 2 : "=" === e [ l - 1 ] ? 1 : 0 , a = new u ( 3 * l / 4 - o ) , r = o > 0 ? l - 4 : l ; var s = 0 ; for ( t = 0 , n = 0 ; t < r ; t += 4 , n += 3 ) i = c [ e . charCodeAt ( t ) ] << 18 | c [ e . charCodeAt ( t + 1 ) ] << 12 | c [ e . charCodeAt ( t + 2 ) ] << 6 | c [ e . charCodeAt ( t + 3 ) ] , a [ s ++ ] = i >> 16 & 255 , a [ s ++ ] = i >> 8 & 255 , a [ s ++ ] = 255 & i ; return 2 === o ? ( i = c [ e . charCodeAt ( t ) ] << 2 | c [ e . charCodeAt ( t + 1 ) ] >> 4 , a [ s ++ ] = 255 & i ) : 1 === o && ( i = c [ e . charCodeAt ( t ) ] << 10 | c [ e . charCodeAt ( t + 1 ) ] << 4 | c [ e . charCodeAt ( t + 2 ) ] >> 2 , a [ s ++ ] = i >> 8 & 255 , a [ s ++ ] = 255 & i ) , a } function o ( e ) { return s [ e >> 18 & 63 ] + s [ e >> 12 & 63 ] + s [ e >> 6 & 63 ] + s [ 63 & e ] } function a ( e , t , n ) { for ( var r , i = [ ] , a = t ; a < n ; a += 3 ) r = ( e [ a ] << 16 ) + ( e [ a + 1 ] << 8 ) + e [ a + 2 ] , i . push ( o ( r ) ) ; return i . join ( "" ) } function l ( e ) { for ( var t , n = e . length , r = n % 3 , i = "" , o = [ ] , l = 16383 , c = 0 , u = n - r ; c < u ; c += l ) o . push ( a ( e , c , c + l > u ? u : c + l ) ) ; return 1 === r ? ( t = e [ n - 1 ] , i += s [ t >> 2 ] , i += s [ t << 4 & 63 ] , i += "==" ) : 2 === r && ( t = ( e [ n - 2 ] << 8 ) + e [ n - 1 ] , i += s [ t >> 10 ] , i += s [ t >> 4 & 63 ] , i += s [ t << 2 & 63 ] , i += "=" ) , o . push ( i ) , o . join ( "" ) } n . toByteArray = i , n . fromByteArray = l ; var s = [ ] , c = [ ] , u = "undefined" != typeof Uint8Array ? Uint8Array : Array ; r ( ) } , { } ] , 2 : [ function ( e , t , n ) { } , { } ] , 3 : [ function ( e , t , n ) { ( function ( t ) { "use strict" ; function r ( ) { try { var e = new Uint8Array ( 1 ) ; return e . _ _proto _ _ = { _ _proto _ _ : Uint8Array . prototype , foo : function ( ) { return 42 } } , 42 === e . foo ( ) && "function" == typeof e . subarray && 0 === e . subarray ( 1 , 1 ) . byteLength } catch ( e ) { return ! 1 } } function i ( ) { return a . TYPED _ARRAY _SUPPORT ? 2147483647 : 1073741823 } function o ( e , t ) { if ( i ( ) < t ) throw new RangeError ( "Invalid typed array length" ) ; return a . TYPED _ARRAY _SUPPORT ? ( e = new Uint8Array ( t ) , e . _ _proto _ _ = a . prototype ) : ( null === e && ( e = new a ( t ) ) , e . length = t ) , e } function a ( e , t , n ) { if ( ! ( a . TYPED _ARRAY _SUPPORT || this instanceof a ) ) return new a ( e , t , n ) ; if ( "number" == typeof e ) { if ( "string" == typeof t ) throw new Error ( "If encoding is specified then the first argument must be a string" ) ; return u ( this , e ) } return l ( this , e , t , n ) } function l ( e , t , n , r ) { if ( "number" == typeof t ) throw new TypeError ( '"value" argument must not be a number' ) ; return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? d ( e , t , n , r ) : "string" == typeof t ? f ( e , t , n ) : p ( e , t ) } function s ( e ) { if ( "number" != typeof e ) throw new TypeError ( '"size" argument must be a number' ) ; if ( e < 0 ) throw new RangeError ( '"size" argument must not be negative' ) } function c ( e , t , n , r ) { return s ( t ) , t <= 0 ? o ( e , t ) : void 0 !== n ? "string" == typeof r ? o ( e , t ) . fill ( n , r ) : o ( e , t ) . fill ( n ) : o ( e , t ) } function u ( e , t ) { if ( s ( t ) , e = o ( e , t < 0 ? 0 : 0 | m ( t ) ) , ! a . TYPED _ARRAY _SUPPORT ) for ( var n = 0 ; n < t ; ++ n ) e [ n ] = 0 ; return e } function f ( e , t , n ) { if ( "string" == typeof n && "" !== n || ( n = "utf8" ) , ! a . isEncoding ( n ) ) throw new TypeError ( '"encoding" must be a valid string encoding' ) ; var r = 0 | v ( t , n ) ; e = o ( e , r ) ; var i = e . write ( t , n ) ; return i !== r && ( e = e . slice ( 0 , i ) ) , e } function h ( e , t ) { var n = t . length < 0 ? 0 : 0 | m ( t . length ) ; e = o ( e , n ) ; for ( var r = 0 ; r < n ; r += 1 ) e [ r ] = 255 & t [ r ] ; return e } function d ( e , t , n , r ) { if ( t . byteLength , n < 0 || t . byteLength < n ) throw new RangeError ( "'offset' is out of bounds" ) ; if ( t . byteLength < n + ( r || 0 ) ) throw new RangeError ( "'length' is out of bounds" ) ; return t = void 0 === n && void 0 === r ? new Uint8Array ( t ) : void 0 === r ? new Uint8Array ( t , n ) : new Uint8Array ( t , n , r ) , a . TYPED _ARRAY _SUPPORT ? ( e = t , e . _ _proto _ _ = a . prototype ) : e = h ( e , t ) ,
r . gutters = qi ( "div" , null , "CodeMirror-gutters" ) , r . lineGutter = null , r . scroller = qi ( "div" , [ r . sizer , r . heightForcer , r . gutters ] , "CodeMirror-scroll" ) , r . scroller . setAttribute ( "tabIndex" , "-1" ) , r . wrapper = qi ( "div" , [ r . scrollbarFiller , r . gutterFiller , r . scroller ] , "CodeMirror" ) , wo && ko < 8 && ( r . gutters . style . zIndex = - 1 , r . scroller . style . paddingRight = 0 ) , Co || yo && Oo || ( r . scroller . draggable = ! 0 ) , e && ( e . appendChild ? e . appendChild ( r . wrapper ) : e ( r . wrapper ) ) , r . viewFrom = r . viewTo = t . first , r . reportedViewFrom = r . reportedViewTo = t . first , r . view = [ ] , r . renderedView = null , r . externalMeasured = null , r . viewOffset = 0 , r . lastWrapHeight = r . lastWrapWidth = 0 , r . updateLineNumbers = null , r . nativeBarWidth = r . barHeight = r . barWidth = 0 , r . scrollbarsClipped = ! 1 , r . lineNumWidth = r . lineNumInnerWidth = r . lineNumChars = null , r . alignWidgets = ! 1 , r . cachedCharWidth = r . cachedTextHeight = r . cachedPaddingH = null , r . maxLine = null , r . maxLineLength = 0 , r . maxLineChanged = ! 1 , r . wheelDX = r . wheelDY = r . wheelStartX = r . wheelStartY = null , r . shift = ! 1 , r . selForContextMenu = null , r . activeTouch = null , n . init ( r ) } function n ( t ) { t . doc . mode = e . getMode ( t . options , t . doc . modeOption ) , r ( t ) } function r ( e ) { e . doc . iter ( function ( e ) { e . stateAfter && ( e . stateAfter = null ) , e . styles && ( e . styles = null ) } ) , e . doc . frontier = e . doc . first , _e ( e , 100 ) , e . state . modeGen ++ , e . curOp && Dt ( e ) } function i ( e ) { e . options . lineWrapping ? ( el ( e . display . wrapper , "CodeMirror-wrap" ) , e . display . sizer . style . minWidth = "" , e . display . sizerWidth = null ) : ( Ja ( e . display . wrapper , "CodeMirror-wrap" ) , h ( e ) ) , a ( e ) , Dt ( e ) , st ( e ) , setTimeout ( function ( ) { y ( e ) } , 100 ) } function o ( e ) { var t = xt ( e . display ) , n = e . options . lineWrapping , r = n && Math . max ( 5 , e . display . scroller . clientWidth / bt ( e . display ) - 3 ) ; return function ( i ) { if ( Cr ( e . doc , i ) ) return 0 ; var o = 0 ; if ( i . widgets ) for ( var a = 0 ; a < i . widgets . length ; a ++ ) i . widgets [ a ] . height && ( o += i . widgets [ a ] . height ) ; return n ? o + ( Math . ceil ( i . text . length / r ) || 1 ) * t : o + t } } function a ( e ) { var t = e . doc , n = o ( e ) ; t . iter ( function ( e ) { var t = n ( e ) ; t != e . height && ti ( e , t ) } ) } function l ( e ) { e . display . wrapper . className = e . display . wrapper . className . replace ( /\s*cm-s-\S+/g , "" ) + e . options . theme . replace ( /(^|\s)\s*/g , " cm-s-" ) , st ( e ) } function s ( e ) { c ( e ) , Dt ( e ) , setTimeout ( function ( ) { w ( e ) } , 20 ) } function c ( e ) { var t = e . display . gutters , n = e . options . gutters ; Gi ( t ) ; for ( var r = 0 ; r < n . length ; ++ r ) { var i = n [ r ] , o = t . appendChild ( qi ( "div" , null , "CodeMirror-gutter " + i ) ) ; "CodeMirror-linenumbers" == i && ( e . display . lineGutter = o , o . style . width = ( e . display . lineNumWidth || 1 ) + "px" ) } t . style . display = r ? "" : "none" , u ( e ) } function u ( e ) { var t = e . display . gutters . offsetWidth ; e . display . sizer . style . marginLeft = t + "px" } function f ( e ) { if ( 0 == e . height ) return 0 ; for ( var t , n = e . text . length , r = e ; t = gr ( r ) ; ) { var i = t . find ( 0 , ! 0 ) ; r = i . from . line , n += i . from . ch - i . to . ch } for ( r = e ; t = vr ( r ) ; ) { var i = t . find ( 0 , ! 0 ) ; n -= r . text . length - i . from . ch , r = i . to . line , n += r . text . length - i . to . ch } return n } function h ( e ) { var t = e . display , n = e . doc ; t . maxLine = Qr ( n , n . first ) , t . maxLineLength = f ( t . maxLine ) , t . maxLineChanged = ! 0 , n . iter ( function ( e ) { var n = f ( e ) ; n > t . maxLineLength && ( t . maxLineLength = n , t . maxLine = e ) } ) } function d ( e ) { var t = Ri ( e . gutters , "CodeMirror-linenumbers" ) ; t == - 1 && e . lineNumbers ? e . gutters = e . gutters . concat ( [ "CodeMirror-linenumbers" ] ) : t > - 1 && ! e . lineNumbers && ( e . gutters = e . gutters . slice ( 0 ) , e . gutters . splice ( t , 1 ) ) } function p ( e ) { var t = e . display , n = t . gutters . offsetWidth , r = Math . round ( e . doc . height + qe ( e . display ) ) ; return { clientHeight : t . scroller . clientHeight , viewHeight : t . wrapper . clientHeight , scrollWidth : t . scroller . scrollWidth , clientWidth : t . scroller . clientWidth , viewWidth : t . wrapper . clientWidth , barLeft : e . options . fixedGutter ? n : 0 , docHeight : r , scrollHeight : r + Ye ( e ) + t . barHeight , nativeBarWidth : t . nativeBarWidth , gutterWidth : n } } function m ( e , t , n ) { this . cm = n ; var r = this . vert = qi ( "div" , [ qi ( "div" , null , null , "min-width: 1px" ) ] , "CodeMirror-vscrollbar" ) , i = this . horiz = qi ( "div" , [ qi ( "div" , null , null , "height: 100%; min-height: 1px" ) ] , "CodeMirror-hscrollbar" ) ; e ( r ) , e ( i ) , Ia ( r , "scroll" , function ( ) { r . clientHeight && t ( r . scrollTop , "vertical" ) } ) , Ia ( i , "scroll" , function ( ) { i . clientWidth && t ( i . scrollLeft , "horizontal" ) } ) , this . checkedZeroWidth = ! 1 , wo && ko < 8 && ( this . horiz . style . minHeight = this . vert . style . minWidth = "18px" ) } function g ( ) { } function v ( t ) { t . display . scrollbars && ( t . display . scrollbars . clear ( ) , t . display . scrollbars . addClass && Ja ( t . display .
} function st ( e ) { lt ( e ) , e . display . cachedCharWidth = e . display . cachedTextHeight = e . display . cachedPaddingH = null , e . options . lineWrapping || ( e . display . maxLineChanged = ! 0 ) , e . display . lineNumChars = null } function ct ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function ut ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function ft ( e , t , n , r ) { if ( t . widgets ) for ( var i = 0 ; i < t . widgets . length ; ++ i ) if ( t . widgets [ i ] . above ) { var o = Tr ( t . widgets [ i ] ) ; n . top += o , n . bottom += o } if ( "line" == r ) return n ; r || ( r = "local" ) ; var a = ii ( t ) ; if ( "local" == r ? a += Ue ( e . display ) : a -= e . display . viewOffset , "page" == r || "window" == r ) { var l = e . display . lineSpace . getBoundingClientRect ( ) ; a += l . top + ( "window" == r ? 0 : ut ( ) ) ; var s = l . left + ( "window" == r ? 0 : ct ( ) ) ; n . left += s , n . right += s } return n . top += a , n . bottom += a , n } function ht ( e , t , n ) { if ( "div" == n ) return t ; var r = t . left , i = t . top ; if ( "page" == n ) r -= ct ( ) , i -= ut ( ) ; else if ( "local" == n || ! n ) { var o = e . display . sizer . getBoundingClientRect ( ) ; r += o . left , i += o . top } var a = e . display . lineSpace . getBoundingClientRect ( ) ; return { left : r - a . left , top : i - a . top } } function dt ( e , t , n , r , i ) { return r || ( r = Qr ( e . doc , t . line ) ) , ft ( e , r , Qe ( e , r , t . ch , i ) , n ) } function pt ( e , t , n , r , i , o ) { function a ( t , a ) { var l = tt ( e , i , t , a ? "right" : "left" , o ) ; return a ? l . left = l . right : l . right = l . left , ft ( e , r , l , n ) } function l ( e , t ) { var n = s [ t ] , r = n . level % 2 ; return e == ro ( n ) && t && n . level < s [ t - 1 ] . level ? ( n = s [ -- t ] , e = io ( n ) - ( n . level % 2 ? 0 : 1 ) , r = ! 0 ) : e == io ( n ) && t < s . length - 1 && n . level < s [ t + 1 ] . level && ( n = s [ ++ t ] , e = ro ( n ) - n . level % 2 , r = ! 1 ) , r && e == n . to && e > n . from ? a ( e - 1 ) : a ( e , r ) } r = r || Qr ( e . doc , t . line ) , i || ( i = et ( e , r ) ) ; var s = oi ( r ) , c = t . ch ; if ( ! s ) return a ( c ) ; var u = fo ( s , c ) , f = l ( c , u ) ; return null != sl && ( f . other = l ( c , sl ) ) , f } function mt ( e , t ) { var n = 0 , t = me ( e . doc , t ) ; e . options . lineWrapping || ( n = bt ( e . display ) * t . ch ) ; var r = Qr ( e . doc , t . line ) , i = ii ( r ) + Ue ( e . display ) ; return { left : n , right : n , top : i , bottom : i + r . height } } function gt ( e , t , n , r ) { var i = Fo ( e , t ) ; return i . xRel = r , n && ( i . outside = ! 0 ) , i } function vt ( e , t , n ) { var r = e . doc ; if ( n += e . display . viewOffset , n < 0 ) return gt ( r . first , 0 , ! 0 , - 1 ) ; var i = ri ( r , n ) , o = r . first + r . size - 1 ; if ( i > o ) return gt ( r . first + r . size - 1 , Qr ( r , o ) . text . length , ! 0 , 1 ) ; t < 0 && ( t = 0 ) ; for ( var a = Qr ( r , i ) ; ; ) { var l = yt ( e , a , i , t , n ) , s = vr ( a ) , c = s && s . find ( 0 , ! 0 ) ; if ( ! s || ! ( l . ch > c . from . ch || l . ch == c . from . ch && l . xRel > 0 ) ) return l ; i = ni ( a = c . to . line ) } } function yt ( e , t , n , r , i ) { function o ( r ) { var i = pt ( e , Fo ( n , r ) , "line" , t , c ) ; return l = ! 0 , a > i . bottom ? i . left - s : a < i . top ? i . left + s : ( l = ! 1 , i . left ) } var a = i - ii ( t ) , l = ! 1 , s = 2 * e . display . wrapper . clientWidth , c = et ( e , t ) , u = oi ( t ) , f = t . text . length , h = oo ( t ) , d = ao ( t ) , p = o ( h ) , m = l , g = o ( d ) , v = l ; if ( r > g ) return gt ( n , d , v , 1 ) ; for ( ; ; ) { if ( u ? d == h || d == po ( t , h , 1 ) : d - h <= 1 ) { var y = r < p || r - p <= g - r ? h : d , x = y == h ? m : v , b = r - ( y == h ? p : g ) ; if ( v && ! u && ! /\s/ . test ( t . text . charAt ( y ) ) && b > 0 && y < t . text . length && c . view . measure . heights . length > 1 ) { var w = tt ( e , c , y , "right" ) ; a <= w . bottom && a >= w . top && Math . abs ( r - w . right ) < b && ( x = ! 1 , y ++ , b = r - w . right ) } for ( ; Ui ( t . text . charAt ( y ) ) ; ) ++ y ; var k = gt ( n , y , x , b < - 1 ? - 1 : b > 1 ? 1 : 0 ) ; return k } var C = Math . ceil ( f / 2 ) , S = h + C ; if ( u ) { S = h ; for ( var L = 0 ; L < C ; ++ L ) S = po ( t , S , 1 ) } var T = o ( S ) ; T > r ? ( d = S , g = T , ( v = l ) && ( g += 1e3 ) , f = C ) : ( h = S , p = T , m = l , f -= C ) } } function xt ( e ) { if ( null != e . cachedTextHeight ) return e . cachedTextHeight ; if ( null == Uo ) { Uo = qi ( "pre" ) ; for ( var t = 0 ; t < 49 ; ++ t ) Uo . appendChild ( document . createTextNode ( "x" ) ) , Uo . appendChild ( qi ( "br" ) ) ; Uo . appendChild ( document . createTextNode ( "x" ) ) } Yi ( e . measure , Uo ) ; var n = Uo . offsetHeight / 50 ; return n > 3 && ( e . cachedTextHeight = n ) , Gi ( e . measure ) , n || 1 } function bt ( e ) { if ( null != e . cachedCharWidth ) return e . cachedCharWidth ; var t = qi ( "span" , "xxxxxxxxxx" ) , n = qi ( "pre" , [ t ] ) ; Yi ( e . measure , n ) ; var r = t . getBoundingClientRect ( ) , i = ( r . right - r . left ) / 10 ; return i > 2 && ( e . cachedCharWidth = i ) , i || 10 } function wt ( e ) { e . curOp = { cm : e , viewChanged : ! 1 , startHeight : e . doc . height , forceUpdate : ! 1 , updateInput : null , typing : ! 1 , changeObjs : null , cursorActivityHandlers : null , cursorActivityCalled : 0 , selectionChanged : ! 1 , updateMaxLine : ! 1 , scrollLeft : null , scrollTop : null , scrollToPos : null , focus : ! 1 , id : ++ Vo } , $o ? $o . ops . push ( e . curOp ) : e . curOp . ownsGroup = $o = { ops : [ e . curOp ] , delayedCallbacks : [ ] } } function kt ( e ) { var t = e . delayedCallbacks , n = 0 ; do { for ( ; n < t . length ; n ++ ) t [ n ] . call ( null ) ; for ( var r = 0 ; r < e . ops . length ; r ++ ) { var i = e . ops [ r ] ; if ( i . cursorActivityHandlers ) for ( ; i . cursorActivityCalled < i
s = i ? ( n < 0 ? ao : oo ) ( u ) : n < 0 ? u . text . length : 0 } else s = t ; return ! 0 } var l = t . line , s = t . ch , c = n , u = Qr ( e , l ) ; if ( "char" == r ) a ( ) ; else if ( "column" == r ) a ( ! 0 ) ; else if ( "word" == r || "group" == r ) for ( var f = null , h = "group" == r , d = e . cm && e . cm . getHelper ( t , "wordChars" ) , p = ! 0 ; ! ( n < 0 ) || a ( ! p ) ; p = ! 1 ) { var m = u . text . charAt ( s ) || "\n" , g = zi ( m , d ) ? "w" : h && "\n" == m ? "n" : ! h || /\s/ . test ( m ) ? null : "p" ; if ( ! h || p || g || ( g = "s" ) , f && f != g ) { n < 0 && ( n = 1 , a ( ) ) ; break } if ( g && ( f = g ) , n > 0 && ! a ( ! p ) ) break } var v = Ie ( e , Fo ( l , s ) , t , c , ! 0 ) ; return zo ( t , v ) || ( v . hitSide = ! 0 ) , v } function Gn ( e , t , n , r ) { var i , o = e . doc , a = t . left ; if ( "page" == r ) { var l = Math . min ( e . display . wrapper . clientHeight , window . innerHeight || document . documentElement . clientHeight ) ; i = t . top + n * ( l - ( n < 0 ? 1.5 : . 5 ) * xt ( e . display ) ) } else "line" == r && ( i = n > 0 ? t . bottom + 3 : t . top - 3 ) ; for ( ; ; ) { var s = vt ( e , a , i ) ; if ( ! s . outside ) break ; if ( n < 0 ? i <= 0 : i >= o . height ) { s . hitSide = ! 0 ; break } i += 5 * n } return s } function Yn ( t , n , r , i ) { e . defaults [ t ] = n , r && ( ra [ t ] = i ? function ( e , t , n ) { n != ia && r ( e , t , n ) } : r ) } function $n ( e ) { for ( var t , n , r , i , o = e . split ( /-(?!$)/ ) , e = o [ o . length - 1 ] , a = 0 ; a < o . length - 1 ; a ++ ) { var l = o [ a ] ; if ( /^(cmd|meta|m)$/i . test ( l ) ) i = ! 0 ; else if ( /^a(lt)?$/i . test ( l ) ) t = ! 0 ; else if ( /^(c|ctrl|control)$/i . test ( l ) ) n = ! 0 ; else { if ( ! /^s(hift)$/i . test ( l ) ) throw new Error ( "Unrecognized modifier name: " + l ) ; r = ! 0 } } return t && ( e = "Alt-" + e ) , n && ( e = "Ctrl-" + e ) , i && ( e = "Cmd-" + e ) , r && ( e = "Shift-" + e ) , e } function Vn ( e ) { return "string" == typeof e ? da [ e ] : e } function Kn ( e , t , n , r , i ) { if ( r && r . shared ) return Xn ( e , t , n , r , i ) ; if ( e . cm && ! e . cm . curOp ) return Ot ( e . cm , Kn ) ( e , t , n , r , i ) ; var o = new xa ( e , i ) , a = zo ( t , n ) ; if ( r && _i ( r , o , ! 1 ) , a > 0 || 0 == a && o . clearWhenEmpty !== ! 1 ) return o ; if ( o . replacedWith && ( o . collapsed = ! 0 , o . widgetNode = qi ( "span" , [ o . replacedWith ] , "CodeMirror-widget" ) , r . handleMouseEvents || o . widgetNode . setAttribute ( "cm-ignore-events" , "true" ) , r . insertLeft && ( o . widgetNode . insertLeft = ! 0 ) ) , o . collapsed ) { if ( yr ( e , t . line , t , n , o ) || t . line != n . line && yr ( e , n . line , t , n , o ) ) throw new Error ( "Inserting collapsed marker partially overlapping an existing one" ) ; _o = ! 0 } o . addToHistory && ui ( e , { from : t , to : n , origin : "markText" } , e . sel , NaN ) ; var l , s = t . line , c = e . cm ; if ( e . iter ( s , n . line + 1 , function ( e ) { c && o . collapsed && ! c . options . lineWrapping && xr ( e ) == c . display . maxLine && ( l = ! 0 ) , o . collapsed && s != t . line && ti ( e , 0 ) , rr ( e , new er ( o , s == t . line ? t . ch : null , s == n . line ? n . ch : null ) ) , ++ s } ) , o . collapsed && e . iter ( t . line , n . line + 1 , function ( t ) { Cr ( e , t ) && ti ( t , 0 ) } ) , o . clearOnEnter && Ia ( o , "beforeCursorEnter" , function ( ) { o . clear ( ) } ) , o . readOnly && ( Bo = ! 0 , ( e . history . done . length || e . history . undone . length ) && e . clearHistory ( ) ) , o . collapsed && ( o . id = ++ ya , o . atomic = ! 0 ) , c ) { if ( l && ( c . curOp . updateMaxLine = ! 0 ) , o . collapsed ) Dt ( c , t . line , n . line + 1 ) ; else if ( o . className || o . title || o . startStyle || o . endStyle || o . css ) for ( var u = t . line ; u <= n . line ; u ++ ) Wt ( c , u , "text" ) ; o . atomic && Ne ( c . doc ) , Li ( c , "markerAdded" , c , o ) } return o } function Xn ( e , t , n , r , i ) { r = _i ( r ) , r . shared = ! 1 ; var o = [ Kn ( e , t , n , r , i ) ] , a = o [ 0 ] , l = r . widgetNode ; return Xr ( e , function ( e ) { l && ( r . widgetNode = l . cloneNode ( ! 0 ) ) , o . push ( Kn ( e , me ( e , t ) , me ( e , n ) , r , i ) ) ; for ( var s = 0 ; s < e . linked . length ; ++ s ) if ( e . linked [ s ] . isParent ) return ; a = Pi ( o ) } ) , new ba ( o , a ) } function Zn ( e ) { return e . findMarks ( Fo ( e . first , 0 ) , e . clipPos ( Fo ( e . lastLine ( ) ) ) , function ( e ) { return e . parent } ) } function Qn ( e , t ) { for ( var n = 0 ; n < t . length ; n ++ ) { var r = t [ n ] , i = r . find ( ) , o = e . clipPos ( i . from ) , a = e . clipPos ( i . to ) ; if ( zo ( o , a ) ) { var l = Kn ( e , o , a , r . primary , r . primary . type ) ; r . markers . push ( l ) , l . parent = r } } } function Jn ( e ) { for ( var t = 0 ; t < e . length ; t ++ ) { var n = e [ t ] , r = [ n . primary . doc ] ; Xr ( n . primary . doc , function ( e ) { r . push ( e ) } ) ; for ( var i = 0 ; i < n . markers . length ; i ++ ) { var o = n . markers [ i ] ; Ri ( r , o . doc ) == - 1 && ( o . parent = null , n . markers . splice ( i -- , 1 ) ) } } } function er ( e , t , n ) { this . marker = e , this . from = t , this . to = n } function tr ( e , t ) { if ( e ) for ( var n = 0 ; n < e . length ; ++ n ) { var r = e [ n ] ; if ( r . marker == t ) return r } } function nr ( e , t ) { for ( var n , r = 0 ; r < e . length ; ++ r ) e [ r ] != t && ( n || ( n = [ ] ) ) . push ( e [ r ] ) ; return n } function rr ( e , t ) { e . markedSpans = e . markedSpans ? e . markedSpans . concat ( [ t ] ) : [ t ] , t . marker . attachLine ( e ) } function ir ( e , t , n ) { if ( e ) for ( var r , i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] , a = o . marker , l = null == o . from || ( a . inclusiveLeft ? o . from <= t : o . from < t ) ; if ( l || o . from == t && "bookmark" == a . type && ( ! n || ! o . marker . insertLeft ) ) { var s = null == o . to || ( a . inclusiveRight ? o . to >= t : o . to > t ) ; ( r || ( r = [ ] ) ) . push ( new er ( a , o . from , s ? null : o . to ) ) } } return
n . composing && ( n . poll ( ) , n . composing . range . clear ( ) , n . composing = null ) } ) } , prepareSelection : function ( ) { var e = this . cm , t = e . display , n = e . doc , r = He ( e ) ; if ( e . options . moveInputWithCursor ) { var i = pt ( e , n . sel . primary ( ) . head , "div" ) , o = t . wrapper . getBoundingClientRect ( ) , a = t . lineDiv . getBoundingClientRect ( ) ; r . teTop = Math . max ( 0 , Math . min ( t . wrapper . clientHeight - 10 , i . top + a . top - o . top ) ) , r . teLeft = Math . max ( 0 , Math . min ( t . wrapper . clientWidth - 10 , i . left + a . left - o . left ) ) } return r } , showSelection : function ( e ) { var t = this . cm , n = t . display ; Yi ( n . cursorDiv , e . cursors ) , Yi ( n . selectionDiv , e . selection ) , null != e . teTop && ( this . wrapper . style . top = e . teTop + "px" , this . wrapper . style . left = e . teLeft + "px" ) } , reset : function ( e ) { if ( ! this . contextMenuPending ) { var t , n , r = this . cm , i = r . doc ; if ( r . somethingSelected ( ) ) { this . prevInput = "" ; var o = i . sel . primary ( ) ; t = ol && ( o . to ( ) . line - o . from ( ) . line > 100 || ( n = r . getSelection ( ) ) . length > 1e3 ) ; var a = t ? "-" : n || r . getSelection ( ) ; this . textarea . value = a , r . state . focused && Ga ( this . textarea ) , wo && ko >= 9 && ( this . hasSelection = a ) } else e || ( this . prevInput = this . textarea . value = "" , wo && ko >= 9 && ( this . hasSelection = null ) ) ; this . inaccurateSelection = t } } , getField : function ( ) { return this . textarea } , supportsTouch : function ( ) { return ! 1 } , focus : function ( ) { if ( "nocursor" != this . cm . options . readOnly && ( ! Oo || $i ( ) != this . textarea ) ) try { this . textarea . focus ( ) } catch ( e ) { } } , blur : function ( ) { this . textarea . blur ( ) } , resetPosition : function ( ) { this . wrapper . style . top = this . wrapper . style . left = 0 } , receivedFocus : function ( ) { this . slowPoll ( ) } , slowPoll : function ( ) { var e = this ; e . pollingFast || e . polling . set ( this . cm . options . pollInterval , function ( ) { e . poll ( ) , e . cm . state . focused && e . slowPoll ( ) } ) } , fastPoll : function ( ) { function e ( ) { var r = n . poll ( ) ; r || t ? ( n . pollingFast = ! 1 , n . slowPoll ( ) ) : ( t = ! 0 , n . polling . set ( 60 , e ) ) } var t = ! 1 , n = this ; n . pollingFast = ! 0 , n . polling . set ( 20 , e ) } , poll : function ( ) { var e = this . cm , t = this . textarea , n = this . prevInput ; if ( this . contextMenuPending || ! e . state . focused || il ( t ) && ! n && ! this . composing || e . isReadOnly ( ) || e . options . disableInput || e . state . keySeq ) return ! 1 ; var r = t . value ; if ( r == n && ! e . somethingSelected ( ) ) return ! 1 ; if ( wo && ko >= 9 && this . hasSelection === r || Io && /[\uf700-\uf7ff]/ . test ( r ) ) return e . display . input . reset ( ) , ! 1 ; if ( e . doc . sel == e . display . selForContextMenu ) { var i = r . charCodeAt ( 0 ) ; if ( 8203 != i || n || ( n = " " ) , 8666 == i ) return this . reset ( ) , this . cm . execCommand ( "undo" ) } for ( var o = 0 , a = Math . min ( n . length , r . length ) ; o < a && n . charCodeAt ( o ) == r . charCodeAt ( o ) ; ) ++ o ; var l = this ; return Et ( e , function ( ) { Z ( e , r . slice ( o ) , n . length - o , null , l . composing ? "*compose" : null ) , r . length > 1e3 || r . indexOf ( "\n" ) > - 1 ? t . value = l . prevInput = "" : l . prevInput = r , l . composing && ( l . composing . range . clear ( ) , l . composing . range = e . markText ( l . composing . start , e . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) ) } ) , ! 0 } , ensurePolled : function ( ) { this . pollingFast && this . poll ( ) && ( this . pollingFast = ! 1 ) } , onKeyPress : function ( ) { wo && ko >= 9 && ( this . hasSelection = null ) , this . fastPoll ( ) } , onContextMenu : function ( e ) { function t ( ) { if ( null != a . selectionStart ) { var e = i . somethingSelected ( ) , t = " " + ( e ? a . value : "" ) ; a . value = "⇚" , a . value = t , r . prevInput = e ? "" : " " , a . selectionStart = 1 , a . selectionEnd = t . length , o . selForContextMenu = i . doc . sel } } function n ( ) { if ( r . contextMenuPending = ! 1 , r . wrapper . style . cssText = f , a . style . cssText = u , wo && ko < 9 && o . scrollbars . setScrollTop ( o . scroller . scrollTop = s ) , null != a . selectionStart ) { ( ! wo || wo && ko < 9 ) && t ( ) ; var e = 0 , n = function ( ) { o . selForContextMenu == i . doc . sel && 0 == a . selectionStart && a . selectionEnd > 0 && " " == r . prevInput ? Ot ( i , ha . selectAll ) ( i ) : e ++ < 10 ? o . detectingSelectAll = setTimeout ( n , 500 ) : o . input . reset ( ) } ; o . detectingSelectAll = setTimeout ( n , 200 ) } } var r = this , i = r . cm , o = i . display , a = r . textarea , l = $t ( i , e ) , s = o . scroller . scrollTop ; if ( l && ! To ) { var c = i . options . resetSelectionOnContextMenu ; c && i . doc . sel . contains ( l ) == - 1 && Ot ( i , Te ) ( i . doc , de ( l ) , _a ) ; var u = a . style . cssText , f = r . wrapper . style . cssText ; r . wrapper . style . cssText = "position: absolute" ; var h = r . wrapper . getBoundingClientRect ( ) ; if ( a . style . cssText = "position: absolute; width: 30px; height: 30px; top: " + ( e . clientY - h . top - 5 ) + "px; left: " + ( e . clientX - h . left - 5 ) + "px; z-index: 1000; background: " + ( wo ? "rgba(255, 255, 255, .05)" : "transparent" ) + " ; outline : none ; border - width : 0 ; outline : none ; overflow : hidden ; opacity : . 05 ; filter : alph
"Ctrl-D" : "delCharAfter" , "Ctrl-H" : "delCharBefore" , "Alt-D" : "delWordAfter" , "Alt-Backspace" : "delWordBefore" , "Ctrl-K" : "killLine" , "Ctrl-T" : "transposeChars" , "Ctrl-O" : "openLine" } , da . macDefault = { "Cmd-A" : "selectAll" , "Cmd-D" : "deleteLine" , "Cmd-Z" : "undo" , "Shift-Cmd-Z" : "redo" , "Cmd-Y" : "redo" , "Cmd-Home" : "goDocStart" , "Cmd-Up" : "goDocStart" , "Cmd-End" : "goDocEnd" , "Cmd-Down" : "goDocEnd" , "Alt-Left" : "goGroupLeft" , "Alt-Right" : "goGroupRight" , "Cmd-Left" : "goLineLeft" , "Cmd-Right" : "goLineRight" , "Alt-Backspace" : "delGroupBefore" , "Ctrl-Alt-Backspace" : "delGroupAfter" , "Alt-Delete" : "delGroupAfter" , "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" , "Cmd-Backspace" : "delWrappedLineLeft" , "Cmd-Delete" : "delWrappedLineRight" , "Cmd-U" : "undoSelection" , "Shift-Cmd-U" : "redoSelection" , "Ctrl-Up" : "goDocStart" , "Ctrl-Down" : "goDocEnd" , fallthrough : [ "basic" , "emacsy" ] } , da . default = Io ? da . macDefault : da . pcDefault , e . normalizeKeyMap = function ( e ) { var t = { } ; for ( var n in e ) if ( e . hasOwnProperty ( n ) ) { var r = e [ n ] ; if ( /^(name|fallthrough|(de|at)tach)$/ . test ( n ) ) continue ; if ( "..." == r ) { delete e [ n ] ; continue } for ( var i = Hi ( n . split ( " " ) , $n ) , o = 0 ; o < i . length ; o ++ ) { var a , l ; o == i . length - 1 ? ( l = i . join ( " " ) , a = r ) : ( l = i . slice ( 0 , o + 1 ) . join ( " " ) , a = "..." ) ; var s = t [ l ] ; if ( s ) { if ( s != a ) throw new Error ( "Inconsistent bindings for " + l ) } else t [ l ] = a } delete e [ n ] } for ( var c in t ) e [ c ] = t [ c ] ; return e } ; var pa = e . lookupKey = function ( e , t , n , r ) { t = Vn ( t ) ; var i = t . call ? t . call ( e , r ) : t [ e ] ; if ( i === ! 1 ) return "nothing" ; if ( "..." === i ) return "multi" ; if ( null != i && n ( i ) ) return "handled" ; if ( t . fallthrough ) { if ( "[object Array]" != Object . prototype . toString . call ( t . fallthrough ) ) return pa ( e , t . fallthrough , n , r ) ; for ( var o = 0 ; o < t . fallthrough . length ; o ++ ) { var a = pa ( e , t . fallthrough [ o ] , n , r ) ; if ( a ) return a } } } , ma = e . isModifierKey = function ( e ) { var t = "string" == typeof e ? e : ll [ e . keyCode ] ; return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" == t } , ga = e . keyName = function ( e , t ) { if ( To && 34 == e . keyCode && e . char ) return ! 1 ; var n = ll [ e . keyCode ] , r = n ; return null != r && ! e . altGraphKey && ( e . altKey && "Alt" != n && ( r = "Alt-" + r ) , ( Do ? e . metaKey : e . ctrlKey ) && "Ctrl" != n && ( r = "Ctrl-" + r ) , ( Do ? e . ctrlKey : e . metaKey ) && "Cmd" != n && ( r = "Cmd-" + r ) , ! t && e . shiftKey && "Shift" != n && ( r = "Shift-" + r ) , r ) } ; e . fromTextArea = function ( t , n ) { function r ( ) { t . value = s . getValue ( ) } if ( n = n ? _i ( n ) : { } , n . value = t . value , ! n . tabindex && t . tabIndex && ( n . tabindex = t . tabIndex ) , ! n . placeholder && t . placeholder && ( n . placeholder = t . placeholder ) , null == n . autofocus ) { var i = $i ( ) ; n . autofocus = i == t || null != t . getAttribute ( "autofocus" ) && i == document . body } if ( t . form && ( Ia ( t . form , "submit" , r ) , ! n . leaveSubmitMethodAlone ) ) { var o = t . form , a = o . submit ; try { var l = o . submit = function ( ) { r ( ) , o . submit = a , o . submit ( ) , o . submit = l } } catch ( e ) { } } n . finishInit = function ( e ) { e . save = r , e . getTextArea = function ( ) { return t } , e . toTextArea = function ( ) { e . toTextArea = isNaN , r ( ) , t . parentNode . removeChild ( e . getWrapperElement ( ) ) , t . style . display = "" , t . form && ( Ra ( t . form , "submit" , r ) , "function" == typeof t . form . submit && ( t . form . submit = a ) ) } } , t . style . display = "none" ; var s = e ( function ( e ) { t . parentNode . insertBefore ( e , t . nextSibling ) } , n ) ; return s } ; var va = e . StringStream = function ( e , t ) { this . pos = this . start = 0 , this . string = e , this . tabSize = t || 8 , this . lastColumnPos = this . lastColumnValue = 0 , this . lineStart = 0 } ; va . prototype = { eol : function ( ) { return this . pos >= this . string . length } , sol : function ( ) { return this . pos == this . lineStart } , peek : function ( ) { return this . string . charAt ( this . pos ) || void 0 } , next : function ( ) { if ( this . pos < this . string . length ) return this . string . charAt ( this . pos ++ ) } , eat : function ( e ) { var t = this . string . charAt ( this . pos ) ; if ( "string" == typeof e ) var n = t == e ; else var n = t && ( e . test ? e . test ( t ) : e ( t ) ) ; if ( n ) return ++ this . pos , t } , eatWhile : function ( e ) { for ( var t = this . pos ; this . eat ( e ) ; ) ; return this . pos > t } , eatSpace : function ( ) { for ( var e = this . pos ; /[\s\u00a0]/ . test ( this . string . charAt ( this . pos ) ) ; ) ++ this . pos ; return this . pos > e } , skipToEnd : function ( ) { this . pos = this . string . length } , skipTo : function ( e ) { var t = this . string . indexOf ( e , this . pos ) ; if ( t > - 1 ) return this . pos = t , ! 0 } , backUp : function ( e ) { this . pos -= e } , column : function ( ) { return this . lastColumnPos < this . start && ( this . lastColumnValue = ja ( this . string , this . start , this . tabSize , this . lastC
} function f ( e , t ) { e . match ( t . fencedChars ) , t . block = s , t . f = p , t . fencedChars = null , n . highlightFormatting && ( t . formatting = "code-block" ) , t . code = 1 ; var r = h ( t ) ; return t . code = 0 , r } function h ( e ) { var t = [ ] ; if ( e . formatting ) { t . push ( C . formatting ) , "string" == typeof e . formatting && ( e . formatting = [ e . formatting ] ) ; for ( var r = 0 ; r < e . formatting . length ; r ++ ) t . push ( C . formatting + "-" + e . formatting [ r ] ) , "header" === e . formatting [ r ] && t . push ( C . formatting + "-" + e . formatting [ r ] + "-" + e . header ) , "quote" === e . formatting [ r ] && ( ! n . maxBlockquoteDepth || n . maxBlockquoteDepth >= e . quote ? t . push ( C . formatting + "-" + e . formatting [ r ] + "-" + e . quote ) : t . push ( "error" ) ) } if ( e . taskOpen ) return t . push ( "meta" ) , t . length ? t . join ( " " ) : null ; if ( e . taskClosed ) return t . push ( "property" ) , t . length ? t . join ( " " ) : null ; if ( e . linkHref ? t . push ( C . linkHref , "url" ) : ( e . strong && t . push ( C . strong ) , e . em && t . push ( C . em ) , e . strikethrough && t . push ( C . strikethrough ) , e . linkText && t . push ( C . linkText ) , e . code && t . push ( C . code ) , e . image && t . push ( C . image ) , e . imageAltText && t . push ( C . imageAltText , "link" ) , e . imageMarker && t . push ( C . imageMarker ) ) , e . header && t . push ( C . header , C . header + "-" + e . header ) , e . quote && ( t . push ( C . quote ) , ! n . maxBlockquoteDepth || n . maxBlockquoteDepth >= e . quote ? t . push ( C . quote + "-" + e . quote ) : t . push ( C . quote + "-" + n . maxBlockquoteDepth ) ) , e . list !== ! 1 ) { var i = ( e . listStack . length - 1 ) % 3 ; i ? 1 === i ? t . push ( C . list2 ) : t . push ( C . list3 ) : t . push ( C . list1 ) } return e . trailingSpaceNewLine ? t . push ( "trailing-space-new-line" ) : e . trailingSpace && t . push ( "trailing-space-" + ( e . trailingSpace % 2 ? "a" : "b" ) ) , t . length ? t . join ( " " ) : null } function d ( e , t ) { if ( e . match ( O , ! 0 ) ) return h ( t ) } function p ( t , r ) { var i = r . text ( t , r ) ; if ( "undefined" != typeof i ) return i ; if ( r . list ) return r . list = null , h ( r ) ; if ( r . taskList ) { var a = "x" !== t . match ( A , ! 0 ) [ 1 ] ; return a ? r . taskOpen = ! 0 : r . taskClosed = ! 0 , n . highlightFormatting && ( r . formatting = "task" ) , r . taskList = ! 1 , h ( r ) } if ( r . taskOpen = ! 1 , r . taskClosed = ! 1 , r . header && t . match ( /^#+$/ , ! 0 ) ) return n . highlightFormatting && ( r . formatting = "header" ) , h ( r ) ; var l = t . sol ( ) , s = t . next ( ) ; if ( r . linkTitle ) { r . linkTitle = ! 1 ; var u = s ; "(" === s && ( u = ")" ) , u = ( u + "" ) . replace ( /([.?*+^$[\]\\(){}|-])/g , "\\$1" ) ; var f = "^\\s*(?:[^" + u + "\\\\]+|\\\\\\\\|\\\\.)" + u ; if ( t . match ( new RegExp ( f ) , ! 0 ) ) return C . linkHref } if ( "`" === s ) { var d = r . formatting ; n . highlightFormatting && ( r . formatting = "code" ) , t . eatWhile ( "`" ) ; var p = t . current ( ) . length ; if ( 0 == r . code ) return r . code = p , h ( r ) ; if ( p == r . code ) { var v = h ( r ) ; return r . code = 0 , v } return r . formatting = d , h ( r ) } if ( r . code ) return h ( r ) ; if ( "\\" === s && ( t . next ( ) , n . highlightFormatting ) ) { var y = h ( r ) , x = C . formatting + "-escape" ; return y ? y + " " + x : x } if ( "!" === s && t . match ( /\[[^\]]*\] ?(?:\(|\[)/ , ! 1 ) ) return r . imageMarker = ! 0 , r . image = ! 0 , n . highlightFormatting && ( r . formatting = "image" ) , h ( r ) ; if ( "[" === s && r . imageMarker ) return r . imageMarker = ! 1 , r . imageAltText = ! 0 , n . highlightFormatting && ( r . formatting = "image" ) , h ( r ) ; if ( "]" === s && r . imageAltText ) { n . highlightFormatting && ( r . formatting = "image" ) ; var y = h ( r ) ; return r . imageAltText = ! 1 , r . image = ! 1 , r . inline = r . f = g , y } if ( "[" === s && t . match ( /[^\]]*\](\(.*\)| ?\[.*?\])/ , ! 1 ) && ! r . image ) return r . linkText = ! 0 , n . highlightFormatting && ( r . formatting = "link" ) , h ( r ) ; if ( "]" === s && r . linkText && t . match ( /\(.*?\)| ?\[.*?\]/ , ! 1 ) ) { n . highlightFormatting && ( r . formatting = "link" ) ; var y = h ( r ) ; return r . linkText = ! 1 , r . inline = r . f = g , y } if ( "<" === s && t . match ( /^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/ , ! 1 ) ) { r . f = r . inline = m , n . highlightFormatting && ( r . formatting = "link" ) ; var y = h ( r ) ; return y ? y += " " : y = "" , y + C . linkInline } if ( "<" === s && t . match ( /^[^> \\]+@(?:[^\\>]|\\.)+>/ , ! 1 ) ) { r . f = r . inline = m , n . highlightFormatting && ( r . formatting = "link" ) ; var y = h ( r ) ; return y ? y += " " : y = "" , y + C . linkEmail } if ( "<" === s && t . match ( /^(!--|\w)/ , ! 1 ) ) { var b = t . string . indexOf ( ">" , t . pos ) ; if ( b != - 1 ) { var k = t . string . substring ( t . start , b ) ; /markdown\s*=\s*('|"){0,1}1('|"){0,1}/ . test ( k ) && ( r . md _inside = ! 0 ) } return t . backUp ( 1 ) , r . htmlState = e . startState ( w ) , o ( t , r , c ) } if ( "<" === s && t . match ( /^\/\w*?>/ ) ) return r . md _inside = ! 1 , "tag" ; var S = ! 1 ; if ( ! n . underscoresBreakWords && "_" === s && "_" !== t . peek ( ) && t . match ( /(\w)/ , ! 1 ) ) { var L = t . pos - 2 ; if ( L >= 0 ) { var T = t . string . charAt ( L ) ; "_" !== T && T . match ( /(\w)/ , ! 1 ) && ( S = ! 0 ) } } if ( "*" === s || "_" === s && ! S ) if ( l && " " === t . peek ( ) ) ; else { if ( r . strong === s && t . eat ( s ) ) { n . highlightFormatting && ( r . formatting = "strong" ) ; var v = h ( r ) ; return r . strong = ! 1 , v } if
this . tokens . push ( { type : "code" , lang : o [ 2 ] , text : o [ 3 ] || "" } ) ; else if ( o = this . rules . heading . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "heading" , depth : o [ 1 ] . length , text : o [ 2 ] } ) ; else if ( t && ( o = this . rules . nptable . exec ( e ) ) ) { for ( e = e . substring ( o [ 0 ] . length ) , s = { type : "table" , header : o [ 1 ] . replace ( /^ *| *\| *$/g , "" ) . split ( / *\| */ ) , align : o [ 2 ] . replace ( /^ *|\| *$/g , "" ) . split ( / *\| */ ) , cells : o [ 3 ] . replace ( /\n$/ , "" ) . split ( "\n" ) } , u = 0 ; u < s . align . length ; u ++ ) / ^ * - + : * $ / . test ( s . align [ u ] ) ? s . align [ u ] = "right" : /^ *:-+: *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "center" : /^ *:-+ *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "left" : s . align [ u ] = null ; for ( u = 0 ; u < s . cells . length ; u ++ ) s . cells [ u ] = s . cells [ u ] . split ( / *\| */ ) ; this . tokens . push ( s ) } else if ( o = this . rules . lheading . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "heading" , depth : "=" === o [ 2 ] ? 1 : 2 , text : o [ 1 ] } ) ; else if ( o = this . rules . hr . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "hr" } ) ; else if ( o = this . rules . blockquote . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "blockquote_start" } ) , o = o [ 0 ] . replace ( /^ *> ?/gm , "" ) , this . token ( o , t , ! 0 ) , this . tokens . push ( { type : "blockquote_end" } ) ; else if ( o = this . rules . list . exec ( e ) ) { for ( e = e . substring ( o [ 0 ] . length ) , a = o [ 2 ] , this . tokens . push ( { type : "list_start" , ordered : a . length > 1 } ) , o = o [ 0 ] . match ( this . rules . item ) , r = ! 1 , f = o . length , u = 0 ; u < f ; u ++ ) s = o [ u ] , c = s . length , s = s . replace ( /^ *([*+-]|\d+\.) +/ , "" ) , ~ s . indexOf ( "\n " ) && ( c -= s . length , s = this . options . pedantic ? s . replace ( /^ {1,4}/gm , "" ) : s . replace ( new RegExp ( "^ {1," + c + "}" , "gm" ) , "" ) ) , this . options . smartLists && u !== f - 1 && ( l = d . bullet . exec ( o [ u + 1 ] ) [ 0 ] , a === l || a . length > 1 && l . length > 1 || ( e = o . slice ( u + 1 ) . join ( "\n" ) + e , u = f - 1 ) ) , i = r || /\n\n(?!\s*$)/ . test ( s ) , u !== f - 1 && ( r = "\n" === s . charAt ( s . length - 1 ) , i || ( i = r ) ) , this . tokens . push ( { type : i ? "loose_item_start" : "list_item_start" } ) , this . token ( s , ! 1 , n ) , this . tokens . push ( { type : "list_item_end" } ) ; this . tokens . push ( { type : "list_end" } ) } else if ( o = this . rules . html . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : this . options . sanitize ? "paragraph" : "html" , pre : ! this . options . sanitizer && ( "pre" === o [ 1 ] || "script" === o [ 1 ] || "style" === o [ 1 ] ) , text : o [ 0 ] } ) ; else if ( ! n && t && ( o = this . rules . def . exec ( e ) ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . links [ o [ 1 ] . toLowerCase ( ) ] = { href : o [ 2 ] , title : o [ 3 ] } ; else if ( t && ( o = this . rules . table . exec ( e ) ) ) { for ( e = e . substring ( o [ 0 ] . length ) , s = { type : "table" , header : o [ 1 ] . replace ( /^ *| *\| *$/g , "" ) . split ( / *\| */ ) , align : o [ 2 ] . replace ( /^ *|\| *$/g , "" ) . split ( / *\| */ ) , cells : o [ 3 ] . replace ( /(?: *\| *)?\n$/ , "" ) . split ( "\n" ) } , u = 0 ; u < s . align . length ; u ++ ) / ^ * - + : * $ / . test ( s . align [ u ] ) ? s . align [ u ] = "right" : /^ *:-+: *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "center" : /^ *:-+ *$/ . test ( s . align [ u ] ) ? s . align [ u ] = "left" : s . align [ u ] = null ; for ( u = 0 ; u < s . cells . length ; u ++ ) s . cells [ u ] = s . cells [ u ] . replace ( /^ *\| *| *\| *$/g , "" ) . split ( / *\| */ ) ; this . tokens . push ( s ) } else if ( t && ( o = this . rules . paragraph . exec ( e ) ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "paragraph" , text : "\n" === o [ 1 ] . charAt ( o [ 1 ] . length - 1 ) ? o [ 1 ] . slice ( 0 , - 1 ) : o [ 1 ] } ) ; else if ( o = this . rules . text . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , this . tokens . push ( { type : "text" , text : o [ 0 ] } ) ; else if ( e ) throw new Error ( "Infinite loop on byte: " + e . charCodeAt ( 0 ) ) ; return this . tokens } ; var p = { escape : /^\\([\\`*{}\[\]()#+\-.!_>])/ , autolink : /^<([^ >]+(@|:\/)[^ >]+)>/ , url : u , tag : /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/ , link : /^!?\[(inside)\]\(href\)/ , reflink : /^!?\[(inside)\]\s*\[([^\]]*)\]/ , nolink : /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/ , strong : /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/ , em : /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/ , code : /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/ , br : /^ {2,}\n(?!\s*$)/ , del : u , text : /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/ } ; p . _inside = /(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/ , p . _href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/ , p . link = c ( p . link ) ( "inside" , p . _inside ) ( "href" , p . _href ) ( ) , p . reflink = c ( p . reflink ) ( "inside" , p . _inside ) ( ) , p . normal = f ( { } , p ) , p . pedantic = f ( { } , p . normal , { strong : /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/ , em : /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/ } ) , p . gfm = f ( { } , p . normal , { escape : c ( p . escape ) ( "])" , "~|])" ) ( ) , url : /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/ , del : / ^ ~ ~ ( ?
var z = e ( "codemirror-spell-checker" ) , j = e ( "marked" ) , U = /Mac/ . test ( navigator . platform ) , q = { toggleBold : c , toggleItalic : u , drawLink : k , toggleHeadingSmaller : p , toggleHeadingBigger : m , drawImage : C , toggleBlockquote : d , toggleOrderedList : b , toggleUnorderedList : x , toggleCodeBlock : h , togglePreview : N , toggleStrikethrough : f , toggleHeading1 : g , toggleHeading2 : v , toggleHeading3 : y , cleanBlock : w , drawTable : S , drawHorizontalRule : L , undo : T , redo : M , toggleSideBySide : A , toggleFullScreen : s } , G = { toggleBold : "Cmd-B" , toggleItalic : "Cmd-I" , drawLink : "Cmd-K" , toggleHeadingSmaller : "Cmd-H" , toggleHeadingBigger : "Shift-Cmd-H" , cleanBlock : "Cmd-E" , drawImage : "Cmd-Alt-I" , toggleBlockquote : "Cmd-'" , toggleOrderedList : "Cmd-Alt-L" , toggleUnorderedList : "Cmd-L" , toggleCodeBlock : "Cmd-Alt-C" , togglePreview : "Cmd-P" , toggleSideBySide : "F9" , toggleFullScreen : "F11" } , Y = function ( e ) { for ( var t in q ) if ( q [ t ] === e ) return t ; return null } , $ = function ( ) { var e = ! 1 ; return function ( t ) { ( /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i . test ( t ) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i . test ( t . substr ( 0 , 4 ) ) ) && ( e = ! 0 ) } ( navigator . userAgent || navigator . vendor || window . opera ) , e } , V = "" , K = { bold : { name : "bold" , action : c , className : "fa fa-bold" , title : "Bold" , default : ! 0 } , italic : { name : "italic" , action : u , className : "fa fa-italic" , title : "Italic" , default : ! 0 } , strikethrough : { name : "strikethrough" , action : f , className : "fa fa-strikethrough" , title : "Strikethrough" } , heading : { name : "heading" , action : p , className : "fa fa-header" , title : "Heading" , default : ! 0 } , "heading-smaller" : { name : "heading-smaller" , action : p , className : "fa fa-header fa-header-x fa-header-smaller" , title : "Smaller Heading" } , "heading-bigger" : { name : "heading-bigger" , action : m , className : "fa fa-header fa-header-x fa-header-bigger" , title : "Bigger Heading" } , "heading-1" : { name : "heading-1" , action : g , className : "fa fa-header fa-header-x fa-header-1" , title : "Big Heading" } , "heading-2" : { name : "heading-2" , action : v , className : "fa fa-header fa-header-x fa-header-2" , title : "Medium Heading" } , "heading-3" : { name : "heading-3" , action : y , className : "fa fa-header fa-header-x fa-header-3" , title : "Small Heading" } , "separator-1" : { name : "separator-1" } , code : { name : "code" , action : h , className : "fa fa-code" , title : "Code" } , quote : { name : "quote" , action : d , className : "fa fa-quote-left" , title : "Quote" , default : ! 0 } , "unordered-list" : { name : " un