function simpleUpload ( e , l , n ) { function t ( ) { if ( "object" == typeof n && null !== n ) { if ( "boolean" == typeof n . forceIframe && ( U = n . forceIframe ) , "function" == typeof n . init && ( I = n . init ) , "function" == typeof n . start && ( L = n . start ) , "function" == typeof n . progress && ( q = n . progress ) , "function" == typeof n . success && ( W = n . success ) , "function" == typeof n . error && ( _ = n . error ) , "function" == typeof n . cancel && ( M = n . cancel ) , "function" == typeof n . complete && ( D = n . complete ) , "function" == typeof n . finish && ( N = n . finish ) , "string" == typeof n . hashWorker && "" != n . hashWorker && ( S = n . hashWorker ) , "function" == typeof n . hashComplete && ( z = n . hashComplete ) , "object" == typeof n . data && null !== n . data ) for ( var e in n . data ) F [ e ] = n . data [ e ] ; if ( "number" == typeof n . limit && y ( n . limit ) && n . limit > 0 && ( w = n . limit ) , "number" == typeof n . maxFileSize && y ( n . maxFileSize ) && n . maxFileSize > 0 && ( x = n . maxFileSize ) , "object" == typeof n . allowedExts && null !== n . allowedExts ) for ( var e in n . allowedExts ) j . push ( n . allowedExts [ e ] ) ; if ( "object" == typeof n . allowedTypes && null !== n . allowedTypes ) for ( var e in n . allowedTypes ) k . push ( n . allowedTypes [ e ] ) ; if ( "string" == typeof n . expect && "" != n . expect ) { var t = n . expect . toLowerCase ( ) , o = [ "auto" , "json" , "xml" , "html" , "script" , "text" ] ; for ( var e in o ) if ( o [ e ] == t ) { E = t ; break } } if ( "object" == typeof n . xhrFields && null !== n . xhrFields ) for ( var e in n . xhrFields ) T [ e ] = n . xhrFields [ e ] } if ( "object" == typeof l && null !== l && l instanceof jQuery ) { if ( ! ( l . length > 0 ) ) return ! 1 ; l = l . get ( 0 ) } if ( ! U && window . File && window . FileReader && window . FileList && window . Blob && ( "object" == typeof n && null !== n && "object" == typeof n . files && null !== n . files ? b = n . files : "object" == typeof l && null !== l && "object" == typeof l . files && null !== l . files && ( b = l . files ) ) , ( "object" != typeof l || null === l ) && null == b ) return ! 1 ; "object" == typeof n && null !== n && "string" == typeof n . name && "" != n . name ? C = n . name . replace ( /\[\s*\]/g , "[0]" ) : "object" == typeof l && null !== l && "string" == typeof l . name && "" != l . name && ( C = l . name . replace ( /\[\s*\]/g , "[0]" ) ) ; var r = 0 ; if ( null != b ? b . length > 0 && ( r = b . length > 1 && window . FormData && $ . ajaxSettings . xhr ( ) . upload ? w > 0 && b . length > w ? w : b . length : 1 ) : "" != l . value && ( r = 1 ) , r > 0 ) { if ( "object" == typeof l && null !== l ) { var i = $ ( l ) ; J = $ ( "<form>" ) . hide ( ) . attr ( "enctype" , "multipart/form-data" ) . attr ( "method" , "post" ) . appendTo ( "body" ) , i . after ( i . clone ( ! 0 ) . val ( "" ) ) . removeAttr ( "onchange" ) . off ( ) . removeAttr ( "id" ) . attr ( "name" , C ) . appendTo ( J ) } for ( var s = 0 ; r > s ; s ++ ) ! function ( e ) { R [ e ] = { state : 0 , hashWorker : null , xhr : null , iframe : null } , A [ e ] = { upload : { index : e , state : "init" , file : null != b ? b [ e ] : { name : l . value . split ( /(\\|\/)/g ) . pop ( ) } , cancel : function ( ) { if ( 0 == u ( e ) ) d ( e , 4 ) ; else { if ( 1 != u ( e ) ) return ! 1 ; d ( e , 4 ) , null != R [ e ] . hashWorker && ( R [ e ] . hashWorker . terminate ( ) , R [ e ] . hashWorker = null ) , null != R [ e ] . xhr && ( R [ e ] . xhr . abort ( ) , R [ e ] . xhr = null ) , null != R [ e ] . iframe && ( $ ( "iframe[name=simpleUpload_iframe_" + R [ e ] . iframe + "]" ) . attr ( "src" , "javascript:false;" ) , simpleUpload . dequeueIframe ( R [ e ] . iframe ) , R [ e ] . iframe = null ) , P ( e ) } return ! 0 } } } } ( s ) ; var p = H ( r ) ; if ( p !== ! 1 ) { var f = r ; if ( "number" == typeof p && y ( p ) && p >= 0 && r > p ) { f = p ; for ( var m = f ; r > m ; m ++ ) d ( m , 4 ) } for ( var c = [ ] , v = 0 ; f > v ; v ++ ) X ( v , A [ v ] . upload . file ) !== ! 1 && ( c [ c . length ] = v ) ; c . length > 0 ? ( B = c . length , simpleUpload . queueUpload ( c , function ( e ) { a ( e ) } ) , simpleUpload . uploadNext ( ) ) : Z ( ) } else { for ( var m in A ) d ( m , 4 ) ; Z ( ) } } } function a ( e ) { if ( 1 == u ( e ) ) { var n = null ; if ( null != b ) { if ( void 0 == b [ e ] || null == b [ e ] ) return void K ( e , { name : "InternalError" , message : "There was an error uploading the file" } ) ; n = b [ e ] } else if ( "" == l . value ) return void K ( e , { name : "InternalError" , message : "There was an error uploading the file" } ) ; return j . length > 0 && ! c ( j , n ) ? void K ( e , { name : "InvalidFileExtensionError" , message : "That file format is not allowed" } ) : k . length > 0 && ! v ( k , n ) ? void K ( e , { name : "InvalidFileTypeError" , message : "That file format is not allowed" } ) : x > 0 && ! h ( x , n ) ? void K ( e , { name : "MaxFileSizeError" , message : "That file is too big" } ) : void ( null != S && null != z ? o ( e ) : i ( e ) ) } } function o ( e ) { if ( null != b && void 0 != b [ e ] && null != b [ e ] && window . Worker ) { var l = b [ e ] ; if ( void 0 != l . size && null != l . size && "" != l . size && y ( l . size ) && ( l . slice || l . webkitSlice || l . mozSlice ) ) try { var n = new Worker ( S ) ; n . addEventListener ( "error" , function ( ) { n . terminate ( ) , R [ e ] . hashWorker = null , i ( e ) } , ! 1 ) , n . addEventListener ( "message" , function ( l ) { if ( l . data . result ) { var t = l . data . result ; n . terminate ( ) , R [ e ] . h
case 47 : case 98 : case 116 : case 110 : case 102 : case 114 : value += Unescapes [ charCode ] , Index ++ ; break ; case 117 : for ( begin = ++ Index , position = Index + 4 ; Index < position ; Index ++ ) charCode = source . charCodeAt ( Index ) , charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70 || abort ( ) ; value += fromCharCode ( "0x" + source . slice ( begin , Index ) ) ; break ; default : abort ( ) } else { if ( 34 == charCode ) break ; for ( charCode = source . charCodeAt ( Index ) , begin = Index ; charCode >= 32 && 92 != charCode && 34 != charCode ; ) charCode = source . charCodeAt ( ++ Index ) ; value += source . slice ( begin , Index ) } if ( 34 == source . charCodeAt ( Index ) ) return Index ++ , value ; abort ( ) ; default : if ( begin = Index , 45 == charCode && ( isSigned = ! 0 , charCode = source . charCodeAt ( ++ Index ) ) , charCode >= 48 && charCode <= 57 ) { for ( 48 == charCode && ( charCode = source . charCodeAt ( Index + 1 ) , charCode >= 48 && charCode <= 57 ) && abort ( ) , isSigned = ! 1 ; Index < length && ( charCode = source . charCodeAt ( Index ) , charCode >= 48 && charCode <= 57 ) ; Index ++ ) ; if ( 46 == source . charCodeAt ( Index ) ) { for ( position = ++ Index ; position < length && ( charCode = source . charCodeAt ( position ) , charCode >= 48 && charCode <= 57 ) ; position ++ ) ; position == Index && abort ( ) , Index = position } if ( charCode = source . charCodeAt ( Index ) , 101 == charCode || 69 == charCode ) { for ( charCode = source . charCodeAt ( ++ Index ) , 43 != charCode && 45 != charCode || Index ++ , position = Index ; position < length && ( charCode = source . charCodeAt ( position ) , charCode >= 48 && charCode <= 57 ) ; position ++ ) ; position == Index && abort ( ) , Index = position } return + source . slice ( begin , Index ) } if ( isSigned && abort ( ) , "true" == source . slice ( Index , Index + 4 ) ) return Index += 4 , ! 0 ; if ( "false" == source . slice ( Index , Index + 5 ) ) return Index += 5 , ! 1 ; if ( "null" == source . slice ( Index , Index + 4 ) ) return Index += 4 , null ; abort ( ) } return "$" } , get = function ( value ) { var results , hasMembers ; if ( "$" == value && abort ( ) , "string" == typeof value ) { if ( "@" == ( charIndexBuggy ? value . charAt ( 0 ) : value [ 0 ] ) ) return value . slice ( 1 ) ; if ( "[" == value ) { for ( results = [ ] ; value = lex ( ) , "]" != value ; hasMembers || ( hasMembers = ! 0 ) ) hasMembers && ( "," == value ? ( value = lex ( ) , "]" == value && abort ( ) ) : abort ( ) ) , "," == value && abort ( ) , results . push ( get ( value ) ) ; return results } if ( "{" == value ) { for ( results = { } ; value = lex ( ) , "}" != value ; hasMembers || ( hasMembers = ! 0 ) ) hasMembers && ( "," == value ? ( value = lex ( ) , "}" == value && abort ( ) ) : abort ( ) ) , "," != value && "string" == typeof value && "@" == ( charIndexBuggy ? value . charAt ( 0 ) : value [ 0 ] ) && ":" == lex ( ) || abort ( ) , results [ value . slice ( 1 ) ] = get ( lex ( ) ) ; return results } abort ( ) } return value } , update = function ( source , property , callback ) { var element = walk ( source , property , callback ) ; element === undef ? delete source [ property ] : source [ property ] = element } , walk = function ( source , property , callback ) { var length , value = source [ property ] ; if ( "object" == typeof value && value ) if ( getClass . call ( value ) == arrayClass ) for ( length = value . length ; length -- ; ) update ( value , length , callback ) ; else forEach ( value , function ( property ) { update ( value , property , callback ) } ) ; return callback . call ( source , property , value ) } ; exports . parse = function ( source , callback ) { var result , value ; return Index = 0 , Source = "" + source , result = get ( lex ( ) ) , "$" != lex ( ) && abort ( ) , Index = Source = null , callback && getClass . call ( callback ) == functionClass ? walk ( ( value = { } , value [ "" ] = result , value ) , "" , callback ) : result } } } return exports . runInContext = runInContext , exports } var isLoader = "function" == typeof define && define . amd , objectTypes = { function : ! 0 , object : ! 0 } , freeExports = objectTypes [ typeof exports ] && exports && ! exports . nodeType && exports , root = objectTypes [ typeof window ] && window || this , freeGlobal = freeExports && objectTypes [ typeof module ] && module && ! module . nodeType && "object" == typeof global && global ; if ( ! freeGlobal || freeGlobal . global !== freeGlobal && freeGlobal . window !== freeGlobal && freeGlobal . self !== freeGlobal || ( root = freeGlobal ) , freeExports && ! isLoader ) runInContext ( root , freeExports ) ; else { var nativeJSON = root . JSON , previousJSON = root . JSON3 , isRestored = ! 1 , JSON3 = runInContext ( root , root . JSON3 = { noConflict : function ( ) { return isRestored || ( isRestored = ! 0 , root . JSON = nativeJSON , root . JSON3 = previousJSON , nativeJSON = previousJSON = null ) , JSON3 } } ) ; root . JSON = { parse : JSON3 . parse , stringify : JSON3 . stringify } } isLoader && define ( function ( ) { return JSON3 } ) } ) . call ( this ) } ) . call ( exports , _ _webpack _require _ _ ( 8 ) ( module ) , function ( ) { return this } ( ) ) } , function ( module , exports ) { module . exports = functio
} catch ( e ) { return void setTimeout ( function ( ) { self . onError ( e ) } , 0 ) } global . document && ( this . index = Request . requestsCount ++ , Request . requests [ this . index ] = this ) } , Request . prototype . onSuccess = function ( ) { this . emit ( "success" ) , this . cleanup ( ) } , Request . prototype . onData = function ( data ) { this . emit ( "data" , data ) , this . onSuccess ( ) } , Request . prototype . onError = function ( err ) { this . emit ( "error" , err ) , this . cleanup ( ! 0 ) } , Request . prototype . cleanup = function ( fromError ) { if ( "undefined" != typeof this . xhr && null !== this . xhr ) { if ( this . hasXDR ( ) ? this . xhr . onload = this . xhr . onerror = empty : this . xhr . onreadystatechange = empty , fromError ) try { this . xhr . abort ( ) } catch ( e ) { } global . document && delete Request . requests [ this . index ] , this . xhr = null } } , Request . prototype . onLoad = function ( ) { var data ; try { var contentType ; try { contentType = this . xhr . getResponseHeader ( "Content-Type" ) . split ( ";" ) [ 0 ] } catch ( e ) { } if ( "application/octet-stream" === contentType ) data = this . xhr . response || this . xhr . responseText ; else if ( this . supportsBinary ) try { data = String . fromCharCode . apply ( null , new Uint8Array ( this . xhr . response ) ) } catch ( e ) { for ( var ui8Arr = new Uint8Array ( this . xhr . response ) , dataArray = [ ] , idx = 0 , length = ui8Arr . length ; idx < length ; idx ++ ) dataArray . push ( ui8Arr [ idx ] ) ; data = String . fromCharCode . apply ( null , dataArray ) } else data = this . xhr . responseText } catch ( e ) { this . onError ( e ) } null != data && this . onData ( data ) } , Request . prototype . hasXDR = function ( ) { return "undefined" != typeof global . XDomainRequest && ! this . xs && this . enablesXDR } , Request . prototype . abort = function ( ) { this . cleanup ( ) } , Request . requestsCount = 0 , Request . requests = { } , global . document && ( global . attachEvent ? global . attachEvent ( "onunload" , unloadHandler ) : global . addEventListener && global . addEventListener ( "beforeunload" , unloadHandler , ! 1 ) ) } ) . call ( exports , function ( ) { return this } ( ) ) } , function ( module , exports , _ _webpack _require _ _ ) { function Polling ( opts ) { var forceBase64 = opts && opts . forceBase64 ; hasXHR2 && ! forceBase64 || ( this . supportsBinary = ! 1 ) , Transport . call ( this , opts ) } var Transport = _ _webpack _require _ _ ( 22 ) , parseqs = _ _webpack _require _ _ ( 32 ) , parser = _ _webpack _require _ _ ( 23 ) , inherit = _ _webpack _require _ _ ( 33 ) , yeast = _ _webpack _require _ _ ( 34 ) , debug = _ _webpack _require _ _ ( 3 ) ( "engine.io-client:polling" ) ; module . exports = Polling ; var hasXHR2 = function ( ) { var XMLHttpRequest = _ _webpack _require _ _ ( 18 ) , xhr = new XMLHttpRequest ( { xdomain : ! 1 } ) ; return null != xhr . responseType } ( ) ; inherit ( Polling , Transport ) , Polling . prototype . name = "polling" , Polling . prototype . doOpen = function ( ) { this . poll ( ) } , Polling . prototype . pause = function ( onPause ) { function pause ( ) { debug ( "paused" ) , self . readyState = "paused" , onPause ( ) } var self = this ; if ( this . readyState = "pausing" , this . polling || ! this . writable ) { var total = 0 ; this . polling && ( debug ( "we are currently polling - waiting to pause" ) , total ++ , this . once ( "pollComplete" , function ( ) { debug ( "pre-pause polling complete" ) , -- total || pause ( ) } ) ) , this . writable || ( debug ( "we are currently writing - waiting to pause" ) , total ++ , this . once ( "drain" , function ( ) { debug ( "pre-pause writing complete" ) , -- total || pause ( ) } ) ) } else pause ( ) } , Polling . prototype . poll = function ( ) { debug ( "polling" ) , this . polling = ! 0 , this . doPoll ( ) , this . emit ( "poll" ) } , Polling . prototype . onData = function ( data ) { var self = this ; debug ( "polling got data %s" , data ) ; var callback = function ( packet , index , total ) { return "opening" === self . readyState && self . onOpen ( ) , "close" === packet . type ? ( self . onClose ( ) , ! 1 ) : void self . onPacket ( packet ) } ; parser . decodePayload ( data , this . socket . binaryType , callback ) , "closed" !== this . readyState && ( this . polling = ! 1 , this . emit ( "pollComplete" ) , "open" === this . readyState ? this . poll ( ) : debug ( 'ignoring poll - transport state "%s"' , this . readyState ) ) } , Polling . prototype . doClose = function ( ) { function close ( ) { debug ( "writing close packet" ) , self . write ( [ { type : "close" } ] ) } var self = this ; "open" === this . readyState ? ( debug ( "transport open - closing" ) , close ( ) ) : ( debug ( "transport not open - deferring close" ) , this . once ( "open" , close ) ) } , Polling . prototype . write = function ( packets ) { var self = this ; this . writable = ! 1 ; var callbackfn = function ( ) { self . writable = ! 0 , self . emit ( "drain" ) } ; parser . encodePayload ( packets , this . supportsBinary , function ( data ) { self . doWrite ( data , callbackfn ) } ) } , Polling . prototype . uri = function ( ) { var query = this . query || { } , schema = this . secure ? "https"
} } ) . call ( exports , function ( ) { return this } ( ) ) } , function ( module , exports , _ _webpack _require _ _ ) { "use strict" ; function Socket ( io , nsp , opts ) { this . io = io , this . nsp = nsp , this . json = this , this . ids = 0 , this . acks = { } , this . receiveBuffer = [ ] , this . sendBuffer = [ ] , this . connected = ! 1 , this . disconnected = ! 0 , opts && opts . query && ( this . query = opts . query ) , this . io . autoConnect && this . open ( ) } var parser = _ _webpack _require _ _ ( 6 ) , Emitter = _ _webpack _require _ _ ( 41 ) , toArray = _ _webpack _require _ _ ( 42 ) , on = _ _webpack _require _ _ ( 43 ) , bind = _ _webpack _require _ _ ( 44 ) , debug = _ _webpack _require _ _ ( 3 ) ( "socket.io-client:socket" ) , hasBin = _ _webpack _require _ _ ( 45 ) ; module . exports = exports = Socket ; var events = { connect : 1 , connect _error : 1 , connect _timeout : 1 , connecting : 1 , disconnect : 1 , error : 1 , reconnect : 1 , reconnect _attempt : 1 , reconnect _failed : 1 , reconnect _error : 1 , reconnecting : 1 , ping : 1 , pong : 1 } , emit = Emitter . prototype . emit ; Emitter ( Socket . prototype ) , Socket . prototype . subEvents = function ( ) { if ( ! this . subs ) { var io = this . io ; this . subs = [ on ( io , "open" , bind ( this , "onopen" ) ) , on ( io , "packet" , bind ( this , "onpacket" ) ) , on ( io , "close" , bind ( this , "onclose" ) ) ] } } , Socket . prototype . open = Socket . prototype . connect = function ( ) { return this . connected ? this : ( this . subEvents ( ) , this . io . open ( ) , "open" === this . io . readyState && this . onopen ( ) , this . emit ( "connecting" ) , this ) } , Socket . prototype . send = function ( ) { var args = toArray ( arguments ) ; return args . unshift ( "message" ) , this . emit . apply ( this , args ) , this } , Socket . prototype . emit = function ( ev ) { if ( events . hasOwnProperty ( ev ) ) return emit . apply ( this , arguments ) , this ; var args = toArray ( arguments ) , parserType = parser . EVENT ; hasBin ( args ) && ( parserType = parser . BINARY _EVENT ) ; var packet = { type : parserType , data : args } ; return packet . options = { } , packet . options . compress = ! this . flags || ! 1 !== this . flags . compress , "function" == typeof args [ args . length - 1 ] && ( debug ( "emitting packet with ack id %d" , this . ids ) , this . acks [ this . ids ] = args . pop ( ) , packet . id = this . ids ++ ) , this . connected ? this . packet ( packet ) : this . sendBuffer . push ( packet ) , delete this . flags , this } , Socket . prototype . packet = function ( packet ) { packet . nsp = this . nsp , this . io . packet ( packet ) } , Socket . prototype . onopen = function ( ) { debug ( "transport is open - connecting" ) , "/" !== this . nsp && ( this . query ? this . packet ( { type : parser . CONNECT , query : this . query } ) : this . packet ( { type : parser . CONNECT } ) ) } , Socket . prototype . onclose = function ( reason ) { debug ( "close (%s)" , reason ) , this . connected = ! 1 , this . disconnected = ! 0 , delete this . id , this . emit ( "disconnect" , reason ) } , Socket . prototype . onpacket = function ( packet ) { if ( packet . nsp === this . nsp ) switch ( packet . type ) { case parser . CONNECT : this . onconnect ( ) ; break ; case parser . EVENT : this . onevent ( packet ) ; break ; case parser . BINARY _EVENT : this . onevent ( packet ) ; break ; case parser . ACK : this . onack ( packet ) ; break ; case parser . BINARY _ACK : this . onack ( packet ) ; break ; case parser . DISCONNECT : this . ondisconnect ( ) ; break ; case parser . ERROR : this . emit ( "error" , packet . data ) } } , Socket . prototype . onevent = function ( packet ) { var args = packet . data || [ ] ; debug ( "emitting event %j" , args ) , null != packet . id && ( debug ( "attaching ack callback to event" ) , args . push ( this . ack ( packet . id ) ) ) , this . connected ? emit . apply ( this , args ) : this . receiveBuffer . push ( args ) } , Socket . prototype . ack = function ( id ) { var self = this , sent = ! 1 ; return function ( ) { if ( ! sent ) { sent = ! 0 ; var args = toArray ( arguments ) ; debug ( "sending ack %j" , args ) ; var type = hasBin ( args ) ? parser . BINARY _ACK : parser . ACK ; self . packet ( { type : type , id : id , data : args } ) } } } , Socket . prototype . onack = function ( packet ) { var ack = this . acks [ packet . id ] ; "function" == typeof ack ? ( debug ( "calling ack %s with %j" , packet . id , packet . data ) , ack . apply ( this , packet . data ) , delete this . acks [ packet . id ] ) : debug ( "bad ack %s" , packet . id ) } , Socket . prototype . onconnect = function ( ) { this . connected = ! 0 , this . disconnected = ! 1 , this . emit ( "connect" ) , this . emitBuffered ( ) } , Socket . prototype . emitBuffered = function ( ) { var i ; for ( i = 0 ; i < this . receiveBuffer . length ; i ++ ) emit . apply ( this , this . receiveBuffer [ i ] ) ; for ( this . receiveBuffer = [ ] , i = 0 ; i < this . sendBuffer . length ; i ++ ) this . packet ( this . sendBuffer [ i ] ) ; this . sendBuffer = [ ] } , Socket . prototype . ondisconnect = function ( ) { debug ( "server disconnect (%s)" , this . nsp ) , this . destroy ( ) , this . onclose ( "io server disconnect" ) } , Socket . prototype . destroy = function ( ) { if ( this . subs ) { for ( var i = 0 ; i < this . subs . length ; i ++ ) thi
var b = a . replace ( _ , aa ) ; return function ( a ) { var c = "undefined" != typeof a . getAttributeNode && a . getAttributeNode ( "id" ) ; return c && c . value === b } } , d . find . ID = function ( a , b ) { if ( "undefined" != typeof b . getElementById && p ) { var c , d , e , f = b . getElementById ( a ) ; if ( f ) { if ( c = f . getAttributeNode ( "id" ) , c && c . value === a ) return [ f ] ; for ( e = b . getElementsByName ( a ) , d = 0 ; f = e [ d ++ ] ; ) if ( c = f . getAttributeNode ( "id" ) , c && c . value === a ) return [ f ] } return [ ] } } ) , d . find . TAG = c . getElementsByTagName ? function ( a , b ) { return "undefined" != typeof b . getElementsByTagName ? b . getElementsByTagName ( a ) : c . qsa ? b . querySelectorAll ( a ) : void 0 } : function ( a , b ) { var c , d = [ ] , e = 0 , f = b . getElementsByTagName ( a ) ; if ( "*" === a ) { for ( ; c = f [ e ++ ] ; ) 1 === c . nodeType && d . push ( c ) ; return d } return f } , d . find . CLASS = c . getElementsByClassName && function ( a , b ) { if ( "undefined" != typeof b . getElementsByClassName && p ) return b . getElementsByClassName ( a ) } , r = [ ] , q = [ ] , ( c . qsa = Y . test ( n . querySelectorAll ) ) && ( ja ( function ( a ) { o . appendChild ( a ) . innerHTML = "<a id='" + u + "'></a><select id='" + u + "-\r\\' msallowcapture=''><option selected=''></option></select>" , a . querySelectorAll ( "[msallowcapture^='']" ) . length && q . push ( "[*^$]=" + K + "*(?:''|\"\")" ) , a . querySelectorAll ( "[selected]" ) . length || q . push ( "\\[" + K + "*(?:value|" + J + ")" ) , a . querySelectorAll ( "[id~=" + u + "-]" ) . length || q . push ( "~=" ) , a . querySelectorAll ( ":checked" ) . length || q . push ( ":checked" ) , a . querySelectorAll ( "a#" + u + "+*" ) . length || q . push ( ".#.+[+~]" ) } ) , ja ( function ( a ) { a . innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>" ; var b = n . createElement ( "input" ) ; b . setAttribute ( "type" , "hidden" ) , a . appendChild ( b ) . setAttribute ( "name" , "D" ) , a . querySelectorAll ( "[name=d]" ) . length && q . push ( "name" + K + "*[*^$|!~]?=" ) , 2 !== a . querySelectorAll ( ":enabled" ) . length && q . push ( ":enabled" , ":disabled" ) , o . appendChild ( a ) . disabled = ! 0 , 2 !== a . querySelectorAll ( ":disabled" ) . length && q . push ( ":enabled" , ":disabled" ) , a . querySelectorAll ( "*,:x" ) , q . push ( ",.*:" ) } ) ) , ( c . matchesSelector = Y . test ( s = o . matches || o . webkitMatchesSelector || o . mozMatchesSelector || o . oMatchesSelector || o . msMatchesSelector ) ) && ja ( function ( a ) { c . disconnectedMatch = s . call ( a , "*" ) , s . call ( a , "[s!='']:x" ) , r . push ( "!=" , N ) } ) , q = q . length && new RegExp ( q . join ( "|" ) ) , r = r . length && new RegExp ( r . join ( "|" ) ) , b = Y . test ( o . compareDocumentPosition ) , t = b || Y . test ( o . contains ) ? function ( a , b ) { var c = 9 === a . nodeType ? a . documentElement : a , d = b && b . parentNode ; return a === d || ! ( ! d || 1 !== d . nodeType || ! ( c . contains ? c . contains ( d ) : a . compareDocumentPosition && 16 & a . compareDocumentPosition ( d ) ) ) } : function ( a , b ) { if ( b ) for ( ; b = b . parentNode ; ) if ( b === a ) return ! 0 ; return ! 1 } , B = b ? function ( a , b ) { if ( a === b ) return l = ! 0 , 0 ; var d = ! a . compareDocumentPosition - ! b . compareDocumentPosition ; return d ? d : ( d = ( a . ownerDocument || a ) === ( b . ownerDocument || b ) ? a . compareDocumentPosition ( b ) : 1 , 1 & d || ! c . sortDetached && b . compareDocumentPosition ( a ) === d ? a === n || a . ownerDocument === v && t ( v , a ) ? - 1 : b === n || b . ownerDocument === v && t ( v , b ) ? 1 : k ? I ( k , a ) - I ( k , b ) : 0 : 4 & d ? - 1 : 1 ) } : function ( a , b ) { if ( a === b ) return l = ! 0 , 0 ; var c , d = 0 , e = a . parentNode , f = b . parentNode , g = [ a ] , h = [ b ] ; if ( ! e || ! f ) return a === n ? - 1 : b === n ? 1 : e ? - 1 : f ? 1 : k ? I ( k , a ) - I ( k , b ) : 0 ; if ( e === f ) return la ( a , b ) ; for ( c = a ; c = c . parentNode ; ) g . unshift ( c ) ; for ( c = b ; c = c . parentNode ; ) h . unshift ( c ) ; for ( ; g [ d ] === h [ d ] ; ) d ++ ; return d ? la ( g [ d ] , h [ d ] ) : g [ d ] === v ? - 1 : h [ d ] === v ? 1 : 0 } , n ) : n } , ga . matches = function ( a , b ) { return ga ( a , null , null , b ) } , ga . matchesSelector = function ( a , b ) { if ( ( a . ownerDocument || a ) !== n && m ( a ) , b = b . replace ( S , "='$1']" ) , c . matchesSelector && p && ! A [ b + " " ] && ( ! r || ! r . test ( b ) ) && ( ! q || ! q . test ( b ) ) ) try { var d = s . call ( a , b ) ; if ( d || c . disconnectedMatch || a . document && 11 !== a . document . nodeType ) return d } catch ( e ) { } return ga ( b , n , null , [ a ] ) . length > 0 } , ga . contains = function ( a , b ) { return ( a . ownerDocument || a ) !== n && m ( a ) , t ( a , b ) } , ga . attr = function ( a , b ) { ( a . ownerDocument || a ) !== n && m ( a ) ; var e = d . attrHandle [ b . toLowerCase ( ) ] , f = e && C . call ( d . attrHandle , b . toLowerCase ( ) ) ? e ( a , b , ! p ) : void 0 ; return void 0 !== f ? f : c . attributes || ! p ? a . getAttribute ( b ) : ( f = a . getAttributeNode ( b ) ) && f . specified ? f . value : null } , ga . escape = function ( a ) { return ( a + "" ) . replace ( ba , ca ) } , ga . error = function ( a ) { throw new Error ( "Syntax error, unrecognized expression: " + a ) } , ga . uniqueSort = function ( a ) { var b , d = [ ] , e = 0 , f = 0 ; if ( l = ! c . detectDuplicates , k = ! c . sortStable && a . slice ( 0 ) , a . sort ( B ) , l ) { for ( ; b = a [ f ++ ] ; )
var b = Da ( this , a ) ; b . insertBefore ( a , b . firstChild ) } } ) } , before : function ( ) { return Ia ( this , arguments , function ( a ) { this . parentNode && this . parentNode . insertBefore ( a , this ) } ) } , after : function ( ) { return Ia ( this , arguments , function ( a ) { this . parentNode && this . parentNode . insertBefore ( a , this . nextSibling ) } ) } , empty : function ( ) { for ( var a , b = 0 ; null != ( a = this [ b ] ) ; b ++ ) 1 === a . nodeType && ( r . cleanData ( ma ( a , ! 1 ) ) , a . textContent = "" ) ; return this } , clone : function ( a , b ) { return a = null != a && a , b = null == b ? a : b , this . map ( function ( ) { return r . clone ( this , a , b ) } ) } , html : function ( a ) { return S ( this , function ( a ) { var b = this [ 0 ] || { } , c = 0 , d = this . length ; if ( void 0 === a && 1 === b . nodeType ) return b . innerHTML ; if ( "string" == typeof a && ! za . test ( a ) && ! la [ ( ja . exec ( a ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ] ) { a = r . htmlPrefilter ( a ) ; try { for ( ; c < d ; c ++ ) b = this [ c ] || { } , 1 === b . nodeType && ( r . cleanData ( ma ( b , ! 1 ) ) , b . innerHTML = a ) ; b = 0 } catch ( e ) { } } b && this . empty ( ) . append ( a ) } , null , a , arguments . length ) } , replaceWith : function ( ) { var a = [ ] ; return Ia ( this , arguments , function ( b ) { var c = this . parentNode ; r . inArray ( this , a ) < 0 && ( r . cleanData ( ma ( this ) ) , c && c . replaceChild ( b , this ) ) } , a ) } } ) , r . each ( { appendTo : "append" , prependTo : "prepend" , insertBefore : "before" , insertAfter : "after" , replaceAll : "replaceWith" } , function ( a , b ) { r . fn [ a ] = function ( a ) { for ( var c , d = [ ] , e = r ( a ) , f = e . length - 1 , g = 0 ; g <= f ; g ++ ) c = g === f ? this : this . clone ( ! 0 ) , r ( e [ g ] ) [ b ] ( c ) , h . apply ( d , c . get ( ) ) ; return this . pushStack ( d ) } } ) ; var Ka = /^margin/ , La = new RegExp ( "^(" + _ + ")(?!px)[a-z%]+$" , "i" ) , Ma = function ( b ) { var c = b . ownerDocument . defaultView ; return c && c . opener || ( c = a ) , c . getComputedStyle ( b ) } ; ! function ( ) { function b ( ) { if ( i ) { i . style . cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%" , i . innerHTML = "" , qa . appendChild ( h ) ; var b = a . getComputedStyle ( i ) ; c = "1%" !== b . top , g = "2px" === b . marginLeft , e = "4px" === b . width , i . style . marginRight = "50%" , f = "4px" === b . marginRight , qa . removeChild ( h ) , i = null } } var c , e , f , g , h = d . createElement ( "div" ) , i = d . createElement ( "div" ) ; i . style && ( i . style . backgroundClip = "content-box" , i . cloneNode ( ! 0 ) . style . backgroundClip = "" , o . clearCloneStyle = "content-box" === i . style . backgroundClip , h . style . cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute" , h . appendChild ( i ) , r . extend ( o , { pixelPosition : function ( ) { return b ( ) , c } , boxSizingReliable : function ( ) { return b ( ) , e } , pixelMarginRight : function ( ) { return b ( ) , f } , reliableMarginLeft : function ( ) { return b ( ) , g } } ) ) } ( ) ; var Pa = /^(none|table(?!-c[ea]).+)/ , Qa = { position : "absolute" , visibility : "hidden" , display : "block" } , Ra = { letterSpacing : "0" , fontWeight : "400" } , Sa = [ "Webkit" , "Moz" , "ms" ] , Ta = d . createElement ( "div" ) . style ; r . extend ( { cssHooks : { opacity : { get : function ( a , b ) { if ( b ) { var c = Na ( a , "opacity" ) ; return "" === c ? "1" : c } } } } , cssNumber : { animationIterationCount : ! 0 , columnCount : ! 0 , fillOpacity : ! 0 , flexGrow : ! 0 , flexShrink : ! 0 , fontWeight : ! 0 , lineHeight : ! 0 , opacity : ! 0 , order : ! 0 , orphans : ! 0 , widows : ! 0 , zIndex : ! 0 , zoom : ! 0 } , cssProps : { float : "cssFloat" } , style : function ( a , b , c , d ) { if ( a && 3 !== a . nodeType && 8 !== a . nodeType && a . style ) { var e , f , g , h = r . camelCase ( b ) , i = a . style ; return b = r . cssProps [ h ] || ( r . cssProps [ h ] = Ua ( h ) || h ) , g = r . cssHooks [ b ] || r . cssHooks [ h ] , void 0 === c ? g && "get" in g && void 0 !== ( e = g . get ( a , ! 1 , d ) ) ? e : i [ b ] : ( f = typeof c , "string" === f && ( e = aa . exec ( c ) ) && e [ 1 ] && ( c = ea ( a , b , e ) , f = "number" ) , void ( null != c && c === c && ( "number" === f && ( c += e && e [ 3 ] || ( r . cssNumber [ h ] ? "" : "px" ) ) , o . clearCloneStyle || "" !== c || 0 !== b . indexOf ( "background" ) || ( i [ b ] = "inherit" ) , g && "set" in g && void 0 === ( c = g . set ( a , c , d ) ) || ( i [ b ] = c ) ) ) ) } } , css : function ( a , b , c , d ) { var e , f , g , h = r . camelCase ( b ) ; return b = r . cssProps [ h ] || ( r . cssProps [ h ] = Ua ( h ) || h ) , g = r . cssHooks [ b ] || r . cssHooks [ h ] , g && "get" in g && ( e = g . get ( a , ! 0 , c ) ) , void 0 === e && ( e = Na ( a , b , d ) ) , "normal" === e && b in Ra && ( e = Ra [ b ] ) , "" === c || c ? ( f = parseFloat ( e ) , c === ! 0 || isFinite ( f ) ? f || 0 : e ) : e } } ) , r . each ( [ "height" , "width" ] , function ( a , b ) { r . cssHooks [ b ] = { get : function ( a , c , d ) { if ( c ) return ! Pa . test ( r . css ( a , "display" ) ) || a . getClientRects ( ) . length && a . getBoundingClientRect ( ) . width ? Xa ( a , b , d ) : da ( a , Qa , function ( ) { return Xa ( a , b , d ) } ) } , set : function ( a , c , d ) { var e , f = d && Ma ( a ) , g = d && Wa ( a , b , d , "border-box" === r . css ( a , "boxSizing" , ! 1 , f ) , f ) ; return g && ( e = aa . exec ( c ) ) && "px" !== ( e [ 3 ] || "px" ) && ( a . style [ b ] = c , c = r . css ( a , b ) ) , Va ( a , c , g ) } } } ) , r . cssHooks
return 36 === t || 95 === t } function y ( e , t , n , r ) { Object . defineProperty ( e , t , { value : n , enumerable : ! ! r , writable : ! 0 , configurable : ! 0 } ) } function _ ( e ) { if ( ! Sr . test ( e ) ) { var t = e . split ( "." ) ; return function ( e ) { for ( var n = 0 ; n < t . length ; n ++ ) { if ( ! e ) return ; e = e [ t [ n ] ] } return e } } } function b ( e ) { return /native code/ . test ( e . toString ( ) ) } function $ ( e ) { Hr . target && Ur . push ( Hr . target ) , Hr . target = e } function w ( ) { Hr . target = Ur . pop ( ) } function C ( ) { zr . length = 0 , Vr = { } , Jr = qr = ! 1 } function x ( ) { for ( qr = ! 0 , zr . sort ( function ( e , t ) { return e . id - t . id } ) , Kr = 0 ; Kr < zr . length ; Kr ++ ) { var e = zr [ Kr ] , t = e . id ; Vr [ t ] = null , e . run ( ) } Ir && Tr . devtools && Ir . emit ( "flush" ) , C ( ) } function k ( e ) { var t = e . id ; if ( null == Vr [ t ] ) { if ( Vr [ t ] = ! 0 , qr ) { for ( var n = zr . length - 1 ; n >= 0 && zr [ n ] . id > e . id ; ) n -- ; zr . splice ( Math . max ( n , Kr ) + 1 , 0 , e ) } else zr . push ( e ) ; Jr || ( Jr = ! 0 , Br ( x ) ) } } function A ( e , t ) { var n , r ; t || ( t = Gr , t . clear ( ) ) ; var i = Array . isArray ( e ) , a = l ( e ) ; if ( ( i || a ) && Object . isExtensible ( e ) ) { if ( e . _ _ob _ _ ) { var o = e . _ _ob _ _ . dep . id ; if ( t . has ( o ) ) return ; t . add ( o ) } if ( i ) for ( n = e . length ; n -- ; ) A ( e [ n ] , t ) ; else if ( a ) for ( r = Object . keys ( e ) , n = r . length ; n -- ; ) A ( e [ r [ n ] ] , t ) } } function O ( e , t ) { e . _ _proto _ _ = t } function T ( e , t , n ) { for ( var r = 0 , i = n . length ; r < i ; r ++ ) { var a = n [ r ] ; y ( e , a , t [ a ] ) } } function S ( e ) { if ( l ( e ) ) { var t ; return i ( e , "__ob__" ) && e . _ _ob _ _ instanceof ti ? t = e . _ _ob _ _ : ei . shouldConvert && ! Tr . _isServer && ( Array . isArray ( e ) || f ( e ) ) && Object . isExtensible ( e ) && ! e . _isVue && ( t = new ti ( e ) ) , t } } function E ( e , t , n , r ) { var i = new Hr , a = Object . getOwnPropertyDescriptor ( e , t ) ; if ( ! a || a . configurable !== ! 1 ) { var o = a && a . get , s = a && a . set , c = S ( n ) ; Object . defineProperty ( e , t , { enumerable : ! 0 , configurable : ! 0 , get : function ( ) { var t = o ? o . call ( e ) : n ; return Hr . target && ( i . depend ( ) , c && c . dep . depend ( ) , Array . isArray ( t ) && N ( t ) ) , t } , set : function ( t ) { var r = o ? o . call ( e ) : n ; t !== r && ( s ? s . call ( e , t ) : n = t , c = S ( t ) , i . notify ( ) ) } } ) } } function j ( e , t , n ) { if ( Array . isArray ( e ) ) return e . splice ( t , 1 , n ) , n ; if ( i ( e , t ) ) return void ( e [ t ] = n ) ; var r = e . _ _ob _ _ ; return e . _isVue || r && r . vmCount ? void 0 : r ? ( E ( r . value , t , n ) , r . dep . notify ( ) , n ) : void ( e [ t ] = n ) } function L ( e , t ) { var n = e . _ _ob _ _ ; e . _isVue || n && n . vmCount || i ( e , t ) && ( delete e [ t ] , n && n . dep . notify ( ) ) } function N ( e ) { for ( var t = void 0 , n = 0 , r = e . length ; n < r ; n ++ ) t = e [ n ] , t && t . _ _ob _ _ && t . _ _ob _ _ . dep . depend ( ) , Array . isArray ( t ) && N ( t ) } function D ( e ) { e . _watchers = [ ] , M ( e ) , P ( e ) , R ( e ) , B ( e ) , F ( e ) } function M ( e ) { var t = e . $options . props ; if ( t ) { var n = e . $options . propsData || { } , r = e . $options . _propKeys = Object . keys ( t ) , i = ! e . $parent ; ei . shouldConvert = i ; for ( var a = function ( i ) { var a = r [ i ] ; E ( e , a , Le ( a , t , n , e ) ) } , o = 0 ; o < r . length ; o ++ ) a ( o ) ; ei . shouldConvert = ! 0 } } function P ( e ) { var t = e . $options . data ; t = e . _data = "function" == typeof t ? t . call ( e ) : t || { } , f ( t ) || ( t = { } ) ; for ( var n = Object . keys ( t ) , r = e . $options . props , a = n . length ; a -- ; ) r && i ( r , n [ a ] ) || z ( e , n [ a ] ) ; S ( t ) , t . _ _ob _ _ && t . _ _ob _ _ . vmCount ++ } function R ( e ) { var t = e . $options . computed ; if ( t ) for ( var n in t ) { var r = t [ n ] ; "function" == typeof r ? ( ni . get = I ( r , e ) , ni . set = p ) : ( ni . get = r . get ? r . cache !== ! 1 ? I ( r . get , e ) : s ( r . get , e ) : p , ni . set = r . set ? s ( r . set , e ) : p ) , Object . defineProperty ( e , n , ni ) } } function I ( e , t ) { var n = new Zr ( t , e , p , { lazy : ! 0 } ) ; return function ( ) { return n . dirty && n . evaluate ( ) , Hr . target && n . depend ( ) , n . value } } function B ( e ) { var t = e . $options . methods ; if ( t ) for ( var n in t ) e [ n ] = null == t [ n ] ? p : s ( t [ n ] , e ) } function F ( e ) { var t = e . $options . watch ; if ( t ) for ( var n in t ) { var r = t [ n ] ; if ( Array . isArray ( r ) ) for ( var i = 0 ; i < r . length ; i ++ ) H ( e , n , r [ i ] ) ; else H ( e , n , r ) } } function H ( e , t , n ) { var r ; f ( n ) && ( r = n , n = n . handler ) , "string" == typeof n && ( n = e [ n ] ) , e . $watch ( t , n , r ) } function U ( e ) { var t = { } ; t . get = function ( ) { return this . _data } , Object . defineProperty ( e . prototype , "$data" , t ) , e . prototype . $set = j , e . prototype . $delete = L , e . prototype . $watch = function ( e , t , n ) { var r = this ; n = n || { } , n . user = ! 0 ; var i = new Zr ( r , e , t , n ) ; return n . immediate && t . call ( r , i . value ) , function ( ) { i . teardown ( ) } } } function z ( e , t ) { g ( t ) || Object . defineProperty ( e , t , { configurable : ! 0 , enumerable : ! 0 , get : function ( ) { return e . _data [ t ] } , set : function ( n ) { e . _data [ t ] = n } } ) } function V ( e ) { var t = new ri ( e . tag , e . data , e . children , e . text , e . elm , e . ns , e . context , e . componentOptions ) ; return t . isStatic = e . isStatic , t . key = e . key , t . isCloned = ! 0 , t } function J ( e ) { for ( var t = new Array ( e . length ) , n = 0 ; n < e . length ; n ++ ) t [ n ] = V ( e [ n ] ) ; return t } function q ( e , t , n , r ) { r += t ; var i = e . _ _injected || ( e . _ _injected = { } ) ; if ( ! i [ r ] ) { i [ r ] = ! 0 ; var a = e [ t ] ; a ? e [ t ] = f
c . length = a , s = a && c [ a - 1 ] . tag } else "br" === n . toLowerCase ( ) ? t . start && t . start ( n , [ ] , ! 0 , r , i ) : "p" === n . toLowerCase ( ) && ( t . start && t . start ( n , [ ] , ! 1 , r , i ) , t . end && t . end ( n , r , i ) ) } for ( var o , s , c = [ ] , u = t . expectHTML , l = t . isUnaryTag || Or , f = 0 ; e ; ) { if ( o = e , s && Ja ( s ) ) { var d = s . toLowerCase ( ) , p = qa [ d ] || ( qa [ d ] = new RegExp ( "([\\s\\S]*?)(</" + d + "[^>]*>)" , "i" ) ) , v = 0 , h = e . replace ( p , function ( e , n , r ) { return v = r . length , "script" !== d && "style" !== d && "noscript" !== d && ( n = n . replace ( /<!--([\s\S]*?)-->/g , "$1" ) . replace ( /<!\[CDATA\[([\s\S]*?)\]\]>/g , "$1" ) ) , t . chars && t . chars ( n ) , "" } ) ; f += e . length - h . length , e = h , a ( "</" + d + ">" , d , f - v , f ) } else { var m = e . indexOf ( "<" ) ; if ( 0 === m ) { if ( /^<!--/ . test ( e ) ) { var g = e . indexOf ( "-->" ) ; if ( g >= 0 ) { n ( g + 3 ) ; continue } } if ( /^<!\[/ . test ( e ) ) { var y = e . indexOf ( "]>" ) ; if ( y >= 0 ) { n ( y + 2 ) ; continue } } var _ = e . match ( Aa ) ; if ( _ ) { n ( _ [ 0 ] . length ) ; continue } var b = e . match ( ka ) ; if ( b ) { var $ = f ; n ( b [ 0 ] . length ) , a ( b [ 0 ] , b [ 1 ] , $ , f ) ; continue } var w = r ( ) ; if ( w ) { i ( w ) ; continue } } var C = void 0 ; m >= 0 ? ( C = e . substring ( 0 , m ) , n ( m ) ) : ( C = e , e = "" ) , t . chars && t . chars ( C ) } if ( e === o ) throw new Error ( "Error parsing template:\n\n" + e ) } a ( ) } function tn ( e ) { function t ( ) { ( o || ( o = [ ] ) ) . push ( e . slice ( d , i ) . trim ( ) ) , d = i + 1 } var n , r , i , a , o , s = ! 1 , c = ! 1 , u = 0 , l = 0 , f = 0 , d = 0 ; for ( i = 0 ; i < e . length ; i ++ ) if ( r = n , n = e . charCodeAt ( i ) , s ) 39 === n && 92 !== r && ( s = ! s ) ; else if ( c ) 34 === n && 92 !== r && ( c = ! c ) ; else if ( 124 !== n || 124 === e . charCodeAt ( i + 1 ) || 124 === e . charCodeAt ( i - 1 ) || u || l || f ) switch ( n ) { case 34 : c = ! 0 ; break ; case 39 : s = ! 0 ; break ; case 40 : f ++ ; break ; case 41 : f -- ; break ; case 91 : l ++ ; break ; case 93 : l -- ; break ; case 123 : u ++ ; break ; case 125 : u -- } else void 0 === a ? ( d = i + 1 , a = e . slice ( 0 , i ) . trim ( ) ) : t ( ) ; if ( void 0 === a ? a = e . slice ( 0 , i ) . trim ( ) : 0 !== d && t ( ) , o ) for ( i = 0 ; i < o . length ; i ++ ) a = nn ( a , o [ i ] ) ; return a } function nn ( e , t ) { var n = t . indexOf ( "(" ) ; if ( n < 0 ) return '_f("' + t + '")(' + e + ")" ; var r = t . slice ( 0 , n ) , i = t . slice ( n + 1 ) ; return '_f("' + r + '")(' + e + "," + i } function rn ( e , t ) { var n = t ? eo ( t ) : Qa ; if ( n . test ( e ) ) { for ( var r , i , a = [ ] , o = n . lastIndex = 0 ; r = n . exec ( e ) ; ) { i = r . index , i > o && a . push ( JSON . stringify ( e . slice ( o , i ) ) ) ; var s = tn ( r [ 1 ] . trim ( ) ) ; a . push ( "_s(" + s + ")" ) , o = i + r [ 0 ] . length } return o < e . length && a . push ( JSON . stringify ( e . slice ( o ) ) ) , a . join ( "+" ) } } function an ( e ) { console . error ( "[Vue parser]: " + e ) } function on ( e , t ) { return e ? e . map ( function ( e ) { return e [ t ] } ) . filter ( function ( e ) { return e } ) : [ ] } function sn ( e , t , n ) { ( e . props || ( e . props = [ ] ) ) . push ( { name : t , value : n } ) } function cn ( e , t , n ) { ( e . attrs || ( e . attrs = [ ] ) ) . push ( { name : t , value : n } ) } function un ( e , t , n , r , i , a ) { ( e . directives || ( e . directives = [ ] ) ) . push ( { name : t , rawName : n , value : r , arg : i , modifiers : a } ) } function ln ( e , t , n , r , i ) { r && r . capture && ( delete r . capture , t = "!" + t ) ; var a ; r && r . native ? ( delete r . native , a = e . nativeEvents || ( e . nativeEvents = { } ) ) : a = e . events || ( e . events = { } ) ; var o = { value : n , modifiers : r } , s = a [ t ] ; Array . isArray ( s ) ? i ? s . unshift ( o ) : s . push ( o ) : s ? a [ t ] = i ? [ o , s ] : [ s , o ] : a [ t ] = o } function fn ( e , t , n ) { var r = dn ( e , ":" + t ) || dn ( e , "v-bind:" + t ) ; if ( null != r ) return r ; if ( n !== ! 1 ) { var i = dn ( e , t ) ; if ( null != i ) return JSON . stringify ( i ) } } function dn ( e , t ) { var n ; if ( null != ( n = e . attrsMap [ t ] ) ) for ( var r = e . attrsList , i = 0 , a = r . length ; i < a ; i ++ ) if ( r [ i ] . name === t ) { r . splice ( i , 1 ) ; break } return n } function pn ( e , t ) { Ta = t . warn || an , Sa = t . getTagNamespace || Or , Ea = t . mustUseProp || Or , ja = t . isPreTag || Or , La = on ( t . modules , "preTransformNode" ) , Na = on ( t . modules , "transformNode" ) , Da = on ( t . modules , "postTransformNode" ) , Ma = t . delimiters ; var n , r , i = [ ] , a = t . preserveWhitespace !== ! 1 , o = ! 1 , s = ! 1 ; return en ( e , { expectHTML : t . expectHTML , isUnaryTag : t . isUnaryTag , shouldDecodeNewlines : t . shouldDecodeNewlines , start : function ( e , a , c ) { function u ( e ) { } var l = r && r . ns || Sa ( e ) ; t . isIE && "svg" === l && ( a = En ( a ) ) ; var f = { type : 1 , tag : e , attrsList : a , attrsMap : On ( a , t . isIE ) , parent : r , children : [ ] } ; l && ( f . ns = l ) , Sn ( f ) && ( f . forbidden = ! 0 ) ; for ( var d = 0 ; d < La . length ; d ++ ) La [ d ] ( f , t ) ; if ( o || ( vn ( f ) , f . pre && ( o = ! 0 ) ) , ja ( f . tag ) && ( s = ! 0 ) , o ) hn ( f ) ; else { yn ( f ) , _n ( f ) , $n ( f ) , mn ( f ) , f . plain = ! f . key && ! a . length , gn ( f ) , wn ( f ) , Cn ( f ) ; for ( var p = 0 ; p < Na . length ; p ++ ) Na [ p ] ( f , t ) ; xn ( f ) } n || ( n = f , u ( n ) ) , r && ! f . forbidden && ( f . else ? bn ( f , r ) : ( r . children . push ( f ) , f . parent = r ) ) , c || ( r = f , i . push ( f ) ) ; for ( var v = 0 ; v < Da . length ; v ++ ) Da [ v ] ( f , t ) } , end : function ( ) { var e = i [ i . length - 1 ] , t = e . children [ e . children . length - 1 ] ; t && 3 === t . type && " " === t . text && e . children . pop ( ) , i . length -= 1 , r = i [ i . length - 1 ] , e . pre && ( o = ! 1 ) , ja ( e . tag ) && ( s = ! 1 ) } , chars : function ( e ) { if ( r && ( e = s || e . trim
if ( r && ! a ( r ) . length && ( l = ! 1 ) , g . scrollTarget || p && q && r ) { for ( ; l && j < h . length ; ) f . is ( c ( h [ j ++ ] ) ) && ( l = ! 1 ) ; for ( ; l && k < i . length ; ) f . closest ( i [ k ++ ] ) . length && ( l = ! 1 ) } else l = ! 1 ; l && ( g . preventDefault && b . preventDefault ( ) , a . extend ( m , g , { scrollTarget : g . scrollTarget || r , link : e } ) , a . smoothScroll ( m ) ) } ; return null !== b . delegateSelector ? this . off ( "click.smoothscroll" , b . delegateSelector ) . on ( "click.smoothscroll" , b . delegateSelector , e ) : this . off ( "click.smoothscroll" ) . on ( "click.smoothscroll" , e ) , this } } ) , a . smoothScroll = function ( b , d ) { if ( "options" === b && "object" == typeof d ) return a . extend ( c , d ) ; var e , f , g , h , i , j = 0 , k = "offset" , l = "scrollTop" , m = { } , n = { } ; "number" == typeof b ? ( e = a . extend ( { link : null } , a . fn . smoothScroll . defaults , c ) , g = b ) : ( e = a . extend ( { link : null } , a . fn . smoothScroll . defaults , b || { } , c ) , e . scrollElement && ( k = "position" , "static" === e . scrollElement . css ( "position" ) && e . scrollElement . css ( "position" , "relative" ) ) ) , l = "left" === e . direction ? "scrollLeft" : l , e . scrollElement ? ( f = e . scrollElement , /^(?:HTML|BODY)$/ . test ( f [ 0 ] . nodeName ) || ( j = f [ l ] ( ) ) ) : f = a ( "html, body" ) . firstScrollable ( e . direction ) , e . beforeScroll . call ( f , e ) , g = "number" == typeof b ? b : d || a ( e . scrollTarget ) [ k ] ( ) && a ( e . scrollTarget ) [ k ] ( ) [ e . direction ] || 0 , m [ l ] = g + j + e . offset , h = e . speed , "auto" === h && ( i = Math . abs ( m [ l ] - f [ l ] ( ) ) , h = i / e . autoCoefficient ) , n = { duration : h , easing : e . easing , complete : function ( ) { e . afterScroll . call ( e . link , e ) } } , e . step && ( n . step = e . step ) , f . length ? f . stop ( ) . animate ( m , n ) : e . afterScroll . call ( e . link , e ) } , a . smoothScroll . version = b , a . smoothScroll . filterPath = function ( a ) { return a = a || "" , a . replace ( /^\// , "" ) . replace ( /(?:index|default).[a-zA-Z]{3,4}$/ , "" ) . replace ( /\/$/ , "" ) } , a . fn . smoothScroll . defaults = d } ) , simpleUpload . maxUploads = 10 , simpleUpload . activeUploads = 0 , simpleUpload . uploads = [ ] , simpleUpload . iframes = { } , simpleUpload . iframeCount = 0 , simpleUpload . queueUpload = function ( e , l ) { simpleUpload . uploads [ simpleUpload . uploads . length ] = { uploads : e , callback : l } } , simpleUpload . uploadNext = function ( ) { if ( simpleUpload . uploads . length > 0 && simpleUpload . activeUploads < simpleUpload . maxUploads ) { var e = simpleUpload . uploads [ 0 ] , l = e . callback , n = e . uploads . splice ( 0 , 1 ) [ 0 ] ; 0 == e . uploads . length && simpleUpload . uploads . splice ( 0 , 1 ) , simpleUpload . activeUploads ++ , l ( n ) , simpleUpload . uploadNext ( ) } } , simpleUpload . queueIframe = function ( e ) { for ( var l = 0 ; 0 == l || l in simpleUpload . iframes ; ) l = Math . floor ( 999999999 * Math . random ( ) + 1 ) ; return simpleUpload . iframes [ l ] = e , simpleUpload . iframeCount ++ , $ ( "body" ) . append ( '<iframe name="simpleUpload_iframe_' + l + '" style="display: none;"></iframe>' ) , l } , simpleUpload . dequeueIframe = function ( e ) { e in simpleUpload . iframes && ( $ ( "iframe[name=simpleUpload_iframe_" + e + "]" ) . remove ( ) , delete simpleUpload . iframes [ e ] , simpleUpload . iframeCount -- ) } , simpleUpload . convertDataType = function ( e , l , n ) { var t = "auto" ; if ( "auto" == e ) { if ( "string" == typeof l && "" != l ) { var a = l . toLowerCase ( ) , o = [ "json" , "xml" , "html" , "script" , "text" ] ; for ( var r in o ) if ( o [ r ] == a ) { t = a ; break } } } else t = e ; if ( "auto" == t ) return "undefined" == typeof n ? "" : "object" == typeof n ? n : String ( n ) ; if ( "json" == t ) { if ( "undefined" == typeof n || null === n ) return null ; if ( "object" == typeof n ) return n ; if ( "string" == typeof n ) try { return $ . parseJSON ( n ) } catch ( i ) { return ! 1 } return ! 1 } if ( "xml" == t ) { if ( "undefined" == typeof n || null === n ) return null ; if ( "string" == typeof n ) try { return $ . parseXML ( n ) } catch ( i ) { return ! 1 } return ! 1 } if ( "script" == t ) { if ( "undefined" == typeof n ) return "" ; if ( "string" == typeof n ) try { return $ . globalEval ( n ) , n } catch ( i ) { return ! 1 } return ! 1 } return "undefined" == typeof n ? "" : String ( n ) } , simpleUpload . iframeCallback = function ( e ) { if ( "object" == typeof e && null !== e ) { var l = e . id ; if ( l in simpleUpload . iframes ) { var n = simpleUpload . convertDataType ( simpleUpload . iframes [ l ] . expect , e . type , e . data ) ; n !== ! 1 ? simpleUpload . iframes [ l ] . complete ( n ) : simpleUpload . iframes [ l ] . error ( "Could not get response from server" ) } } } , simpleUpload . postMessageCallback = function ( e ) { try { var l = e . message ? "message" : "data" , n = e [ l ] ; if ( "string" == typeof n && "" != n && ( n = $ . parseJSON ( n ) , "object" == typeof n && null !== n && "string" == typeof n . namespace && "simpleUpload" == n . namespace ) ) { var t = n . id ; if ( t in simpleUpload . iframes && e . origin === simpleUpload . iframes [ t ] . origin ) { var a = simpleUpload . convertDataType ( simpleUpload . iframes [ t ] . expect , n . type , n . data ) ; a !== ! 1 ? simpleUpload . ifram
return t . renderElement ( i ) } ) } } , 10 ) } , t . prototype . renderElement = function ( t ) { var i = this ; t . sticky = { } , t . sticky . active = ! 1 , t . sticky . marginTop = parseInt ( t . getAttribute ( "data-margin-top" ) ) || this . options . marginTop , t . sticky . stickyFor = parseInt ( t . getAttribute ( "data-sticky-for" ) ) || this . options . stickyFor , t . sticky . stickyClass = t . getAttribute ( "data-sticky-class" ) || this . options . stickyClass , t . sticky . container = this . getStickyContainer ( t ) , t . sticky . container . rect = this . getRectangle ( t . sticky . container ) , t . sticky . rect = this . getRectangle ( t ) , "img" === t . tagName . toLowerCase && ( t . onload = function ( ) { return t . sticky . rect = i . getRectangle ( t ) } ) , this . activate ( t ) } , t . prototype . activate = function ( t ) { var i = t . sticky . container . offsetHeight ; this . css ( t , { position : "fixed" } ) ; var e = t . sticky . container . offsetHeight ; this . css ( t , { position : "" } ) , e >= i && t . sticky . stickyFor < this . vp . width && ! t . sticky . active && ( t . sticky . active = ! 0 ) , this . elements . indexOf ( t ) < 0 && this . elements . push ( t ) , t . sticky . resizeEvent || ( this . initResizeEvents ( t ) , t . sticky . resizeEvent = ! 0 ) , t . sticky . scrollEvent || ( this . initScrollEvents ( t ) , t . sticky . scrollEvent = ! 0 ) } , t . prototype . initResizeEvents = function ( t ) { var i = this ; t . sticky . resizeListener = function ( ) { return i . onResizeEvents ( t ) } , window . addEventListener ( "resize" , t . sticky . resizeListener ) } , t . prototype . onResizeEvents = function ( t ) { this . vp = this . getViewportSize ( ) , t . sticky . rect = this . getRectangle ( t ) , t . sticky . container . rect = this . getRectangle ( t . sticky . container ) , t . sticky . stickyFor < this . vp . width && ! t . sticky . active ? t . sticky . active = ! 0 : t . sticky . stickyFor >= this . vp . width && t . sticky . active && ( t . sticky . active = ! 1 ) , this . setPosition ( t ) } , t . prototype . initScrollEvents = function ( t ) { var i = this ; t . sticky . scrollListener = function ( ) { return i . onScrollEvents ( t ) } , window . addEventListener ( "scroll" , t . sticky . scrollListener ) } , t . prototype . onScrollEvents = function ( t ) { this . scrollTop = this . getScrollTopPosition ( ) , t . sticky . active && this . setPosition ( t ) } , t . prototype . setPosition = function ( t ) { this . css ( t , { position : "" , width : "" , top : "" , left : "" } ) , this . vp . height < t . sticky . rect . height || ! t . sticky . active || ( t . sticky . rect . width || ( t . sticky . rect = this . getRectangle ( t ) ) , this . scrollTop > t . sticky . rect . top - t . sticky . marginTop ? ( this . css ( t , { position : "fixed" , width : t . sticky . rect . width + "px" , left : t . sticky . rect . left + "px" } ) , this . scrollTop + t . sticky . rect . height + t . sticky . marginTop > t . sticky . container . rect . top + t . sticky . container . offsetHeight ? ( t . sticky . stickyClass && t . classList . remove ( t . sticky . stickyClass ) , this . css ( t , { top : t . sticky . container . rect . top + t . sticky . container . offsetHeight - ( this . scrollTop + t . sticky . rect . height ) + "px" } ) ) : ( t . sticky . stickyClass && t . classList . add ( t . sticky . stickyClass ) , this . css ( t , { top : t . sticky . marginTop + "px" } ) ) ) : ( t . sticky . stickyClass && t . classList . remove ( t . sticky . stickyClass ) , this . css ( t , { position : "" , width : "" , top : "" , left : "" } ) ) ) } , t . prototype . update = function ( ) { var t = this ; this . forEach ( this . elements , function ( i ) { i . sticky . rect = t . getRectangle ( i ) , i . sticky . container . rect = t . getRectangle ( i . sticky . container ) , t . activate ( i ) , t . setPosition ( i ) } ) } , t . prototype . getStickyContainer = function ( t ) { for ( var i = t ; ! i . hasAttribute ( "data-sticky-container" ) && i !== document . querySelector ( "body" ) ; ) i = i . parentNode ; return i } , t . prototype . getRectangle = function ( t ) { this . css ( t , { position : "" , width : "" , top : "" , left : "" } ) ; var i = Math . max ( t . offsetWidth , t . clientWidth , t . scrollWidth ) , e = Math . max ( t . offsetHeight , t . clientHeight , t . scrollHeight ) , s = 0 , o = 0 ; do s += t . offsetTop || 0 , o += t . offsetLeft || 0 , t = t . offsetParent ; while ( t ) ; return { top : s , left : o , width : i , height : e } } , t . prototype . getViewportSize = function ( ) { return { width : Math . max ( document . documentElement . clientWidth , window . innerWidth || 0 ) , height : Math . max ( document . documentElement . clientHeight , window . innerHeight || 0 ) } } , t . prototype . getScrollTopPosition = function ( ) { return ( window . pageYOffset || document . scrollTop ) - ( document . clientTop || 0 ) || 0 } , t . prototype . forEach = function ( t , i ) { for ( var e = 0 , s = t . length ; e < s ; e ++ ) i ( t [ e ] ) } , t . prototype . css = function ( t , i ) { for ( var e in i ) i . hasOwnProperty ( e ) && ( t . style [ e ] = i [ e ] ) } , t } ( ) ; ! function ( t , i ) { "undefined" != typeof exports ? module . exports = i : "function" == typeof define && define . amd ? define ( [ ] , i ) : t . Sticky = i } ( this , Sticky ) , ! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof mod
} function a ( e ) { if ( ! e . somethingSelected ( ) ) return i ( e ) ; if ( e . listSelections ( ) . length > 1 ) return o ( e ) ; var t = e . getCursor ( "start" ) , n = e . getCursor ( "end" ) , a = e . state . markedSelection ; if ( ! a . length ) return r ( e , t , n ) ; var s = a [ 0 ] . find ( ) , u = a [ a . length - 1 ] . find ( ) ; if ( ! s || ! u || n . line - t . line < l || c ( t , u . to ) >= 0 || c ( n , s . from ) <= 0 ) return o ( e ) ; for ( ; c ( t , s . from ) > 0 ; ) a . shift ( ) . clear ( ) , s = a [ 0 ] . find ( ) ; for ( c ( t , s . from ) < 0 && ( s . to . line - t . line < l ? ( a . shift ( ) . clear ( ) , r ( e , t , s . to , 0 ) ) : r ( e , t , s . from , 0 ) ) ; c ( n , u . to ) < 0 ; ) a . pop ( ) . clear ( ) , u = a [ a . length - 1 ] . find ( ) ; c ( n , u . to ) > 0 && ( n . line - u . from . line < l ? ( a . pop ( ) . clear ( ) , r ( e , u . from , n ) ) : r ( e , u . to , n ) ) } e . defineOption ( "styleSelectedText" , ! 1 , function ( r , a , l ) { var s = l && l != e . Init ; a && ! s ? ( r . state . markedSelection = [ ] , r . state . markedSelectionStyle = "string" == typeof a ? a : "CodeMirror-selectedtext" , o ( r ) , r . on ( "cursorActivity" , t ) , r . on ( "change" , n ) ) : ! a && s && ( r . off ( "cursorActivity" , t ) , r . off ( "change" , n ) , i ( r ) , r . state . markedSelection = r . state . markedSelectionStyle = null ) } ) ; var l = 8 , s = e . Pos , c = e . cmpPos } ) } , { "../../lib/codemirror" : 10 } ] , 10 : [ function ( t , n , r ) { ! function ( t ) { if ( "object" == typeof r && "object" == typeof n ) n . exports = t ( ) ; else { if ( "function" == typeof e && e . amd ) return e ( [ ] , t ) ; ( this || window ) . CodeMirror = t ( ) } } ( function ( ) { "use strict" ; function e ( n , r ) { if ( ! ( this instanceof e ) ) return new e ( n , r ) ; this . options = r = r ? Wi ( r ) : { } , Wi ( ea , r , ! 1 ) , d ( r ) ; var i = r . value ; "string" == typeof i && ( i = new Ca ( i , r . mode , null , r . lineSeparator ) ) , this . doc = i ; var o = new e . inputStyles [ r . inputStyle ] ( this ) , a = this . display = new t ( n , i , o ) ; a . wrapper . CodeMirror = this , c ( this ) , l ( this ) , r . lineWrapping && ( this . display . wrapper . className += " CodeMirror-wrap" ) , r . autofocus && ! Ao && a . input . focus ( ) , v ( this ) , this . state = { keyMaps : [ ] , overlays : [ ] , modeGen : 0 , overwrite : ! 1 , delayingBlurEvent : ! 1 , focused : ! 1 , suppressEdits : ! 1 , pasteIncoming : ! 1 , cutIncoming : ! 1 , selectingText : ! 1 , draggingText : ! 1 , highlight : new Ei , keySeq : null , specialChars : null } ; var s = this ; xo && 11 > bo && setTimeout ( function ( ) { s . display . input . reset ( ! 0 ) } , 20 ) , jt ( this ) , Ki ( ) , bt ( this ) , this . curOp . forceUpdate = ! 0 , Xr ( this , i ) , r . autofocus && ! Ao || s . hasFocus ( ) ? setTimeout ( Bi ( vn , this ) , 20 ) : yn ( this ) ; for ( var u in ta ) ta . hasOwnProperty ( u ) && ta [ u ] ( this , r [ u ] , na ) ; k ( this ) , r . finishInit && r . finishInit ( this ) ; for ( var f = 0 ; f < aa . length ; ++ f ) aa [ f ] ( this ) ; kt ( this ) , wo && r . lineWrapping && "optimizelegibility" == getComputedStyle ( a . lineDiv ) . textRendering && ( a . lineDiv . style . textRendering = "auto" ) } function t ( e , t , n ) { var r = this ; this . input = n , r . scrollbarFiller = ji ( "div" , null , "CodeMirror-scrollbar-filler" ) , r . scrollbarFiller . setAttribute ( "cm-not-content" , "true" ) , r . gutterFiller = ji ( "div" , null , "CodeMirror-gutter-filler" ) , r . gutterFiller . setAttribute ( "cm-not-content" , "true" ) , r . lineDiv = ji ( "div" , null , "CodeMirror-code" ) , r . selectionDiv = ji ( "div" , null , null , "position: relative; z-index: 1" ) , r . cursorDiv = ji ( "div" , null , "CodeMirror-cursors" ) , r . measure = ji ( "div" , null , "CodeMirror-measure" ) , r . lineMeasure = ji ( "div" , null , "CodeMirror-measure" ) , r . lineSpace = ji ( "div" , [ r . measure , r . lineMeasure , r . selectionDiv , r . cursorDiv , r . lineDiv ] , null , "position: relative; outline: none" ) , r . mover = ji ( "div" , [ ji ( "div" , [ r . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , r . sizer = ji ( "div" , [ r . mover ] , "CodeMirror-sizer" ) , r . sizerWidth = null , r . heightForcer = ji ( "div" , null , null , "position: absolute; height: " + Da + "px; width: 1px;" ) , r . gutters = ji ( "div" , null , "CodeMirror-gutters" ) , r . lineGutter = null , r . scroller = ji ( "div" , [ r . sizer , r . heightForcer , r . gutters ] , "CodeMirror-scroll" ) , r . scroller . setAttribute ( "tabIndex" , "-1" ) , r . wrapper = ji ( "div" , [ r . scrollbarFiller , r . gutterFiller , r . scroller ] , "CodeMirror" ) , xo && 8 > bo && ( r . gutters . style . zIndex = - 1 , r . scroller . style . paddingRight = 0 ) , wo || go && Ao || ( 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 . wheelStart
r . lineN = n ; var i = r . built = Br ( e , r ) ; return r . text = i . pre , qi ( e . display . lineMeasure , i . pre ) , r } function Je ( e , t , n , r ) { return tt ( e , et ( e , t ) , n , r ) } function Qe ( e , t ) { if ( t >= e . display . viewFrom && t < e . display . viewTo ) return e . display . view [ Bt ( e , t ) ] ; var n = e . display . externalMeasured ; return n && t >= n . lineN && t < n . lineN + n . size ? n : void 0 } function et ( e , t ) { var n = ti ( t ) , r = Qe ( e , n ) ; r && ! r . text ? r = null : r && r . changes && ( D ( e , r , n , P ( e ) ) , e . curOp . forceUpdate = ! 0 ) , r || ( r = Ze ( e , t ) ) ; var i = Xe ( r , t , n ) ; return { line : t , view : r , rect : null , map : i . map , cache : i . cache , before : i . before , hasHeights : ! 1 } } function tt ( e , t , n , r , i ) { t . before && ( n = - 1 ) ; var o , a = n + ( r || "" ) ; return t . cache . hasOwnProperty ( a ) ? o = t . cache [ a ] : ( t . rect || ( t . rect = t . view . text . getBoundingClientRect ( ) ) , t . hasHeights || ( Ke ( e , t . view , t . rect ) , t . hasHeights = ! 0 ) , o = rt ( e , t , n , r ) , o . bogus || ( t . cache [ a ] = o ) ) , { left : o . left , right : o . right , top : i ? o . rtop : o . top , bottom : i ? o . rbottom : o . bottom } } function nt ( e , t , n ) { for ( var r , i , o , a , l = 0 ; l < e . length ; l += 3 ) { var s = e [ l ] , c = e [ l + 1 ] ; if ( s > t ? ( i = 0 , o = 1 , a = "left" ) : c > t ? ( i = t - s , o = i + 1 ) : ( l == e . length - 3 || t == c && e [ l + 3 ] > t ) && ( o = c - s , i = o - 1 , t >= c && ( a = "right" ) ) , null != i ) { if ( r = e [ l + 2 ] , s == c && n == ( r . insertLeft ? "left" : "right" ) && ( a = n ) , "left" == n && 0 == i ) for ( ; l && e [ l - 2 ] == e [ l - 3 ] && e [ l - 1 ] . insertLeft ; ) r = e [ ( l -= 3 ) + 2 ] , a = "left" ; if ( "right" == n && i == c - s ) for ( ; l < e . length - 3 && e [ l + 3 ] == e [ l + 4 ] && ! e [ l + 5 ] . insertLeft ; ) r = e [ ( l += 3 ) + 2 ] , a = "right" ; break } } return { node : r , start : i , end : o , collapse : a , coverStart : s , coverEnd : c } } function rt ( e , t , n , r ) { var i , o = nt ( t . map , n , r ) , a = o . node , l = o . start , s = o . end , c = o . collapse ; if ( 3 == a . nodeType ) { for ( var u = 0 ; 4 > u ; u ++ ) { for ( ; l && zi ( t . line . text . charAt ( o . coverStart + l ) ) ; ) -- l ; for ( ; o . coverStart + s < o . coverEnd && zi ( t . line . text . charAt ( o . coverStart + s ) ) ; ) ++ s ; if ( xo && 9 > bo && 0 == l && s == o . coverEnd - o . coverStart ) i = a . parentNode . getBoundingClientRect ( ) ; else if ( xo && e . options . lineWrapping ) { var f = qa ( a , l , s ) . getClientRects ( ) ; i = f . length ? f [ "right" == r ? f . length - 1 : 0 ] : qo } else i = qa ( a , l , s ) . getBoundingClientRect ( ) || qo ; if ( i . left || i . right || 0 == l ) break ; s = l , l -= 1 , c = "right" } xo && 11 > bo && ( i = it ( e . display . measure , i ) ) } else { l > 0 && ( c = r = "right" ) ; var f ; i = e . options . lineWrapping && ( f = a . getClientRects ( ) ) . length > 1 ? f [ "right" == r ? f . length - 1 : 0 ] : a . getBoundingClientRect ( ) } if ( xo && 9 > bo && ! l && ( ! i || ! i . left && ! i . right ) ) { var h = a . parentNode . getClientRects ( ) [ 0 ] ; i = h ? { left : h . left , right : h . left + xt ( e . display ) , top : h . top , bottom : h . bottom } : qo } for ( var d = i . top - t . rect . top , p = i . bottom - t . rect . top , m = ( d + p ) / 2 , g = t . view . measure . heights , u = 0 ; u < g . length - 1 && ! ( m < g [ u ] ) ; u ++ ) ; var v = u ? g [ u - 1 ] : 0 , y = g [ u ] , x = { left : ( "right" == c ? i . right : i . left ) - t . rect . left , right : ( "left" == c ? i . left : i . right ) - t . rect . left , top : v , bottom : y } ; return i . left || i . right || ( x . bogus = ! 0 ) , e . options . singleCursorHeightPerLine || ( x . rtop = d , x . rbottom = p ) , x } function it ( e , t ) { if ( ! window . screen || null == screen . logicalXDPI || screen . logicalXDPI == screen . deviceXDPI || ! Qi ( e ) ) return t ; var n = screen . logicalXDPI / screen . deviceXDPI , r = screen . logicalYDPI / screen . deviceYDPI ; return { left : t . left * n , right : t . right * n , top : t . top * r , bottom : t . bottom * r } } function ot ( e ) { if ( e . measure && ( e . measure . cache = { } , e . measure . heights = null , e . rest ) ) for ( var t = 0 ; t < e . rest . length ; t ++ ) e . measure . caches [ t ] = { } } function at ( e ) { e . display . externalMeasure = null , Ui ( e . display . lineMeasure ) ; for ( var t = 0 ; t < e . display . view . length ; t ++ ) ot ( e . display . view [ t ] ) } function lt ( e ) { at ( e ) , e . display . cachedCharWidth = e . display . cachedTextHeight = e . display . cachedPaddingH = null , e . options . lineWrapping || ( e . display . maxLineChanged = ! 0 ) , e . display . lineNumChars = null } function st ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function ct ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function ut ( e , t , n , r ) { if ( t . widgets ) for ( var i = 0 ; i < t . widgets . length ; ++ i ) if ( t . widgets [ i ] . above ) { var o = Lr ( t . widgets [ i ] ) ; n . top += o , n . bottom += o } if ( "line" == r ) return n ; r || ( r = "local" ) ; var a = ri ( 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 : ct ( ) ) ; var s = l . left + ( "window" == r ? 0 : st ( ) ) ; n . left += s , n . right += s } return n . top += a , n . bottom += a , n } function ft ( e , t , n ) { if ( "div" == n ) return t ; var r = t . left , i = t . top ; if ( "page" == n ) r -= st ( ) , i -= ct ( ) ; else if ( "local" == n || ! n ) { var o = e . display . sizer . getBoundingClientRect ( ) ; r += o . left ,
Math . abs ( e . doc . scrollLeft - u ) > 1 && ( o = ! 0 ) ) , ! o ) break } return a } function Dn ( e , t , n , r , i ) { var o = Hn ( e , t , n , r , i ) ; null != o . scrollTop && rn ( e , o . scrollTop ) , null != o . scrollLeft && on ( e , o . scrollLeft ) } function Hn ( e , t , n , r , i ) { var o = e . display , a = yt ( e . display ) ; 0 > n && ( n = 0 ) ; var l = e . curOp && null != e . curOp . scrollTop ? e . curOp . scrollTop : o . scroller . scrollTop , s = Ve ( e ) , c = { } ; i - n > s && ( i = n + s ) ; var u = e . doc . height + qe ( o ) , f = a > n , h = i > u - a ; if ( l > n ) c . scrollTop = f ? 0 : n ; else if ( i > l + s ) { var d = Math . min ( n , ( h ? u : i ) - s ) ; d != l && ( c . scrollTop = d ) } var p = e . curOp && null != e . curOp . scrollLeft ? e . curOp . scrollLeft : o . scroller . scrollLeft , m = $e ( e ) - ( e . options . fixedGutter ? o . gutters . offsetWidth : 0 ) , g = r - t > m ; return g && ( r = t + m ) , 10 > t ? c . scrollLeft = 0 : p > t ? c . scrollLeft = Math . max ( 0 , t - ( g ? 0 : 10 ) ) : r > m + p - 3 && ( c . scrollLeft = r + ( g ? 0 : 10 ) - m ) , c } function Wn ( e , t , n ) { null == t && null == n || _n ( e ) , null != t && ( e . curOp . scrollLeft = ( null == e . curOp . scrollLeft ? e . doc . scrollLeft : e . curOp . scrollLeft ) + t ) , null != n && ( e . curOp . scrollTop = ( null == e . curOp . scrollTop ? e . doc . scrollTop : e . curOp . scrollTop ) + n ) } function Bn ( e ) { _n ( e ) ; var t = e . getCursor ( ) , n = t , r = t ; e . options . lineWrapping || ( n = t . ch ? Bo ( t . line , t . ch - 1 ) : t , r = Bo ( t . line , t . ch + 1 ) ) , e . curOp . scrollToPos = { from : n , to : r , margin : e . options . cursorScrollMargin , isCursor : ! 0 } } function _n ( e ) { var t = e . curOp . scrollToPos ; if ( t ) { e . curOp . scrollToPos = null ; var n = pt ( e , t . from ) , r = pt ( e , t . to ) , i = Hn ( e , Math . min ( n . left , r . left ) , Math . min ( n . top , r . top ) - t . margin , Math . max ( n . right , r . right ) , Math . max ( n . bottom , r . bottom ) + t . margin ) ; e . scrollTo ( i . scrollLeft , i . scrollTop ) } } function Fn ( e , t , n , r ) { var i , o = e . doc ; null == n && ( n = "add" ) , "smart" == n && ( o . mode . indent ? i = je ( e , t ) : n = "prev" ) ; var a = e . options . tabSize , l = Zr ( o , t ) , s = Fa ( l . text , null , a ) ; l . stateAfter && ( l . stateAfter = null ) ; var c , u = l . text . match ( /^\s*/ ) [ 0 ] ; if ( r || /\S/ . test ( l . text ) ) { if ( "smart" == n && ( c = o . mode . indent ( i , l . text . slice ( u . length ) , l . text ) , c == Ha || c > 150 ) ) { if ( ! r ) return ; n = "prev" } } else c = 0 , n = "not" ; "prev" == n ? c = t > o . first ? Fa ( Zr ( o , t - 1 ) . text , null , a ) : 0 : "add" == n ? c = s + e . options . indentUnit : "subtract" == n ? c = s - e . options . indentUnit : "number" == typeof n && ( c = s + n ) , c = Math . max ( 0 , c ) ; var f = "" , h = 0 ; if ( e . options . indentWithTabs ) for ( var d = Math . floor ( c / a ) ; d ; -- d ) h += a , f += "\t" ; if ( c > h && ( f += Oi ( c - h ) ) , f != u ) return In ( o , f , Bo ( t , 0 ) , Bo ( t , u . length ) , "+input" ) , l . stateAfter = null , ! 0 ; for ( var d = 0 ; d < o . sel . ranges . length ; d ++ ) { var p = o . sel . ranges [ d ] ; if ( p . head . line == t && p . head . ch < u . length ) { var h = Bo ( t , u . length ) ; ke ( o , d , new fe ( h , h ) ) ; break } } } function zn ( e , t , n , r ) { var i = t , o = t ; return "number" == typeof t ? o = Zr ( e , pe ( e , t ) ) : i = ti ( t ) , null == i ? null : ( r ( o , i ) && e . cm && Ht ( e . cm , i , n ) , o ) } function jn ( e , t ) { for ( var n = e . doc . sel . ranges , r = [ ] , i = 0 ; i < n . length ; i ++ ) { for ( var o = t ( n [ i ] ) ; r . length && _o ( o . from , Ii ( r ) . to ) <= 0 ; ) { var a = r . pop ( ) ; if ( _o ( a . from , o . from ) < 0 ) { o . from = a . from ; break } } r . push ( o ) } At ( e , function ( ) { for ( var t = r . length - 1 ; t >= 0 ; t -- ) In ( e . doc , "" , r [ t ] . from , r [ t ] . to , "+delete" ) ; Bn ( e ) } ) } function Un ( e , t , n , r , i ) { function o ( ) { var t = l + n ; return ! ( t < e . first || t >= e . first + e . size ) && ( l = t , u = Zr ( e , t ) ) } function a ( e ) { var t = ( i ? fo : ho ) ( u , s , n , ! 0 ) ; if ( null == t ) { if ( e || ! o ( ) ) return ! 1 ; s = i ? ( 0 > n ? io : ro ) ( u ) : 0 > n ? u . text . length : 0 } else s = t ; return ! 0 } var l = t . line , s = t . ch , c = n , u = Zr ( 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 ; ! ( 0 > n ) || a ( ! p ) ; p = ! 1 ) { var m = u . text . charAt ( s ) || "\n" , g = _i ( m , d ) ? "w" : h && "\n" == m ? "n" : ! h || /\s/ . test ( m ) ? null : "p" ; if ( ! h || p || g || ( g = "s" ) , f && f != g ) { 0 > n && ( n = 1 , a ( ) ) ; break } if ( g && ( f = g ) , n > 0 && ! a ( ! p ) ) break } var v = Ie ( e , Bo ( l , s ) , t , c , ! 0 ) ; return _o ( t , v ) || ( v . hitSide = ! 0 ) , v } function qn ( 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 - ( 0 > n ? 1.5 : . 5 ) * yt ( e . display ) ) } else "line" == r && ( i = n > 0 ? t . bottom + 3 : t . top - 3 ) ; for ( ; ; ) { var s = gt ( e , a , i ) ; if ( ! s . outside ) break ; if ( 0 > n ? 0 >= i : i >= o . height ) { s . hitSide = ! 0 ; break } i += 5 * n } return s } function Gn ( t , n , r , i ) { e . defaults [ t ] = n , r && ( ta [ t ] = i ? function ( e , t , n ) { n != na && r ( e , t , n ) } : r ) } function Yn ( 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 =
this . checkedZeroWidth = ! 0 ) , { right : n ? r : 0 , bottom : t ? r : 0 } } , setScrollLeft : function ( e ) { this . horiz . scrollLeft != e && ( this . horiz . scrollLeft = e ) , this . disableHoriz && this . enableZeroWidthBar ( this . horiz , this . disableHoriz ) } , setScrollTop : function ( e ) { this . vert . scrollTop != e && ( this . vert . scrollTop = e ) , this . disableVert && this . enableZeroWidthBar ( this . vert , this . disableVert ) } , zeroWidthHack : function ( ) { var e = Eo && ! To ? "12px" : "18px" ; this . horiz . style . height = this . vert . style . width = e , this . horiz . style . pointerEvents = this . vert . style . pointerEvents = "none" , this . disableHoriz = new Ei , this . disableVert = new Ei } , enableZeroWidthBar : function ( e , t ) { function n ( ) { var r = e . getBoundingClientRect ( ) , i = document . elementFromPoint ( r . left + 1 , r . bottom - 1 ) ; i != e ? e . style . pointerEvents = "none" : t . set ( 1e3 , n ) } e . style . pointerEvents = "auto" , t . set ( 1e3 , n ) } , clear : function ( ) { var e = this . horiz . parentNode ; e . removeChild ( this . horiz ) , e . removeChild ( this . vert ) } } , m . prototype ) , g . prototype = Wi ( { update : function ( ) { return { bottom : 0 , right : 0 } } , setScrollLeft : function ( ) { } , setScrollTop : function ( ) { } , clear : function ( ) { } } , g . prototype ) , e . scrollbarModel = { native : m , null : g } , L . prototype . signal = function ( e , t ) { Ni ( e , t ) && this . events . push ( arguments ) } , L . prototype . finish = function ( ) { for ( var e = 0 ; e < this . events . length ; e ++ ) Pa . apply ( null , this . events [ e ] ) } ; var Bo = e . Pos = function ( e , t ) { return this instanceof Bo ? ( this . line = e , void ( this . ch = t ) ) : new Bo ( e , t ) } , _o = e . cmpPos = function ( e , t ) { return e . line - t . line || e . ch - t . ch } , Fo = null ; ne . prototype = Wi ( { init : function ( e ) { function t ( e ) { if ( ! Ti ( r , e ) ) { if ( r . somethingSelected ( ) ) Fo = { lineWise : ! 1 , text : r . getSelections ( ) } , n . inaccurateSelection && ( n . prevInput = "" , n . inaccurateSelection = ! 1 , o . value = Fo . text . join ( "\n" ) , Ua ( o ) ) ; else { if ( ! r . options . lineWiseCopyCut ) return ; var t = ee ( r ) ; Fo = { lineWise : ! 0 , text : t . text } , "cut" == e . type ? r . setSelections ( t . ranges , null , Wa ) : ( n . prevInput = "" , o . value = t . text . join ( "\n" ) , Ua ( o ) ) } "cut" == e . type && ( r . state . cutIncoming = ! 0 ) } } var n = this , r = this . cm , i = this . wrapper = re ( ) , o = this . textarea = i . firstChild ; e . wrapper . insertBefore ( i , e . wrapper . firstChild ) , No && ( o . style . width = "0px" ) , Ea ( o , "input" , function ( ) { xo && bo >= 9 && n . hasSelection && ( n . hasSelection = null ) , n . poll ( ) } ) , Ea ( o , "paste" , function ( e ) { Ti ( r , e ) || J ( e , r ) || ( r . state . pasteIncoming = ! 0 , n . fastPoll ( ) ) } ) , Ea ( o , "cut" , t ) , Ea ( o , "copy" , t ) , Ea ( e . scroller , "paste" , function ( t ) { Gt ( e , t ) || Ti ( r , t ) || ( r . state . pasteIncoming = ! 0 , n . focus ( ) ) } ) , Ea ( e . lineSpace , "selectstart" , function ( t ) { Gt ( e , t ) || Ma ( t ) } ) , Ea ( o , "compositionstart" , function ( ) { var e = r . getCursor ( "from" ) ; n . composing && n . composing . range . clear ( ) , n . composing = { start : e , range : r . markText ( e , r . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) } } ) , Ea ( o , "compositionend" , function ( ) { n . composing && ( n . poll ( ) , n . composing . range . clear ( ) , n . composing = null ) } ) } , prepareSelection : function ( ) { var e = this . cm , t = e . display , n = e . doc , r = De ( e ) ; if ( e . options . moveInputWithCursor ) { var i = dt ( 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 ; qi ( n . cursorDiv , e . cursors ) , qi ( 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 = rl && ( 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 && Ua ( this . textarea ) , xo && bo >= 9 && ( this . hasSelection = a ) } else e || ( this . prevInput = this . textarea . value = "" , xo && bo >= 9 && ( this . hasSelection = null ) ) ; this . inaccurateSelection = t } } , getField : function ( ) { return this . textarea } , supportsTouch : function ( ) { return ! 1 } , focus : function ( ) { if ( "nocursor" != this . cm . options . readOnly && ( ! Ao || Gi ( ) != 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 . option
e . somethingSelected ( ) ? e . indentSelection ( "add" ) : e . execCommand ( "insertTab" ) } , transposeChars : function ( e ) { At ( e , function ( ) { for ( var t = e . listSelections ( ) , n = [ ] , r = 0 ; r < t . length ; r ++ ) { var i = t [ r ] . head , o = Zr ( e . doc , i . line ) . text ; if ( o ) if ( i . ch == o . length && ( i = new Bo ( i . line , i . ch - 1 ) ) , i . ch > 0 ) i = new Bo ( i . line , i . ch + 1 ) , e . replaceRange ( o . charAt ( i . ch - 1 ) + o . charAt ( i . ch - 2 ) , Bo ( i . line , i . ch - 2 ) , i , "+transpose" ) ; else if ( i . line > e . doc . first ) { var a = Zr ( e . doc , i . line - 1 ) . text ; a && e . replaceRange ( o . charAt ( 0 ) + e . doc . lineSeparator ( ) + a . charAt ( a . length - 1 ) , Bo ( i . line - 1 , a . length - 1 ) , Bo ( i . line , 1 ) , "+transpose" ) } n . push ( new fe ( i , i ) ) } e . setSelections ( n ) } ) } , newlineAndIndent : function ( e ) { At ( e , function ( ) { for ( var t = e . listSelections ( ) . length , n = 0 ; t > n ; n ++ ) { var r = e . listSelections ( ) [ n ] ; e . replaceRange ( e . doc . lineSeparator ( ) , r . anchor , r . head , "+input" ) , e . indentLine ( r . from ( ) . line + 1 , null , ! 0 ) } Bn ( e ) } ) } , openLine : function ( e ) { e . replaceSelection ( "\n" , "start" ) } , toggleOverwrite : function ( e ) { e . toggleOverwrite ( ) } } , fa = e . keyMap = { } ; fa . basic = { Left : "goCharLeft" , Right : "goCharRight" , Up : "goLineUp" , Down : "goLineDown" , End : "goLineEnd" , Home : "goLineStartSmart" , PageUp : "goPageUp" , PageDown : "goPageDown" , Delete : "delCharAfter" , Backspace : "delCharBefore" , "Shift-Backspace" : "delCharBefore" , Tab : "defaultTab" , "Shift-Tab" : "indentAuto" , Enter : "newlineAndIndent" , Insert : "toggleOverwrite" , Esc : "singleSelection" } , fa . pcDefault = { "Ctrl-A" : "selectAll" , "Ctrl-D" : "deleteLine" , "Ctrl-Z" : "undo" , "Shift-Ctrl-Z" : "redo" , "Ctrl-Y" : "redo" , "Ctrl-Home" : "goDocStart" , "Ctrl-End" : "goDocEnd" , "Ctrl-Up" : "goLineUp" , "Ctrl-Down" : "goLineDown" , "Ctrl-Left" : "goGroupLeft" , "Ctrl-Right" : "goGroupRight" , "Alt-Left" : "goLineStart" , "Alt-Right" : "goLineEnd" , "Ctrl-Backspace" : "delGroupBefore" , "Ctrl-Delete" : "delGroupAfter" , "Ctrl-S" : "save" , "Ctrl-F" : "find" , "Ctrl-G" : "findNext" , "Shift-Ctrl-G" : "findPrev" , "Shift-Ctrl-F" : "replace" , "Shift-Ctrl-R" : "replaceAll" , "Ctrl-[" : "indentLess" , "Ctrl-]" : "indentMore" , "Ctrl-U" : "undoSelection" , "Shift-Ctrl-U" : "redoSelection" , "Alt-U" : "redoSelection" , fallthrough : "basic" } , fa . emacsy = { "Ctrl-F" : "goCharRight" , "Ctrl-B" : "goCharLeft" , "Ctrl-P" : "goLineUp" , "Ctrl-N" : "goLineDown" , "Alt-F" : "goWordRight" , "Alt-B" : "goWordLeft" , "Ctrl-A" : "goLineStart" , "Ctrl-E" : "goLineEnd" , "Ctrl-V" : "goPageDown" , "Shift-Ctrl-V" : "goPageUp" , "Ctrl-D" : "delCharAfter" , "Ctrl-H" : "delCharBefore" , "Alt-D" : "delWordAfter" , "Alt-Backspace" : "delWordBefore" , "Ctrl-K" : "killLine" , "Ctrl-T" : "transposeChars" , "Ctrl-O" : "openLine" } , fa . 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" ] } , fa . default = Eo ? fa . macDefault : fa . 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 = Ri ( n . split ( " " ) , Yn ) , 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 ha = e . lookupKey = function ( e , t , n , r ) { t = $n ( 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 ha ( e , t . fallthrough , n , r ) ; for ( var o = 0 ; o < t . fallthrough . length ; o ++ ) { var a = ha ( e , t . fallthrough [ o ] , n , r ) ; if ( a ) return a } } } , da = e . isModifierKey = function ( e ) { var t = "string" == typeof e ? e : ol [ e . keyCode ] ; return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" ==
function o ( e , t , n ) { return t . f = t . block = n , n ( e , t ) } function a ( e ) { return ! e || ! /\S/ . test ( e . string ) } function l ( e ) { return e . linkTitle = ! 1 , e . em = ! 1 , e . strong = ! 1 , e . strikethrough = ! 1 , e . quote = 0 , e . indentedCode = ! 1 , k && e . f == c && ( e . f = p , e . block = s ) , e . trailingSpace = 0 , e . trailingSpaceNewLine = ! 1 , e . prevLine = e . thisLine , e . thisLine = null , null } function s ( t , o ) { var l = t . sol ( ) , s = o . list !== ! 1 , c = o . indentedCode ; o . indentedCode = ! 1 , s && ( o . indentationDiff >= 0 ? ( o . indentationDiff < 4 && ( o . indentation -= o . indentationDiff ) , o . list = null ) : o . indentation > 0 ? o . list = null : o . list = ! 1 ) ; var f = null ; if ( o . indentationDiff >= 4 ) return t . skipToEnd ( ) , c || a ( o . prevLine ) ? ( o . indentation -= 4 , o . indentedCode = ! 0 , S . code ) : null ; if ( t . eatSpace ( ) ) return null ; if ( ( f = t . match ( A ) ) && f [ 1 ] . length <= 6 ) return o . header = f [ 1 ] . length , n . highlightFormatting && ( o . formatting = "header" ) , o . f = o . inline , h ( o ) ; if ( ! ( a ( o . prevLine ) || o . quote || s || c ) && ( f = t . match ( E ) ) ) return o . header = "=" == f [ 0 ] . charAt ( 0 ) ? 1 : 2 , n . highlightFormatting && ( o . formatting = "header" ) , o . f = o . inline , h ( o ) ; if ( t . eat ( ">" ) ) return o . quote = l ? 1 : o . quote + 1 , n . highlightFormatting && ( o . formatting = "quote" ) , t . eatSpace ( ) , h ( o ) ; if ( "[" === t . peek ( ) ) return i ( t , o , y ) ; if ( t . match ( L , ! 0 ) ) return o . hr = ! 0 , S . hr ; if ( ( a ( o . prevLine ) || s ) && ( t . match ( T , ! 1 ) || t . match ( M , ! 1 ) ) ) { var d = null ; for ( t . match ( T , ! 0 ) ? d = "ul" : ( t . match ( M , ! 0 ) , d = "ol" ) , o . indentation = t . column ( ) + t . current ( ) . length , o . list = ! 0 ; o . listStack && t . column ( ) < o . listStack [ o . listStack . length - 1 ] ; ) o . listStack . pop ( ) ; return o . listStack . push ( o . indentation ) , n . taskLists && t . match ( N , ! 1 ) && ( o . taskList = ! 0 ) , o . f = o . inline , n . highlightFormatting && ( o . formatting = [ "list" , "list-" + d ] ) , h ( o ) } return n . fencedCodeBlocks && ( f = t . match ( I , ! 0 ) ) ? ( o . fencedChars = f [ 1 ] , o . localMode = r ( f [ 2 ] ) , o . localMode && ( o . localState = e . startState ( o . localMode ) ) , o . f = o . block = u , n . highlightFormatting && ( o . formatting = "code-block" ) , o . code = - 1 , h ( o ) ) : i ( t , o , o . inline ) } function c ( t , n ) { var r = w . token ( t , n . htmlState ) ; if ( ! k ) { var i = e . innerMode ( w , n . htmlState ) ; ( "xml" == i . mode . name && null === i . state . tagStart && ! i . state . context && i . state . tokenize . isInText || n . md _inside && t . current ( ) . indexOf ( ">" ) > - 1 ) && ( n . f = p , n . block = s , n . htmlState = null ) } return r } function u ( e , t ) { return t . fencedChars && e . match ( t . fencedChars , ! 1 ) ? ( t . localMode = t . localState = null , t . f = t . block = f , null ) : t . localMode ? t . localMode . token ( e , t . localState ) : ( e . skipToEnd ( ) , S . code ) } 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 ( S . formatting ) , "string" == typeof e . formatting && ( e . formatting = [ e . formatting ] ) ; for ( var r = 0 ; r < e . formatting . length ; r ++ ) t . push ( S . formatting + "-" + e . formatting [ r ] ) , "header" === e . formatting [ r ] && t . push ( S . formatting + "-" + e . formatting [ r ] + "-" + e . header ) , "quote" === e . formatting [ r ] && ( ! n . maxBlockquoteDepth || n . maxBlockquoteDepth >= e . quote ? t . push ( S . 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 ( S . linkHref , "url" ) : ( e . strong && t . push ( S . strong ) , e . em && t . push ( S . em ) , e . strikethrough && t . push ( S . strikethrough ) , e . linkText && t . push ( S . linkText ) , e . code && t . push ( S . code ) ) , e . header && t . push ( S . header , S . header + "-" + e . header ) , e . quote && ( t . push ( S . quote ) , ! n . maxBlockquoteDepth || n . maxBlockquoteDepth >= e . quote ? t . push ( S . quote + "-" + e . quote ) : t . push ( S . quote + "-" + n . maxBlockquoteDepth ) ) , e . list !== ! 1 ) { var i = ( e . listStack . length - 1 ) % 3 ; i ? 1 === i ? t . push ( S . list2 ) : t . push ( S . list3 ) : t . push ( S . 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 ) { return e . match ( O , ! 0 ) ? h ( t ) : void 0 } 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 ( N , ! 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 + ""
d . blockquote = c ( d . blockquote ) ( "def" , d . def ) ( ) , d . _tag = "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b" , d . html = c ( d . html ) ( "comment" , /<!--[\s\S]*?-->/ ) ( "closed" , /<(tag)[\s\S]+?<\/\1>/ ) ( "closing" , /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/ ) ( /tag/g , d . _tag ) ( ) , d . paragraph = c ( d . paragraph ) ( "hr" , d . hr ) ( "heading" , d . heading ) ( "lheading" , d . lheading ) ( "blockquote" , d . blockquote ) ( "tag" , "<" + d . _tag ) ( "def" , d . def ) ( ) , d . normal = f ( { } , d ) , d . gfm = f ( { } , d . normal , { fences : /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/ , paragraph : /^/ , heading : /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ } ) , d . gfm . paragraph = c ( d . paragraph ) ( "(?!" , "(?!" + d . gfm . fences . source . replace ( "\\1" , "\\2" ) + "|" + d . list . source . replace ( "\\1" , "\\3" ) + "|" ) ( ) , d . tables = f ( { } , d . gfm , { nptable : /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/ , table : /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ } ) , t . rules = d , t . lex = function ( e , n ) { var r = new t ( n ) ; return r . lex ( e ) } , t . prototype . lex = function ( e ) { return e = e . replace ( /\r\n|\r/g , "\n" ) . replace ( /\t/g , " " ) . replace ( /\u00a0/g , " " ) . replace ( /\u2424/g , "\n" ) , this . token ( e , ! 0 ) } , t . prototype . token = function ( e , t , n ) { for ( var r , i , o , a , l , s , c , u , f , e = e . replace ( /^ +$/gm , "" ) ; e ; ) if ( ( o = this . rules . newline . exec ( e ) ) && ( e = e . substring ( o [ 0 ] . length ) , o [ 0 ] . length > 1 && this . tokens . push ( { type : "space" } ) ) , o = this . rules . code . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , o = o [ 0 ] . replace ( /^ {4}/gm , "" ) , this . tokens . push ( { type : "code" , text : this . options . pedantic ? o : o . replace ( /\n+$/ , "" ) } ) ; else if ( o = this . rules . fences . exec ( e ) ) e = e . substring ( o [ 0 ] . length ) , 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 ; f > u ; 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 . a
if ( void 0 === e . toolbar ) { e . toolbar = [ ] ; for ( var o in K ) K . hasOwnProperty ( o ) && ( - 1 != o . indexOf ( "separator-" ) && e . toolbar . push ( "|" ) , ( K [ o ] . default === ! 0 || e . showIcons && e . showIcons . constructor === Array && - 1 != e . showIcons . indexOf ( o ) ) && e . toolbar . push ( o ) ) } e . hasOwnProperty ( "status" ) || ( e . status = [ "autosave" , "lines" , "words" , "cursor" ] ) , e . previewRender || ( e . previewRender = function ( e ) { return this . parent . markdown ( e ) } ) , e . parsingConfig = H ( { highlightFormatting : ! 0 } , e . parsingConfig || { } ) , e . insertTexts = H ( { } , X , e . insertTexts || { } ) , e . promptTexts = Z , e . blockStyles = H ( { } , J , e . blockStyles || { } ) , e . shortcuts = H ( { } , G , e . shortcuts || { } ) , void 0 != e . autosave && void 0 != e . autosave . unique _id && "" != e . autosave . unique _id && ( e . autosave . uniqueId = e . autosave . unique _id ) , this . options = e , this . render ( ) , ! e . initialValue || this . options . autosave && this . options . autosave . foundSavedValue === ! 0 || this . value ( e . initialValue ) } function _ ( ) { if ( "object" != typeof localStorage ) return ! 1 ; try { localStorage . setItem ( "smde_localStorage" , 1 ) , localStorage . removeItem ( "smde_localStorage" ) } catch ( e ) { return ! 1 } return ! 0 } var F = e ( "codemirror" ) ; e ( "codemirror/addon/edit/continuelist.js" ) , e ( "./codemirror/tablist" ) , e ( "codemirror/addon/display/fullscreen.js" ) , e ( "codemirror/mode/markdown/markdown.js" ) , e ( "codemirror/addon/mode/overlay.js" ) , e ( "codemirror/addon/display/placeholder.js" ) , e ( "codemirror/addon/selection/mark-selection.js" ) , e ( "codemirror/mode/gfm/gfm.js" ) , e ( "codemirror/mode/xml/xml.js" ) ; 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 : S , toggleBlockquote : d , toggleOrderedList : b , toggleUnorderedList : x , toggleCodeBlock : h , togglePreview : A , toggleStrikethrough : f , toggleHeading1 : g , toggleHeading2 : v , toggleHeading3 : y , cleanBlock : w , drawTable : C , drawHorizontalRule : L , undo : T , redo : M , toggleSideBySide : N , 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 ) || / 1 2 0 7 | 6 3 1 0 | 6 5 9 0 | 3 g s o | 4 t h p | 5 0 [ 1 - 6 ] i | 7 7 0 s | 8 0 2 s | a w a | a b a c | a c ( e r | o o | s \ - ) | a i ( k o | r n ) | a l ( a v | c a | c o ) | a m o i | a n ( e x | n y | y w ) | a p t u | a r ( c h | g o ) | a s ( t e | u s ) | a t t w | a u ( d i | \ - m | r | s ) | a v a n | b e ( c k | l l | n q ) | b i ( l b | r d ) | b l ( a c | a z ) | b r ( e | v ) w | b u m b | b w \ - ( n | u ) | c 5 5 \ / | c a p i | c c w a | c d m \ - | c e l l | c h t m | c l d c | c m d \ - | c o ( m p | n d ) | c r a w | d a ( i t | l l | n g ) | d b t e | d c \ - s | d e v i | d i c a | d m o b | d o ( c | p ) o | d s ( 1 2 | \ - d ) | e l ( 4 9 | a i ) | e m ( l 2 | u l ) | e r ( i c | k 0 ) | e s l 8 | e z ( [ 4 - 7 ] 0 | o s | w a | z e ) | f e t c | f l y ( \ - | _ ) | g 1 u | g 5 6 0 | g e n e | g f \ - 5 | g \ - m o | g o ( \ . w | o d ) | g r ( a d | u n ) | h a i e | h c i t | h d \ - ( m | p | t ) | h e i \ - | h i ( p t | t a ) | h p ( i | i p ) | h s \ - c | h t ( c ( \ - | | _ | a | g | p | s | t ) | t p ) | h u ( a w | t c ) | i \ - ( 2 0 | g o | m a ) | i 2 3 0 | i a c ( | \ - | \ / ) | i b r o | i d e a | i g 0 1 | i k o m | i m 1 k | i n n o | i p a q | i r i s | j a ( t | v ) a | j b r o | j e m u | j i g s | k d d i | k e j i | k g t ( | \ / ) | k l o n | k p t | k w c \ - | k y o ( c | k ) | l e ( n o | x i ) | l g ( g | \ / ( k | l | u ) | 5 0 | 5 4 | \ - [ a - w ] ) | l i b w | l y n x | m 1 \ - w | m 3 g a | m 5 0 \ / | m a ( t e | u i | x o ) | m c ( 0 1 | 2 1 | c a ) | m \ - c r | m e ( r c | r i ) | m i ( o 8 | o a | t s ) | m m e f | m o ( 0 1 | 0 2 | b i | d e | d o | t ( \ - | | o | v ) | z z ) | m t ( 5 0 | p 1 | v ) | m w b p | m y w a | n 1 0 [ 0 - 2 ] | n 2 0 [ 2 - 3 ] | n 3 0 ( 0 | 2 ) | n 5 0 ( 0 | 2 | 5 ) | n 7 ( 0 ( 0 | 1 ) | 1 0 ) | n e ( ( c | m ) \ - | o n | t f | w f | w g | w t ) | n o k ( 6 | i ) | n z p h | o 2 i m | o p ( t i | w v ) | o r a n | o w g 1 | p 8 0 0 | p a n ( a | d | t ) | p d x g | p g ( 1 3 | \ - ( [ 1 - 8 ] | c ) ) | p h i l | p i r e | p l ( a y | u c ) | p n \ - 2 | p o ( c k | r t | s e ) | p r o x | p s i o | p t \ - g | q a \ - a | q c ( 0 7 | 1 2 | 2 1 | 3 2 | 6 0 | \ - [ 2 - 7 ] | i \ - ) | q t e k | r 3 8 0 | r 6 0 0 | r a k s | r i m 9 | r o ( v e | z o ) | s 5 5 \ / | s a ( g e | m a | m m | m s | n y | v a ) | s c ( 0 1 | h \ - | o o | p \ - ) | s d k \ / | s e ( c ( \ - | 0 | 1 ) | 4 7 | m c | n d | r i ) | s g h \ - | s h a r | s i e ( \ - | m ) | s k \ - 0 | s l ( 4 5 | i d ) | s m ( a l | a r | b 3 | i t | t 5 ) | s o ( f t | n y ) | s p ( 0 1 | h \ - | v \ - | v ) | s y ( 0 1 | m b ) | t 2 ( 1 8 | 5 0 ) | t 6 ( 0 0 | 1 0 | 1 8 ) | t a ( g t | l k ) | t c l \ - | t d g \ - | t e l ( i | m ) | t i m \ - | t \ - m o | t o ( p l | s h ) | t s ( 7 0 | m \ - | m 3 | m 5 ) | t x \ - 9 | u p ( \ . b | g 1 | s i ) | u t s t | v 4 0 0 |
e . super _ = t , e . prototype = Object . create ( t . prototype , { constructor : { value : e , enumerable : ! 1 , writable : ! 0 , configurable : ! 0 } } ) } , t . mixin = function ( e , t ) { for ( var n in t ) e [ n ] = t [ n ] ; return e } , t . implement = function ( e , n ) { t . mixin ( e , n ) } } ) , ace . define ( "ace/lib/keys" , [ "require" , "exports" , "module" , "ace/lib/fixoldbrowsers" , "ace/lib/oop" ] , function ( e , t , n ) { "use strict" ; e ( "./fixoldbrowsers" ) ; var r = e ( "./oop" ) , i = function ( ) { var t , n , e = { MODIFIER _KEYS : { 16 : "Shift" , 17 : "Ctrl" , 18 : "Alt" , 224 : "Meta" } , KEY _MODS : { ctrl : 1 , alt : 2 , option : 2 , shift : 4 , super : 8 , meta : 8 , command : 8 , cmd : 8 } , FUNCTION _KEYS : { 8 : "Backspace" , 9 : "Tab" , 13 : "Return" , 19 : "Pause" , 27 : "Esc" , 32 : "Space" , 33 : "PageUp" , 34 : "PageDown" , 35 : "End" , 36 : "Home" , 37 : "Left" , 38 : "Up" , 39 : "Right" , 40 : "Down" , 44 : "Print" , 45 : "Insert" , 46 : "Delete" , 96 : "Numpad0" , 97 : "Numpad1" , 98 : "Numpad2" , 99 : "Numpad3" , 100 : "Numpad4" , 101 : "Numpad5" , 102 : "Numpad6" , 103 : "Numpad7" , 104 : "Numpad8" , 105 : "Numpad9" , "-13" : "NumpadEnter" , 112 : "F1" , 113 : "F2" , 114 : "F3" , 115 : "F4" , 116 : "F5" , 117 : "F6" , 118 : "F7" , 119 : "F8" , 120 : "F9" , 121 : "F10" , 122 : "F11" , 123 : "F12" , 144 : "Numlock" , 145 : "Scrolllock" } , PRINTABLE _KEYS : { 32 : " " , 48 : "0" , 49 : "1" , 50 : "2" , 51 : "3" , 52 : "4" , 53 : "5" , 54 : "6" , 55 : "7" , 56 : "8" , 57 : "9" , 59 : ";" , 61 : "=" , 65 : "a" , 66 : "b" , 67 : "c" , 68 : "d" , 69 : "e" , 70 : "f" , 71 : "g" , 72 : "h" , 73 : "i" , 74 : "j" , 75 : "k" , 76 : "l" , 77 : "m" , 78 : "n" , 79 : "o" , 80 : "p" , 81 : "q" , 82 : "r" , 83 : "s" , 84 : "t" , 85 : "u" , 86 : "v" , 87 : "w" , 88 : "x" , 89 : "y" , 90 : "z" , 107 : "+" , 109 : "-" , 110 : "." , 186 : ";" , 187 : "=" , 188 : "," , 189 : "-" , 190 : "." , 191 : "/" , 192 : "`" , 219 : "[" , 220 : "\\" , 221 : "]" , 222 : "'" , 111 : "/" , 106 : "*" } } ; for ( n in e . FUNCTION _KEYS ) t = e . FUNCTION _KEYS [ n ] . toLowerCase ( ) , e [ t ] = parseInt ( n , 10 ) ; for ( n in e . PRINTABLE _KEYS ) t = e . PRINTABLE _KEYS [ n ] . toLowerCase ( ) , e [ t ] = parseInt ( n , 10 ) ; return r . mixin ( e , e . MODIFIER _KEYS ) , r . mixin ( e , e . PRINTABLE _KEYS ) , r . mixin ( e , e . FUNCTION _KEYS ) , e . enter = e . return , e . escape = e . esc , e . del = e . delete , e [ 173 ] = "-" , function ( ) { for ( var t = [ "cmd" , "ctrl" , "alt" , "shift" ] , n = Math . pow ( 2 , t . length ) ; n -- ; ) e . KEY _MODS [ n ] = t . filter ( function ( t ) { return n & e . KEY _MODS [ t ] } ) . join ( "-" ) + "-" } ( ) , e . KEY _MODS [ 0 ] = "" , e . KEY _MODS [ - 1 ] = "input-" , e } ( ) ; r . mixin ( t , i ) , t . keyCodeToString = function ( e ) { var t = i [ e ] ; return "string" != typeof t && ( t = String . fromCharCode ( e ) ) , t . toLowerCase ( ) } } ) , ace . define ( "ace/lib/useragent" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; if ( t . OS = { LINUX : "LINUX" , MAC : "MAC" , WINDOWS : "WINDOWS" } , t . getOS = function ( ) { return t . isMac ? t . OS . MAC : t . isLinux ? t . OS . LINUX : t . OS . WINDOWS } , "object" == typeof navigator ) { var r = ( navigator . platform . match ( /mac|win|linux/i ) || [ "other" ] ) [ 0 ] . toLowerCase ( ) , i = navigator . userAgent ; t . isWin = "win" == r , t . isMac = "mac" == r , t . isLinux = "linux" == r , t . isIE = "Microsoft Internet Explorer" == navigator . appName || navigator . appName . indexOf ( "MSAppHost" ) >= 0 ? parseFloat ( ( i . match ( /(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/ ) || [ ] ) [ 1 ] ) : parseFloat ( ( i . match ( /(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/ ) || [ ] ) [ 1 ] ) , t . isOldIE = t . isIE && t . isIE < 9 , t . isGecko = t . isMozilla = ( window . Controllers || window . controllers ) && "Gecko" === window . navigator . product , t . isOldGecko = t . isGecko && parseInt ( ( i . match ( /rv:(\d+)/ ) || [ ] ) [ 1 ] , 10 ) < 4 , t . isOpera = window . opera && "[object Opera]" == Object . prototype . toString . call ( window . opera ) , t . isWebKit = parseFloat ( i . split ( "WebKit/" ) [ 1 ] ) || void 0 , t . isChrome = parseFloat ( i . split ( " Chrome/" ) [ 1 ] ) || void 0 , t . isAIR = i . indexOf ( "AdobeAIR" ) >= 0 , t . isIPad = i . indexOf ( "iPad" ) >= 0 , t . isTouchPad = i . indexOf ( "TouchPad" ) >= 0 , t . isChromeOS = i . indexOf ( " CrOS " ) >= 0 } } ) , ace . define ( "ace/lib/event" , [ "require" , "exports" , "module" , "ace/lib/keys" , "ace/lib/useragent" ] , function ( e , t , n ) { "use strict" ; function a ( e , t , n ) { var a = u ( t ) ; if ( ! i . isMac && s ) { if ( t . getModifierState && ( t . getModifierState ( "OS" ) || t . getModifierState ( "Win" ) ) && ( a |= 8 ) , s . altGr ) { if ( 3 == ( 3 & a ) ) return ; s . altGr = 0 } if ( 18 === n || 17 === n ) { var f = "location" in t ? t . location : t . keyLocation ; if ( 17 === n && 1 === f ) 1 == s [ n ] && ( o = t . timeStamp ) ; else if ( 18 === n && 3 === a && 2 === f ) { var l = t . timeStamp - o ; l < 50 && ( s . altGr = ! 0 ) } } } if ( n in r . MODIFIER _KEYS && ( n = - 1 ) , 8 & a && n >= 91 && n <= 93 && ( n = - 1 ) , ! a && 13 === n ) { var f = "location" in t ? t . location : t . keyLocation ; if ( 3 === f && ( e ( t , a , - n ) , t . defaultPrevented ) ) return } if ( i . isChromeOS && 8 & a ) { if ( e ( t , a , n ) , t . defaultPrevented ) return ; a &= - 9 } return ! ! ( a || n in r . FUNCTION _KEYS || n in r . PRINTABLE _KEYS ) && e ( t , a , n ) } function f ( ) { s = Object . create ( null ) } var r =
this . setState ( "dragReady" ) } , this . onMouseDrag = function ( e ) { var t = this . editor . container ; if ( s . isIE && "dragReady" == this . state ) { var n = l ( this . mousedownEvent . x , this . mousedownEvent . y , this . x , this . y ) ; n > 3 && t . dragDrop ( ) } if ( "dragWait" === this . state ) { var n = l ( this . mousedownEvent . x , this . mousedownEvent . y , this . x , this . y ) ; n > 0 && ( t . draggable = ! 1 , this . startSelect ( this . mousedownEvent . getDocumentPosition ( ) ) ) } } , this . onMouseDown = function ( e ) { if ( this . $dragEnabled ) { this . mousedownEvent = e ; var t = this . editor , n = e . inSelection ( ) , r = e . getButton ( ) , i = e . domEvent . detail || 1 ; if ( 1 === i && 0 === r && n ) { if ( e . editor . inMultiSelectMode && ( e . getAccelKey ( ) || e . getShiftKey ( ) ) ) return ; this . mousedownEvent . time = Date . now ( ) ; var o = e . domEvent . target || e . domEvent . srcElement ; if ( "unselectable" in o && ( o . unselectable = "on" ) , t . getDragDelay ( ) ) { if ( s . isWebKit ) { this . cancelDrag = ! 0 ; var u = t . container ; u . draggable = ! 0 } this . setState ( "dragWait" ) } else this . startDrag ( ) ; this . captureMouse ( e , this . onMouseDrag . bind ( this ) ) , e . defaultPrevented = ! 0 } } } } ) . call ( f . prototype ) , t . DragdropHandler = f } ) , ace . define ( "ace/lib/net" , [ "require" , "exports" , "module" , "ace/lib/dom" ] , function ( e , t , n ) { "use strict" ; var r = e ( "./dom" ) ; t . get = function ( e , t ) { var n = new XMLHttpRequest ; n . open ( "GET" , e , ! 0 ) , n . onreadystatechange = function ( ) { 4 === n . readyState && t ( n . responseText ) } , n . send ( null ) } , t . loadScript = function ( e , t ) { var n = r . getDocumentHead ( ) , i = document . createElement ( "script" ) ; i . src = e , n . appendChild ( i ) , i . onload = i . onreadystatechange = function ( e , n ) { ! n && i . readyState && "loaded" != i . readyState && "complete" != i . readyState || ( i = i . onload = i . onreadystatechange = null , n || t ( ) ) } } , t . qualifyURL = function ( e ) { var t = document . createElement ( "a" ) ; return t . href = e , t . href } } ) , ace . define ( "ace/lib/event_emitter" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = { } , i = function ( ) { this . propagationStopped = ! 0 } , s = function ( ) { this . defaultPrevented = ! 0 } ; r . _emit = r . _dispatchEvent = function ( e , t ) { this . _eventRegistry || ( this . _eventRegistry = { } ) , this . _defaultHandlers || ( this . _defaultHandlers = { } ) ; var n = this . _eventRegistry [ e ] || [ ] , r = this . _defaultHandlers [ e ] ; if ( n . length || r ) { "object" == typeof t && t || ( t = { } ) , t . type || ( t . type = e ) , t . stopPropagation || ( t . stopPropagation = i ) , t . preventDefault || ( t . preventDefault = s ) , n = n . slice ( ) ; for ( var o = 0 ; o < n . length && ( n [ o ] ( t , this ) , ! t . propagationStopped ) ; o ++ ) ; return r && ! t . defaultPrevented ? r ( t , this ) : void 0 } } , r . _signal = function ( e , t ) { var n = ( this . _eventRegistry || { } ) [ e ] ; if ( n ) { n = n . slice ( ) ; for ( var r = 0 ; r < n . length ; r ++ ) n [ r ] ( t , this ) } } , r . once = function ( e , t ) { var n = this ; t && this . addEventListener ( e , function r ( ) { n . removeEventListener ( e , r ) , t . apply ( null , arguments ) } ) } , r . setDefaultHandler = function ( e , t ) { var n = this . _defaultHandlers ; if ( n || ( n = this . _defaultHandlers = { _disabled _ : { } } ) , n [ e ] ) { var r = n [ e ] , i = n . _disabled _ [ e ] ; i || ( n . _disabled _ [ e ] = i = [ ] ) , i . push ( r ) ; var s = i . indexOf ( t ) ; s != - 1 && i . splice ( s , 1 ) } n [ e ] = t } , r . removeDefaultHandler = function ( e , t ) { var n = this . _defaultHandlers ; if ( n ) { var r = n . _disabled _ [ e ] ; if ( n [ e ] == t ) { n [ e ] ; r && this . setDefaultHandler ( e , r . pop ( ) ) } else if ( r ) { var s = r . indexOf ( t ) ; s != - 1 && r . splice ( s , 1 ) } } } , r . on = r . addEventListener = function ( e , t , n ) { this . _eventRegistry = this . _eventRegistry || { } ; var r = this . _eventRegistry [ e ] ; return r || ( r = this . _eventRegistry [ e ] = [ ] ) , r . indexOf ( t ) == - 1 && r [ n ? "unshift" : "push" ] ( t ) , t } , r . off = r . removeListener = r . removeEventListener = function ( e , t ) { this . _eventRegistry = this . _eventRegistry || { } ; var n = this . _eventRegistry [ e ] ; if ( n ) { var r = n . indexOf ( t ) ; r !== - 1 && n . splice ( r , 1 ) } } , r . removeAllListeners = function ( e ) { this . _eventRegistry && ( this . _eventRegistry [ e ] = [ ] ) } , t . EventEmitter = r } ) , ace . define ( "ace/lib/app_config" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/event_emitter" ] , function ( e , t , n ) { "no use strict" ; function o ( e ) { "undefined" != typeof console && console . warn && console . warn . apply ( console , arguments ) } function u ( e , t ) { var n = new Error ( e ) ; n . data = t , "object" == typeof console && console . error && console . error ( n ) , setTimeout ( function ( ) { throw n } ) } var r = e ( "./oop" ) , i = e ( "./event_emitter" ) . EventEmitter , s = { setOptions : function ( e ) { Object . keys ( e ) . forEach ( function ( t ) { this . setOption ( t , e [ t ] ) } , this ) } , getOptions : function ( e ) { var t = { } ; return e ? Array . isArray ( e ) || ( t = e , e = Object . keys ( t ) ) : e = Object . keys ( this . $options ) , e . forEach ( function ( e ) { t [ e ] = this . getOption ( e ) }
t = n . shift ( ) ) } else var n = [ ] ; var r = t || "start" , s = this . states [ r ] ; s || ( r = "start" , s = this . states [ r ] ) ; var o = this . matchMappings [ r ] , u = this . regExps [ r ] ; u . lastIndex = 0 ; for ( var a , f = [ ] , l = 0 , c = 0 , h = { type : null , value : "" } ; a = u . exec ( e ) ; ) { var p = o . defaultToken , d = null , v = a [ 0 ] , m = u . lastIndex ; if ( m - v . length > l ) { var g = e . substring ( l , m - v . length ) ; h . type == p ? h . value += g : ( h . type && f . push ( h ) , h = { type : p , value : g } ) } for ( var y = 0 ; y < a . length - 2 ; y ++ ) if ( void 0 !== a [ y + 1 ] ) { d = s [ o [ y ] ] , p = d . onMatch ? d . onMatch ( v , r , n ) : d . token , d . next && ( r = "string" == typeof d . next ? d . next : d . next ( r , n ) , s = this . states [ r ] , s || ( this . reportError ( "state doesn't exist" , r ) , r = "start" , s = this . states [ r ] ) , o = this . matchMappings [ r ] , l = m , u = this . regExps [ r ] , u . lastIndex = m ) ; break } if ( v ) if ( "string" == typeof p ) d && d . merge === ! 1 || h . type !== p ? ( h . type && f . push ( h ) , h = { type : p , value : v } ) : h . value += v ; else if ( p ) { h . type && f . push ( h ) , h = { type : null , value : "" } ; for ( var y = 0 ; y < p . length ; y ++ ) f . push ( p [ y ] ) } if ( l == e . length ) break ; if ( l = m , c ++ > i ) { for ( c > 2 * e . length && this . reportError ( "infinite loop with in ace tokenizer" , { startState : t , line : e } ) ; l < e . length ; ) h . type && f . push ( h ) , h = { value : e . substring ( l , l += 2e3 ) , type : "overflow" } ; r = "start" , n = [ ] ; break } } return h . type && f . push ( h ) , n . length > 1 && n [ 0 ] !== r && n . unshift ( "#tmp" , r ) , { tokens : f , state : n . length ? n : r } } , this . reportError = r . reportError } ) . call ( s . prototype ) , t . Tokenizer = s } ) , ace . define ( "ace/mode/text_highlight_rules" , [ "require" , "exports" , "module" , "ace/lib/lang" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/lang" ) , i = function ( ) { this . $rules = { start : [ { token : "empty_line" , regex : "^$" } , { defaultToken : "text" } ] } } ; ( function ( ) { this . addRules = function ( e , t ) { if ( t ) for ( var n in e ) { for ( var r = e [ n ] , i = 0 ; i < r . length ; i ++ ) { var s = r [ i ] ; ( s . next || s . onMatch ) && ( "string" == typeof s . next && 0 !== s . next . indexOf ( t ) && ( s . next = t + s . next ) , s . nextState && 0 !== s . nextState . indexOf ( t ) && ( s . nextState = t + s . nextState ) ) } this . $rules [ t + n ] = r } else for ( var n in e ) this . $rules [ n ] = e [ n ] } , this . getRules = function ( ) { return this . $rules } , this . embedRules = function ( e , t , n , i , s ) { var o = "function" == typeof e ? ( new e ) . getRules ( ) : e ; if ( i ) for ( var u = 0 ; u < i . length ; u ++ ) i [ u ] = t + i [ u ] ; else { i = [ ] ; for ( var a in o ) i . push ( t + a ) } if ( this . addRules ( o , t ) , n ) for ( var f = Array . prototype [ s ? "push" : "unshift" ] , u = 0 ; u < i . length ; u ++ ) f . apply ( this . $rules [ i [ u ] ] , r . deepCopy ( n ) ) ; this . $embeds || ( this . $embeds = [ ] ) , this . $embeds . push ( t ) } , this . getEmbeds = function ( ) { return this . $embeds } ; var e = function ( e , t ) { return ( "start" != e || t . length ) && t . unshift ( this . nextState , e ) , this . nextState } , t = function ( e , t ) { return t . shift ( ) , t . shift ( ) || "start" } ; this . normalizeRules = function ( ) { function i ( s ) { var o = r [ s ] ; o . processed = ! 0 ; for ( var u = 0 ; u < o . length ; u ++ ) { var a = o [ u ] , f = null ; Array . isArray ( a ) && ( f = a , a = { } ) , ! a . regex && a . start && ( a . regex = a . start , a . next || ( a . next = [ ] ) , a . next . push ( { defaultToken : a . token } , { token : a . token + ".end" , regex : a . end || a . start , next : "pop" } ) , a . token = a . token + ".start" , a . push = ! 0 ) ; var l = a . next || a . push ; if ( l && Array . isArray ( l ) ) { var c = a . stateName ; c || ( c = a . token , "string" != typeof c && ( c = c [ 0 ] || "" ) , r [ c ] && ( c += n ++ ) ) , r [ c ] = l , a . next = c , i ( c ) } else "pop" == l && ( a . next = t ) ; if ( a . push && ( a . nextState = a . next || a . push , a . next = e , delete a . push ) , a . rules ) for ( var h in a . rules ) r [ h ] ? r [ h ] . push && r [ h ] . push . apply ( r [ h ] , a . rules [ h ] ) : r [ h ] = a . rules [ h ] ; var p = "string" == typeof a ? a : "string" == typeof a . include ? a . include : "" ; if ( p && ( f = r [ p ] ) , f ) { var d = [ u , 1 ] . concat ( f ) ; a . noEscape && ( d = d . filter ( function ( e ) { return ! e . next } ) ) , o . splice . apply ( o , d ) , u -- } a . keywordMap && ( a . token = this . createKeywordMapper ( a . keywordMap , a . defaultToken || "text" , a . caseInsensitive ) , delete a . defaultToken ) } } var n = 0 , r = this . $rules ; Object . keys ( r ) . forEach ( i , this ) } , this . createKeywordMapper = function ( e , t , n , r ) { var i = Object . create ( null ) ; return Object . keys ( e ) . forEach ( function ( t ) { var s = e [ t ] ; n && ( s = s . toLowerCase ( ) ) ; for ( var o = s . split ( r || "|" ) , u = o . length ; u -- ; ) i [ o [ u ] ] = t } ) , Object . getPrototypeOf ( i ) && ( i . _ _proto _ _ = null ) , this . $keywordList = Object . keys ( i ) , e = null , n ? function ( e ) { return i [ e . toLowerCase ( ) ] || t } : function ( e ) { return i [ e ] || t } } , this . getKeywords = function ( ) { return this . $keywords } } ) . call ( i . prototype ) , t . TextHighlightRules = i } ) , ace . define ( "ace/mode/behaviour" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = function ( ) { this . $behaviours = { } } ; ( function ( ) { this . add = function ( e , t , n ) { switch ( void 0 ) { case this . $behaviours
Z : "002000A01680180E2000-200A20282029202F205F3000" , Zs : "002000A01680180E2000-200A202F205F3000" , Zl : "2028" , Zp : "2029" , C : "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF" , Cc : "0000-001F007F-009F" , Cf : "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB" , Co : "E000-F8FF" , Cs : "D800-DFFF" , Cn : " 03780379037 F - 0383038 B038D03A20526 - 05300557055805600588058 B - 059005 C8 - 05 CF05EB - 05 EF05F5 - 05 FF06040605061C061D0620065F070E074B074C07B2 - 07 BF07FB - 07 FF082E082F083F - 08 FF093A093B094F095609570973 - 097809800984098 D098E0991099209A909B109B3 - 09 B509BA09BB09C509C609C909CA09CF - 09 D609D8 - 09 DB09DE09E409E509FC - 0 A000A040A0B - 0 A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43 - 0 A460A490A4A0A4E - 0 A500A52 - 0 A580A5D0A5F - 0 A650A76 - 0 A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1 - 0 ADF0AE40AE50AF00AF2 - 0B000 B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E - 0 B550B58 - 0 B5B0B5E0B640B650B72 - 0 B810B840B8B - 0 B8D0B910B96 - 0 B980B9B0B9D0BA0 - 0 BA20BA5 - 0 BA70BAB - 0 BAD0BBA - 0 BBD0BC3 - 0 BC50BC90BCE0BCF0BD1 - 0 BD60BD8 - 0 BE50BFB - 0 C000C040C0D0C110C290C340C3A - 0 C3C0C450C490C4E - 0 C540C570C5A - 0 C5F0C640C650C70 - 0 C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE - 0 CD40CD7 - 0 CDD0CDF0CE40CE50CF00CF3 - 0 D010D040D0D0D110D290D3A - 0 D3C0D450D490D4E - 0 D560D58 - 0 D5F0D640D650D76 - 0 D780D800D810D840D97 - 0 D990DB20DBC0DBE0DBF0DC7 - 0 DC90DCB - 0 DCE0DD50DD70DE0 - 0 DF10DF5 - 0E000 E3B - 0E3 E0E5C - 0E800 E830E850E860E890E8B0E8C0E8E - 0E930 E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE - 0 EFF0F480F6D - 0 F700F8C - 0 F8F0F980FBD0FCD0FD9 - 0 FFF10
! r ) return null ; for ( var s , o , i = { end : { column : 0 } } , u = 0 ; u < r . folds . length ; u ++ ) { o = r . folds [ u ] ; var a = o . range . compareEnd ( e , t ) ; if ( a == - 1 ) { s = this . getLine ( o . start . row ) . substring ( i . end . column , o . start . column ) ; break } if ( 0 === a ) return null ; i = o } return s || ( s = this . getLine ( o . start . row ) . substring ( i . end . column ) ) , n == - 1 ? s . substring ( 0 , t - i . end . column ) : 1 == n ? s . substring ( t - i . end . column ) : s } , this . getFoldLine = function ( e , t ) { var n = this . $foldData , r = 0 ; for ( t && ( r = n . indexOf ( t ) ) , r == - 1 && ( r = 0 ) , r ; r < n . length ; r ++ ) { var i = n [ r ] ; if ( i . start . row <= e && i . end . row >= e ) return i ; if ( i . end . row > e ) return null } return null } , this . getNextFoldLine = function ( e , t ) { var n = this . $foldData , r = 0 ; for ( t && ( r = n . indexOf ( t ) ) , r == - 1 && ( r = 0 ) , r ; r < n . length ; r ++ ) { var i = n [ r ] ; if ( i . end . row >= e ) return i } return null } , this . getFoldedRowCount = function ( e , t ) { for ( var n = this . $foldData , r = t - e + 1 , i = 0 ; i < n . length ; i ++ ) { var s = n [ i ] , o = s . end . row , u = s . start . row ; if ( o >= t ) { u < t && ( u >= e ? r -= t - u : r = 0 ) ; break } o >= e && ( r -= u >= e ? o - u : o - e + 1 ) } return r } , this . $addFoldLine = function ( e ) { return this . $foldData . push ( e ) , this . $foldData . sort ( function ( e , t ) { return e . start . row - t . start . row } ) , e } , this . addFold = function ( e , t ) { var o , n = this . $foldData , r = ! 1 ; e instanceof s ? o = e : ( o = new s ( t , e ) , o . collapseChildren = t . collapseChildren ) , this . $clipRangeToDocument ( o . range ) ; var u = o . start . row , a = o . start . column , f = o . end . row , l = o . end . column ; if ( u < f || u == f && a <= l - 2 ) { var c = this . getFoldAt ( u , a , 1 ) , h = this . getFoldAt ( f , l , - 1 ) ; if ( c && h == c ) return c . addSubFold ( o ) ; c && ! c . range . isStart ( u , a ) && this . removeFold ( c ) , h && ! h . range . isEnd ( f , l ) && this . removeFold ( h ) ; var p = this . getFoldsInRange ( o . range ) ; p . length > 0 && ( this . removeFolds ( p ) , p . forEach ( function ( e ) { o . addSubFold ( e ) } ) ) ; for ( var d = 0 ; d < n . length ; d ++ ) { var v = n [ d ] ; if ( f == v . start . row ) { v . addFold ( o ) , r = ! 0 ; break } if ( u == v . end . row ) { if ( v . addFold ( o ) , r = ! 0 , ! o . sameRow ) { var m = n [ d + 1 ] ; if ( m && m . start . row == f ) { v . merge ( m ) ; break } } break } if ( f <= v . start . row ) break } return r || ( v = this . $addFoldLine ( new i ( this . $foldData , o ) ) ) , this . $useWrapMode ? this . $updateWrapData ( v . start . row , v . start . row ) : this . $updateRowLengthCache ( v . start . row , v . start . row ) , this . $modified = ! 0 , this . _signal ( "changeFold" , { data : o , action : "add" } ) , o } throw new Error ( "The range has to be at least 2 characters width" ) } , this . addFolds = function ( e ) { e . forEach ( function ( e ) { this . addFold ( e ) } , this ) } , this . removeFold = function ( e ) { var t = e . foldLine , n = t . start . row , r = t . end . row , i = this . $foldData , s = t . folds ; if ( 1 == s . length ) i . splice ( i . indexOf ( t ) , 1 ) ; else if ( t . range . isEnd ( e . end . row , e . end . column ) ) s . pop ( ) , t . end . row = s [ s . length - 1 ] . end . row , t . end . column = s [ s . length - 1 ] . end . column ; else if ( t . range . isStart ( e . start . row , e . start . column ) ) s . shift ( ) , t . start . row = s [ 0 ] . start . row , t . start . column = s [ 0 ] . start . column ; else if ( e . sameRow ) s . splice ( s . indexOf ( e ) , 1 ) ; else { var o = t . split ( e . start . row , e . start . column ) ; s = o . folds , s . shift ( ) , o . start . row = s [ 0 ] . start . row , o . start . column = s [ 0 ] . start . column } this . $updating || ( this . $useWrapMode ? this . $updateWrapData ( n , r ) : this . $updateRowLengthCache ( n , r ) ) , this . $modified = ! 0 , this . _signal ( "changeFold" , { data : e , action : "remove" } ) } , this . removeFolds = function ( e ) { for ( var t = [ ] , n = 0 ; n < e . length ; n ++ ) t . push ( e [ n ] ) ; t . forEach ( function ( e ) { this . removeFold ( e ) } , this ) , this . $modified = ! 0 } , this . expandFold = function ( e ) { this . removeFold ( e ) , e . subFolds . forEach ( function ( t ) { e . restoreRange ( t ) , this . addFold ( t ) } , this ) , e . collapseChildren > 0 && this . foldAll ( e . start . row + 1 , e . end . row , e . collapseChildren - 1 ) , e . subFolds = [ ] } , this . expandFolds = function ( e ) { e . forEach ( function ( e ) { this . expandFold ( e ) } , this ) } , this . unfold = function ( e , t ) { var n , i ; if ( null == e ? ( n = new r ( 0 , 0 , this . getLength ( ) , 0 ) , t = ! 0 ) : n = "number" == typeof e ? new r ( e , 0 , e , this . getLine ( e ) . length ) : "row" in e ? r . fromPoints ( e , e ) : e , i = this . getFoldsInRangeList ( n ) , t ) this . removeFolds ( i ) ; else for ( var s = i ; s . length ; ) this . expandFolds ( s ) , s = this . getFoldsInRangeList ( n ) ; if ( i . length ) return i } , this . isRowFolded = function ( e , t ) { return ! ! this . getFoldLine ( e , t ) } , this . getRowFoldEnd = function ( e , t ) { var n = this . getFoldLine ( e , t ) ; return n ? n . end . row : e } , this . getRowFoldStart = function ( e , t ) { var n = this . getFoldLine ( e , t ) ; return n ? n . start . row : e } , this . getFoldDisplayLine = function ( e , t , n , r , i ) { null == r && ( r = e . start . row ) , null == i && ( i = 0 ) , null == t && ( t = e . end . row ) , null == n && ( n = this . getLine ( t ) . length ) ; var s = this . doc , o = "" ; return e . walk ( function ( e , t , n , u ) { if ( ! ( t < r
! ( n > t ) ) ; i ++ ) ; return [ n , i ] } , this . lineWidgets = null , this . getRowLength = function ( e ) { if ( this . lineWidgets ) var t = this . lineWidgets [ e ] && this . lineWidgets [ e ] . rowCount || 0 ; else t = 0 ; return this . $useWrapMode && this . $wrapData [ e ] ? this . $wrapData [ e ] . length + 1 + t : 1 + t } , this . getRowLineCount = function ( e ) { return this . $useWrapMode && this . $wrapData [ e ] ? this . $wrapData [ e ] . length + 1 : 1 } , this . getRowWrapIndent = function ( e ) { if ( this . $useWrapMode ) { var t = this . screenToDocumentPosition ( e , Number . MAX _VALUE ) , n = this . $wrapData [ t . row ] ; return n . length && n [ 0 ] < t . column ? n . indent : 0 } return 0 } , this . getScreenLastRowColumn = function ( e ) { var t = this . screenToDocumentPosition ( e , Number . MAX _VALUE ) ; return this . documentToScreenColumn ( t . row , t . column ) } , this . getDocumentLastRowColumn = function ( e , t ) { var n = this . documentToScreenRow ( e , t ) ; return this . getScreenLastRowColumn ( n ) } , this . getDocumentLastRowColumnPosition = function ( e , t ) { var n = this . documentToScreenRow ( e , t ) ; return this . screenToDocumentPosition ( n , Number . MAX _VALUE / 10 ) } , this . getRowSplitData = function ( e ) { return this . $useWrapMode ? this . $wrapData [ e ] : void 0 } , this . getScreenTabSize = function ( e ) { return this . $tabSize - e % this . $tabSize } , this . screenToDocumentRow = function ( e , t ) { return this . screenToDocumentPosition ( e , t ) . row } , this . screenToDocumentColumn = function ( e , t ) { return this . screenToDocumentPosition ( e , t ) . column } , this . screenToDocumentPosition = function ( e , t ) { if ( e < 0 ) return { row : 0 , column : 0 } ; var n , s , r = 0 , i = 0 , o = 0 , u = 0 , a = this . $screenRowCache , f = this . $getRowCacheIndex ( a , e ) , l = a . length ; if ( l && f >= 0 ) var o = a [ f ] , r = this . $docRowCache [ f ] , c = e > a [ l - 1 ] ; else var c = ! l ; for ( var h = this . getLength ( ) - 1 , p = this . getNextFoldLine ( r ) , d = p ? p . start . row : 1 / 0 ; o <= e && ( u = this . getRowLength ( r ) , ! ( o + u > e || r >= h ) ) ; ) o += u , r ++ , r > d && ( r = p . end . row + 1 , p = this . getNextFoldLine ( r , p ) , d = p ? p . start . row : 1 / 0 ) , c && ( this . $docRowCache . push ( r ) , this . $screenRowCache . push ( o ) ) ; if ( p && p . start . row <= r ) n = this . getFoldDisplayLine ( p ) , r = p . start . row ; else { if ( o + u <= e || r > h ) return { row : h , column : this . getLine ( h ) . length } ; n = this . getLine ( r ) , p = null } var v = 0 ; if ( this . $useWrapMode ) { var m = this . $wrapData [ r ] ; if ( m ) { var g = Math . floor ( e - o ) ; s = m [ g ] , g > 0 && m . length && ( v = m . indent , i = m [ g - 1 ] || m [ m . length - 1 ] , n = n . substring ( i ) ) } } return i += this . $getStringScreenWidth ( n , t - v ) [ 1 ] , this . $useWrapMode && i >= s && ( i = s - 1 ) , p ? p . idxToPosition ( i ) : { row : r , column : i } } , this . documentToScreenPosition = function ( e , t ) { if ( "undefined" == typeof t ) var n = this . $clipPositionToDocument ( e . row , e . column ) ; else n = this . $clipPositionToDocument ( e , t ) ; e = n . row , t = n . column ; var r = 0 , i = null , s = null ; s = this . getFoldAt ( e , t , 1 ) , s && ( e = s . start . row , t = s . start . column ) ; var o , u = 0 , a = this . $docRowCache , f = this . $getRowCacheIndex ( a , e ) , l = a . length ; if ( l && f >= 0 ) var u = a [ f ] , r = this . $screenRowCache [ f ] , c = e > a [ l - 1 ] ; else var c = ! l ; for ( var h = this . getNextFoldLine ( u ) , p = h ? h . start . row : 1 / 0 ; u < e ; ) { if ( u >= p ) { if ( o = h . end . row + 1 , o > e ) break ; h = this . getNextFoldLine ( o , h ) , p = h ? h . start . row : 1 / 0 } else o = u + 1 ; r += this . getRowLength ( u ) , u = o , c && ( this . $docRowCache . push ( u ) , this . $screenRowCache . push ( r ) ) } var d = "" ; h && u >= p ? ( d = this . getFoldDisplayLine ( h , e , t ) , i = h . start . row ) : ( d = this . getLine ( e ) . substring ( 0 , t ) , i = e ) ; var v = 0 ; if ( this . $useWrapMode ) { var m = this . $wrapData [ i ] ; if ( m ) { for ( var g = 0 ; d . length >= m [ g ] ; ) r ++ , g ++ ; d = d . substring ( m [ g - 1 ] || 0 , d . length ) , v = g > 0 ? m . indent : 0 } } return { row : r , column : v + this . $getStringScreenWidth ( d ) [ 0 ] } } , this . documentToScreenColumn = function ( e , t ) { return this . documentToScreenPosition ( e , t ) . column } , this . documentToScreenRow = function ( e , t ) { return this . documentToScreenPosition ( e , t ) . row } , this . getScreenLength = function ( ) { var e = 0 , t = null ; if ( this . $useWrapMode ) for ( var i = this . $wrapData . length , s = 0 , r = 0 , t = this . $foldData [ r ++ ] , o = t ? t . start . row : 1 / 0 ; s < i ; ) { var u = this . $wrapData [ s ] ; e += u ? u . length + 1 : 1 , s ++ , s > o && ( s = t . end . row + 1 , t = this . $foldData [ r ++ ] , o = t ? t . start . row : 1 / 0 ) } else { e = this . getLength ( ) ; for ( var n = this . $foldData , r = 0 ; r < n . length ; r ++ ) t = n [ r ] , e -= t . end . row - t . start . row } return this . lineWidgets && ( e += this . $getWidgetScreenLength ( ) ) , e } , this . $setFontMetrics = function ( e ) { this . $enableVarChar && ( this . $getStringScreenWidth = function ( t , n , r ) { if ( 0 === n ) return [ 0 , 0 ] ; n || ( n = 1 / 0 ) , r = r || 0 ; var i , s ; for ( s = 0 ; s < t . length && ( i = t . charAt ( s ) , r += "\t" === i ? this . getScreenTabSize ( r ) : e . getCharacterWidth ( i ) , ! ( r > n ) ) ; s ++ ) ; return [ r , s ] } ) } , this . destroy = function ( ) { this . bgTokenizer && ( this . bg
this . curOp . docChanged = ! 0 } . bind ( this ) , ! 0 ) , this . on ( "changeSelection" , function ( ) { this . curOp || this . startOperation ( ) , this . curOp . selectionChanged = ! 0 } . bind ( this ) , ! 0 ) } , this . curOp = null , this . prevOp = { } , this . startOperation = function ( e ) { if ( this . curOp ) { if ( ! e || this . curOp . command ) return ; this . prevOp = this . curOp } e || ( this . previousCommand = null , e = { } ) , this . $opResetTimer . schedule ( ) , this . curOp = { command : e . command || { } , args : e . args , scrollTop : this . renderer . scrollTop } , this . curOp . command . name && void 0 !== this . curOp . command . scrollIntoView && this . $blockScrolling ++ } , this . endOperation = function ( e ) { if ( this . curOp ) { if ( e && e . returnValue === ! 1 ) return this . curOp = null ; this . _signal ( "beforeEndOperation" ) ; var t = this . curOp . command ; t . name && this . $blockScrolling > 0 && this . $blockScrolling -- ; var n = t && t . scrollIntoView ; if ( n ) { switch ( n ) { case "center-animate" : n = "animate" ; case "center" : this . renderer . scrollCursorIntoView ( null , . 5 ) ; break ; case "animate" : case "cursor" : this . renderer . scrollCursorIntoView ( ) ; break ; case "selectionPart" : var r = this . selection . getRange ( ) , i = this . renderer . layerConfig ; ( r . start . row >= i . lastRow || r . end . row <= i . firstRow ) && this . renderer . scrollSelectionIntoView ( this . selection . anchor , this . selection . lead ) } "animate" == n && this . renderer . animateScrolling ( this . curOp . scrollTop ) } this . prevOp = this . curOp , this . curOp = null } } , this . $mergeableCommands = [ "backspace" , "del" , "insertstring" ] , this . $historyTracker = function ( e ) { if ( this . $mergeUndoDeltas ) { var t = this . prevOp , n = this . $mergeableCommands , r = t . command && e . command . name == t . command . name ; if ( "insertstring" == e . command . name ) { var i = e . args ; void 0 === this . mergeNextCommand && ( this . mergeNextCommand = ! 0 ) , r = r && this . mergeNextCommand && ( ! /\s/ . test ( i ) || /\s/ . test ( t . args ) ) , this . mergeNextCommand = ! 0 } else r = r && n . indexOf ( e . command . name ) !== - 1 ; "always" != this . $mergeUndoDeltas && Date . now ( ) - this . sequenceStartTime > 2e3 && ( r = ! 1 ) , r ? this . session . mergeUndoDeltas = ! 0 : n . indexOf ( e . command . name ) !== - 1 && ( this . sequenceStartTime = Date . now ( ) ) } } , this . setKeyboardHandler = function ( e , t ) { if ( e && "string" == typeof e ) { this . $keybindingId = e ; var n = this ; g . loadModule ( [ "keybinding" , e ] , function ( r ) { n . $keybindingId == e && n . keyBinding . setKeyboardHandler ( r && r . handler ) , t && t ( ) } ) } else this . $keybindingId = null , this . keyBinding . setKeyboardHandler ( e ) , t && t ( ) } , this . getKeyboardHandler = function ( ) { return this . keyBinding . getKeyboardHandler ( ) } , this . setSession = function ( e ) { if ( this . session != e ) { this . curOp && this . endOperation ( ) , this . curOp = { } ; var t = this . session ; if ( t ) { this . session . off ( "change" , this . $onDocumentChange ) , this . session . off ( "changeMode" , this . $onChangeMode ) , this . session . off ( "tokenizerUpdate" , this . $onTokenizerUpdate ) , this . session . off ( "changeTabSize" , this . $onChangeTabSize ) , this . session . off ( "changeWrapLimit" , this . $onChangeWrapLimit ) , this . session . off ( "changeWrapMode" , this . $onChangeWrapMode ) , this . session . off ( "changeFold" , this . $onChangeFold ) , this . session . off ( "changeFrontMarker" , this . $onChangeFrontMarker ) , this . session . off ( "changeBackMarker" , this . $onChangeBackMarker ) , this . session . off ( "changeBreakpoint" , this . $onChangeBreakpoint ) , this . session . off ( "changeAnnotation" , this . $onChangeAnnotation ) , this . session . off ( "changeOverwrite" , this . $onCursorChange ) , this . session . off ( "changeScrollTop" , this . $onScrollTopChange ) , this . session . off ( "changeScrollLeft" , this . $onScrollLeftChange ) ; var n = this . session . getSelection ( ) ; n . off ( "changeCursor" , this . $onCursorChange ) , n . off ( "changeSelection" , this . $onSelectionChange ) } this . session = e , e ? ( this . $onDocumentChange = this . onDocumentChange . bind ( this ) , e . on ( "change" , this . $onDocumentChange ) , this . renderer . setSession ( e ) , this . $onChangeMode = this . onChangeMode . bind ( this ) , e . on ( "changeMode" , this . $onChangeMode ) , this . $onTokenizerUpdate = this . onTokenizerUpdate . bind ( this ) , e . on ( "tokenizerUpdate" , this . $onTokenizerUpdate ) , this . $onChangeTabSize = this . renderer . onChangeTabSize . bind ( this . renderer ) , e . on ( "changeTabSize" , this . $onChangeTabSize ) , this . $onChangeWrapLimit = this . onChangeWrapLimit . bind ( this ) , e . on ( "changeWrapLimit" , this . $onChangeWrapLimit ) , this . $onChangeWrapMode = this . onChangeWrapMode . bind ( this ) , e . on ( "changeWrapMode" , this . $onChangeWrapMode ) , this . $onChangeFold = this . onChangeFold . bind ( this ) , e . on ( "changeFold" , this . $onChangeFold ) , this . $onChangeFrontMarker = this . onC
this . renderer . off ( "beforeRender" , o ) ) } } } , this . $resetCursorStyle = function ( ) { var e = this . $cursorStyle || "ace" , t = this . renderer . $cursorLayer ; t && ( t . setSmoothBlinking ( /smooth/ . test ( e ) ) , t . isBlinking = ! this . $readOnly && "wide" != e , i . setCssClass ( t . element , "ace_slim-cursors" , /slim/ . test ( e ) ) ) } } ) . call ( b . prototype ) , g . defineOptions ( b . prototype , "editor" , { selectionStyle : { set : function ( e ) { this . onSelectionChange ( ) , this . _signal ( "changeSelectionStyle" , { data : e } ) } , initialValue : "line" } , highlightActiveLine : { set : function ( ) { this . $updateHighlightActiveLine ( ) } , initialValue : ! 0 } , highlightSelectedWord : { set : function ( e ) { this . $onSelectionChange ( ) } , initialValue : ! 0 } , readOnly : { set : function ( e ) { this . $resetCursorStyle ( ) } , initialValue : ! 1 } , cursorStyle : { set : function ( e ) { this . $resetCursorStyle ( ) } , values : [ "ace" , "slim" , "smooth" , "wide" ] , initialValue : "ace" } , mergeUndoDeltas : { values : [ ! 1 , ! 0 , "always" ] , initialValue : ! 0 } , behavioursEnabled : { initialValue : ! 0 } , wrapBehavioursEnabled : { initialValue : ! 0 } , autoScrollEditorIntoView : { set : function ( e ) { this . setAutoScrollEditorIntoView ( e ) } } , keyboardHandler : { set : function ( e ) { this . setKeyboardHandler ( e ) } , get : function ( ) { return this . keybindingId } , handlesSet : ! 0 } , hScrollBarAlwaysVisible : "renderer" , vScrollBarAlwaysVisible : "renderer" , highlightGutterLine : "renderer" , animatedScroll : "renderer" , showInvisibles : "renderer" , showPrintMargin : "renderer" , printMarginColumn : "renderer" , printMargin : "renderer" , fadeFoldWidgets : "renderer" , showFoldWidgets : "renderer" , showLineNumbers : "renderer" , showGutter : "renderer" , displayIndentGuides : "renderer" , fontSize : "renderer" , fontFamily : "renderer" , maxLines : "renderer" , minLines : "renderer" , scrollPastEnd : "renderer" , fixedWidthGutter : "renderer" , theme : "renderer" , scrollSpeed : "$mouseHandler" , dragDelay : "$mouseHandler" , dragEnabled : "$mouseHandler" , focusTimout : "$mouseHandler" , tooltipFollowsMouse : "$mouseHandler" , firstLineNumber : "session" , overwrite : "session" , newLineMode : "session" , useWorker : "session" , useSoftTabs : "session" , tabSize : "session" , wrap : "session" , indentedSoftWrap : "session" , foldStyle : "session" , mode : "session" } ) , t . Editor = b } ) , ace . define ( "ace/undomanager" , [ "require" , "exports" , "module" ] , function ( e , t , n ) { "use strict" ; var r = function ( ) { this . reset ( ) } ; ( function ( ) { function e ( e ) { return { action : e . action , start : e . start , end : e . end , lines : 1 == e . lines . length ? null : e . lines , text : 1 == e . lines . length ? e . lines [ 0 ] : null } } function t ( e ) { return { action : e . action , start : e . start , end : e . end , lines : e . lines || [ e . text ] } } function n ( e , t ) { for ( var n = new Array ( e . length ) , r = 0 ; r < e . length ; r ++ ) { for ( var i = e [ r ] , s = { group : i . group , deltas : new Array ( i . length ) } , o = 0 ; o < i . deltas . length ; o ++ ) { var u = i . deltas [ o ] ; s . deltas [ o ] = t ( u ) } n [ r ] = s } return n } this . execute = function ( e ) { var t = e . args [ 0 ] ; this . $doc = e . args [ 1 ] , e . merge && this . hasUndo ( ) && ( this . dirtyCounter -- , t = this . $undoStack . pop ( ) . concat ( t ) ) , this . $undoStack . push ( t ) , this . $redoStack = [ ] , this . dirtyCounter < 0 && ( this . dirtyCounter = NaN ) , this . dirtyCounter ++ } , this . undo = function ( e ) { var t = this . $undoStack . pop ( ) , n = null ; return t && ( n = this . $doc . undoChanges ( t , e ) , this . $redoStack . push ( t ) , this . dirtyCounter -- ) , n } , this . redo = function ( e ) { var t = this . $redoStack . pop ( ) , n = null ; return t && ( n = this . $doc . redoChanges ( this . $deserializeDeltas ( t ) , e ) , this . $undoStack . push ( t ) , this . dirtyCounter ++ ) , n } , this . reset = function ( ) { this . $undoStack = [ ] , this . $redoStack = [ ] , this . dirtyCounter = 0 } , this . hasUndo = function ( ) { return this . $undoStack . length > 0 } , this . hasRedo = function ( ) { return this . $redoStack . length > 0 } , this . markClean = function ( ) { this . dirtyCounter = 0 } , this . isClean = function ( ) { return 0 === this . dirtyCounter } , this . $serializeDeltas = function ( t ) { return n ( t , e ) } , this . $deserializeDeltas = function ( e ) { return n ( e , t ) } } ) . call ( r . prototype ) , t . UndoManager = r } ) , ace . define ( "ace/layer/gutter" , [ "require" , "exports" , "module" , "ace/lib/dom" , "ace/lib/oop" , "ace/lib/lang" , "ace/lib/event_emitter" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/dom" ) , i = e ( "../lib/oop" ) , s = e ( "../lib/lang" ) , o = e ( "../lib/event_emitter" ) . EventEmitter , u = function ( e ) { this . element = r . createElement ( "div" ) , this . element . className = "ace_layer ace_gutter-layer" , e . appendChild ( this . element ) , this . setShowFoldWidgets ( this . $showFoldWidgets ) , this . gutterWidth = 0 , this . $annotations = [ ] , this . $updateAnnotations = this . $upd
i . importCssString ( m , "ace_editor.css" ) ; var g = function ( e , t ) { var n = this ; this . container = e || i . createElement ( "div" ) , this . $keepTextAreaAtCursor = ! o . isOldIE , i . addCssClass ( this . container , "ace_editor" ) , this . setTheme ( t ) , this . $gutter = i . createElement ( "div" ) , this . $gutter . className = "ace_gutter" , this . container . appendChild ( this . $gutter ) , this . scroller = i . createElement ( "div" ) , this . scroller . className = "ace_scroller" , this . container . appendChild ( this . scroller ) , this . content = i . createElement ( "div" ) , this . content . className = "ace_content" , this . scroller . appendChild ( this . content ) , this . $gutterLayer = new u ( this . $gutter ) , this . $gutterLayer . on ( "changeGutterWidth" , this . onGutterResize . bind ( this ) ) , this . $markerBack = new a ( this . content ) ; var r = this . $textLayer = new f ( this . content ) ; this . canvas = r . element , this . $markerFront = new a ( this . content ) , this . $cursorLayer = new l ( this . content ) , this . $horizScroll = ! 1 , this . $vScroll = ! 1 , this . scrollBar = this . scrollBarV = new h ( this . container , this ) , this . scrollBarH = new c ( this . container , this ) , this . scrollBarV . addEventListener ( "scroll" , function ( e ) { n . $scrollAnimation || n . session . setScrollTop ( e . data - n . scrollMargin . top ) } ) , this . scrollBarH . addEventListener ( "scroll" , function ( e ) { n . $scrollAnimation || n . session . setScrollLeft ( e . data - n . scrollMargin . left ) } ) , this . scrollTop = 0 , this . scrollLeft = 0 , this . cursorPos = { row : 0 , column : 0 } , this . $fontMetrics = new d ( this . container ) , this . $textLayer . $setFontMetrics ( this . $fontMetrics ) , this . $textLayer . addEventListener ( "changeCharacterSize" , function ( e ) { n . updateCharacterSize ( ) , n . onResize ( ! 0 , n . gutterWidth , n . $size . width , n . $size . height ) , n . _signal ( "changeCharacterSize" , e ) } ) , this . $size = { width : 0 , height : 0 , scrollerHeight : 0 , scrollerWidth : 0 , $dirty : ! 0 } , this . layerConfig = { width : 1 , padding : 0 , firstRow : 0 , firstRowScreen : 0 , lastRow : 0 , lineHeight : 0 , characterWidth : 0 , minHeight : 1 , maxHeight : 1 , offset : 0 , height : 1 , gutterOffset : 1 } , this . scrollMargin = { left : 0 , right : 0 , top : 0 , bottom : 0 , v : 0 , h : 0 } , this . $loop = new p ( this . $renderChanges . bind ( this ) , this . container . ownerDocument . defaultView ) , this . $loop . schedule ( this . CHANGE _FULL ) , this . updateCharacterSize ( ) , this . setPadding ( 4 ) , s . resetOptions ( this ) , s . _emit ( "renderer" , this ) } ; ( function ( ) { this . CHANGE _CURSOR = 1 , this . CHANGE _MARKER = 2 , this . CHANGE _GUTTER = 4 , this . CHANGE _SCROLL = 8 , this . CHANGE _LINES = 16 , this . CHANGE _TEXT = 32 , this . CHANGE _SIZE = 64 , this . CHANGE _MARKER _BACK = 128 , this . CHANGE _MARKER _FRONT = 256 , this . CHANGE _FULL = 512 , this . CHANGE _H _SCROLL = 1024 , r . implement ( this , v ) , this . updateCharacterSize = function ( ) { this . $textLayer . allowBoldFonts != this . $allowBoldFonts && ( this . $allowBoldFonts = this . $textLayer . allowBoldFonts , this . setStyle ( "ace_nobold" , ! this . $allowBoldFonts ) ) , this . layerConfig . characterWidth = this . characterWidth = this . $textLayer . getCharacterWidth ( ) , this . layerConfig . lineHeight = this . lineHeight = this . $textLayer . getLineHeight ( ) , this . $updatePrintMargin ( ) } , this . setSession = function ( e ) { this . session && this . session . doc . off ( "changeNewLineMode" , this . onChangeNewLineMode ) , this . session = e , e && this . scrollMargin . top && e . getScrollTop ( ) <= 0 && e . setScrollTop ( - this . scrollMargin . top ) , this . $cursorLayer . setSession ( e ) , this . $markerBack . setSession ( e ) , this . $markerFront . setSession ( e ) , this . $gutterLayer . setSession ( e ) , this . $textLayer . setSession ( e ) , e && ( this . $loop . schedule ( this . CHANGE _FULL ) , this . session . $setFontMetrics ( this . $fontMetrics ) , this . scrollBarV . scrollLeft = this . scrollBarV . scrollTop = null , this . onChangeNewLineMode = this . onChangeNewLineMode . bind ( this ) , this . onChangeNewLineMode ( ) , this . session . doc . on ( "changeNewLineMode" , this . onChangeNewLineMode ) ) } , this . updateLines = function ( e , t , n ) { if ( void 0 === t && ( t = 1 / 0 ) , this . $changedLines ? ( this . $changedLines . firstRow > e && ( this . $changedLines . firstRow = e ) , this . $changedLines . lastRow < t && ( this . $changedLines . lastRow = t ) ) : this . $changedLines = { firstRow : e , lastRow : t } , this . $changedLines . lastRow < this . layerConfig . firstRow ) { if ( ! n ) return ; this . $changedLines . lastRow = this . layerConfig . lastRow } this . $changedLines . firstRow > this . layerConfig . lastRow || this . $loop . schedule ( this . CHANGE _LINES ) } , this . onChangeNewLineMode = function ( ) { this . $loop . schedule ( this . CHANGE _TEXT ) , this . $textLayer . $updateEolChar ( ) } , this . onChangeTabSize = function ( ) { this . $loop . schedule ( this . CHANGE _TEXT | this . CHANGE _MARKER ) , this . $textLaye
if ( this . othersActive ) { this . othersActive = ! 1 ; for ( var e = 0 ; e < this . others . length ; e ++ ) this . session . removeMarker ( this . others [ e ] . markerId ) } } , this . onUpdate = function ( e ) { if ( this . $updating ) return this . updateAnchors ( e ) ; var t = e ; if ( t . start . row === t . end . row && t . start . row === this . pos . row ) { this . $updating = ! 0 ; var n = "insert" === e . action ? t . end . column - t . start . column : t . start . column - t . end . column , i = t . start . column >= this . pos . column && t . start . column <= this . pos . column + this . length + 1 , s = t . start . column - this . pos . column ; if ( this . updateAnchors ( e ) , i && ( this . length += n ) , i && ! this . session . $fromUndo ) if ( "insert" === e . action ) for ( var o = this . others . length - 1 ; o >= 0 ; o -- ) { var u = this . others [ o ] , a = { row : u . row , column : u . column + s } ; this . doc . insertMergedLines ( a , e . lines ) } else if ( "remove" === e . action ) for ( var o = this . others . length - 1 ; o >= 0 ; o -- ) { var u = this . others [ o ] , a = { row : u . row , column : u . column + s } ; this . doc . remove ( new r ( a . row , a . column , a . row , a . column - n ) ) } this . $updating = ! 1 , this . updateMarkers ( ) } } , this . updateAnchors = function ( e ) { this . pos . onChange ( e ) ; for ( var t = this . others . length ; t -- ; ) this . others [ t ] . onChange ( e ) ; this . updateMarkers ( ) } , this . updateMarkers = function ( ) { if ( ! this . $updating ) { var e = this , t = this . session , n = function ( n , i ) { t . removeMarker ( n . markerId ) , n . markerId = t . addMarker ( new r ( n . row , n . column , n . row , n . column + e . length ) , i , null , ! 1 ) } ; n ( this . pos , this . mainClass ) ; for ( var i = this . others . length ; i -- ; ) n ( this . others [ i ] , this . othersClass ) } } , this . onCursorChange = function ( e ) { if ( ! this . $updating && this . session ) { var t = this . session . selection . getCursor ( ) ; t . row === this . pos . row && t . column >= this . pos . column && t . column <= this . pos . column + this . length ? ( this . showOtherMarkers ( ) , this . _emit ( "cursorEnter" , e ) ) : ( this . hideOtherMarkers ( ) , this . _emit ( "cursorLeave" , e ) ) } } , this . detach = function ( ) { this . session . removeMarker ( this . pos && this . pos . markerId ) , this . hideOtherMarkers ( ) , this . doc . removeEventListener ( "change" , this . $onUpdate ) , this . session . selection . removeEventListener ( "changeCursor" , this . $onCursorChange ) , this . session . setUndoSelect ( ! 0 ) , this . session = null } , this . cancel = function ( ) { if ( this . $undoStackDepth !== - 1 ) { for ( var e = this . session . getUndoManager ( ) , t = ( e . $undoStack || e . $undostack ) . length - this . $undoStackDepth , n = 0 ; n < t ; n ++ ) e . undo ( ! 0 ) ; this . selectionBefore && this . session . selection . fromJSON ( this . selectionBefore ) } } } ) . call ( o . prototype ) , t . PlaceHolder = o } ) , ace . define ( "ace/mouse/multi_select_handler" , [ "require" , "exports" , "module" , "ace/lib/event" , "ace/lib/useragent" ] , function ( e , t , n ) { function s ( e , t ) { return e . row == t . row && e . column == t . column } function o ( e ) { var t = e . domEvent , n = t . altKey , o = t . shiftKey , u = t . ctrlKey , a = e . getAccelKey ( ) , f = e . getButton ( ) ; if ( u && i . isMac && ( f = t . button ) , e . editor . inMultiSelectMode && 2 == f ) return void e . editor . textInput . onContextMenu ( e . domEvent ) ; if ( ! u && ! n && ! a ) return void ( 0 === f && e . editor . inMultiSelectMode && e . editor . exitMultiSelectMode ( ) ) ; if ( 0 === f ) { var S , l = e . editor , c = l . selection , h = l . inMultiSelectMode , p = e . getDocumentPosition ( ) , d = c . getCursor ( ) , v = e . inSelection ( ) || c . isEmpty ( ) && s ( p , d ) , m = e . x , g = e . y , y = function ( e ) { m = e . clientX , g = e . clientY } , b = l . session , w = l . renderer . pixelToScreenCoordinates ( m , g ) , E = w ; if ( l . $mouseHandler . $enableJumpToDef ) u && n || a && n ? S = o ? "block" : "add" : n && l . $blockSelectEnabled && ( S = "block" ) ; else if ( a && ! n ) { if ( S = "add" , ! h && o ) return } else n && l . $blockSelectEnabled && ( S = "block" ) ; if ( S && i . isMac && t . ctrlKey && l . $mouseHandler . cancelContextMenu ( ) , "add" == S ) { if ( ! h && v ) return ; if ( ! h ) { var x = c . toOrientedRange ( ) ; l . addSelectionMarker ( x ) } var T = c . rangeList . rangeAtPoint ( p ) ; l . $blockScrolling ++ , l . inVirtualSelectionMode = ! 0 , o && ( T = null , x = c . ranges [ 0 ] || x , l . removeSelectionMarker ( x ) ) , l . once ( "mouseup" , function ( ) { var e = c . toOrientedRange ( ) ; T && e . isEmpty ( ) && s ( T . cursor , e . cursor ) ? c . substractPoint ( e . cursor ) : ( o ? c . substractPoint ( x . cursor ) : x && ( l . removeSelectionMarker ( x ) , c . addRange ( x ) ) , c . addRange ( e ) ) , l . $blockScrolling -- , l . inVirtualSelectionMode = ! 1 } ) } else if ( "block" == S ) { e . stop ( ) , l . inVirtualSelectionMode = ! 0 ; var N , C = [ ] , k = function ( ) { var e = l . renderer . pixelToScreenCoordinates ( m , g ) , t = b . screenToDocumentPosition ( e . row , e . column ) ; s ( E , e ) && s ( t , c . lead ) || ( E = e , l . $blockScrolling ++ , l . selection . moveToPosition ( t ) , l . renderer . scrollCursorIntoView ( ) , l . removeSelectionMarkers ( C ) , C = c . rectangularRangeBlock ( E , w ) , l . $mouseHandler . $clickSelection &&
} var a = [ ] ; t = u . row ; do a [ n < 0 ? "unshift" : "push" ] ( u ) , u = r [ i += n ] ; while ( u && u . row == t ) ; return a . length && a } } } var r = e ( "../line_widgets" ) . LineWidgets , i = e ( "../lib/dom" ) , s = e ( "../range" ) . Range ; t . showErrorMarker = function ( e , t ) { var n = e . session ; n . widgetManager || ( n . widgetManager = new r ( n ) , n . widgetManager . attach ( e ) ) ; var s = e . getCursorPosition ( ) , o = s . row , a = n . widgetManager . getWidgetsAtRow ( o ) . filter ( function ( e ) { return "errorMarker" == e . type } ) [ 0 ] ; a ? a . destroy ( ) : o -= t ; var l , f = u ( n , o , t ) ; if ( f ) { var c = f [ 0 ] ; s . column = ( c . pos && "number" != typeof c . column ? c . pos . sc : c . column ) || 0 , s . row = c . row , l = e . renderer . $gutterLayer . $annotations [ s . row ] } else { if ( a ) return ; l = { text : [ "Looks good!" ] , className : "ace_ok" } } e . session . unfold ( s . row ) , e . selection . moveToPosition ( s ) ; var h = { row : s . row , fixedWidth : ! 0 , coverGutter : ! 0 , el : i . createElement ( "div" ) , type : "errorMarker" } , p = h . el . appendChild ( i . createElement ( "div" ) ) , d = h . el . appendChild ( i . createElement ( "div" ) ) ; d . className = "error_widget_arrow " + l . className ; var v = e . renderer . $cursorLayer . getPixelPosition ( s ) . left ; d . style . left = v + e . renderer . gutterWidth - 5 + "px" , h . el . className = "error_widget_wrapper" , p . className = "error_widget " + l . className , p . innerHTML = l . text . join ( "<br>" ) , p . appendChild ( i . createElement ( "div" ) ) ; var m = function ( e , t , n ) { if ( 0 === t && ( "esc" === n || "return" === n ) ) return h . destroy ( ) , { command : "null" } } ; h . destroy = function ( ) { e . $mouseHandler . isMousePressed || ( e . keyBinding . removeKeyboardHandler ( m ) , n . widgetManager . removeLineWidget ( h ) , e . off ( "changeSelection" , h . destroy ) , e . off ( "changeSession" , h . destroy ) , e . off ( "mouseup" , h . destroy ) , e . off ( "change" , h . destroy ) ) } , e . keyBinding . addKeyboardHandler ( m ) , e . on ( "changeSelection" , h . destroy ) , e . on ( "changeSession" , h . destroy ) , e . on ( "mouseup" , h . destroy ) , e . on ( "change" , h . destroy ) , e . session . widgetManager . addLineWidget ( h ) , h . el . onmousedown = e . focus . bind ( e ) , e . renderer . scrollCursorIntoView ( null , . 5 , { bottom : h . el . offsetHeight } ) } , i . importCssString ( " .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }" , "" ) } ) , ace . define ( "ace/ace" , [ "require" , "exports" , "module" , "ace/lib/fixoldbrowsers" , "ace/lib/dom" , "ace/lib/event" , "ace/editor" , "ace/edit_session" , "ace/undomanager" , "ace/virtual_renderer" , "ace/worker/worker_client" , "ace/keyboard/hash_handler" , "ace/placeholder" , "ace/multi_select" , "ace/mode/folding/fold_mode" , "ace/theme/textmate" , "ace/ext/error_marker" , "ace/config" ] , function ( e , t , n ) { "use strict" ; e ( "./lib/fixoldbrowsers" ) ; var r = e ( "./lib/dom" ) , i = e ( "./lib/event" ) , s = e ( "./editor" ) . Editor , o = e ( "./edit_session" ) . EditSession , u = e ( "./undomanager" ) . UndoManager , a = e ( "./virtual_renderer" ) . VirtualRenderer ; e ( "./worker/worker_client" ) , e ( "./keyboard/hash_handler" ) , e ( "./placeholder" ) , e ( "./multi_select" ) , e ( "./mode/folding/fold_mode" ) , e ( "./theme/textmate" ) , e ( "./ext/error_marker" ) , t . config = e ( "./config" ) , t . require = e , "function" == typeof define && ( t . define = define ) , t . edit = function ( e ) { if ( "string" == typeof e ) { var n = e ; if ( e = document . getElementById ( n ) , ! e ) throw new Error ( "ace.edit can't find div #" + n ) } if ( e && e . env && e . env . editor instanceof s ) return e . env . editor ; var o = "" ; if ( e && /input|textarea/i . test ( e . tagName ) ) { var u = e ; o = u . value , e = r . createElement ( "pre" ) , u . parentNode . replaceChild ( e , u ) } else e && ( o = r . getInnerText ( e ) , e . innerHTML = "" ) ; var f = t . createEditSession ( o ) , l = new s ( new a ( e ) ) ; l . setSession ( f ) ; var c = { document : f , editor : l , onResize : l . resize . bind ( l , null ) } ; return u && ( c . textarea = u ) , i . addListener ( wi
if ( u ( f , "reference.attribute-value" ) ) return ; if ( u ( f , "attribute-value" ) ) { var l = f . value . charAt ( 0 ) ; if ( '"' == l || "'" == l ) { var c = f . value . charAt ( f . value . length - 1 ) , h = a . getCurrentTokenColumn ( ) + f . value . length ; if ( h > o . column || h == o . column && l != c ) return } } for ( ; ! u ( f , "tag-name" ) ; ) if ( f = a . stepBackward ( ) , "<" == f . value ) { f = a . stepForward ( ) ; break } var p = a . getCurrentTokenRow ( ) , d = a . getCurrentTokenColumn ( ) ; if ( u ( a . stepBackward ( ) , "end-tag-open" ) ) return ; var v = f . value ; if ( p == o . row && ( v = v . substring ( 0 , o . column - d ) ) , this . voidElements . hasOwnProperty ( v . toLowerCase ( ) ) ) return ; return { text : "></" + v + ">" , selection : [ 1 , 1 ] } } } ) , this . add ( "autoindent" , "insertion" , function ( e , t , n , r , i ) { if ( "\n" == i ) { var o = n . getCursorPosition ( ) , u = r . getLine ( o . row ) , a = new s ( r , o . row , o . column ) , f = a . getCurrentToken ( ) ; if ( f && f . type . indexOf ( "tag-close" ) !== - 1 ) { if ( "/>" == f . value ) return ; for ( ; f && f . type . indexOf ( "tag-name" ) === - 1 ; ) f = a . stepBackward ( ) ; if ( ! f ) return ; var l = f . value , c = a . getCurrentTokenRow ( ) ; if ( f = a . stepBackward ( ) , ! f || f . type . indexOf ( "end-tag" ) !== - 1 ) return ; if ( this . voidElements && ! this . voidElements [ l ] ) { var h = r . getTokenAt ( o . row , o . column + 1 ) , u = r . getLine ( c ) , p = this . $getIndent ( u ) , d = p + r . getTabString ( ) ; return h && "</" === h . value ? { text : "\n" + d + "\n" + p , selection : [ 1 , d . length , 1 , d . length ] } : { text : "\n" + d } } } } } ) } ) ; r . inherits ( a , i ) , t . XmlBehaviour = a } ) , ace . define ( "ace/mode/folding/xml" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/range" , "ace/mode/folding/fold_mode" , "ace/token_iterator" ] , function ( e , t , n ) { "use strict" ; function l ( e , t ) { return e . type . lastIndexOf ( t + ".xml" ) > - 1 } var r = e ( "../../lib/oop" ) , s = ( e ( "../../lib/lang" ) , e ( "../../range" ) . Range ) , o = e ( "./fold_mode" ) . FoldMode , u = e ( "../../token_iterator" ) . TokenIterator , a = t . FoldMode = function ( e , t ) { o . call ( this ) , this . voidElements = e || { } , this . optionalEndTags = r . mixin ( { } , this . voidElements ) , t && r . mixin ( this . optionalEndTags , t ) } ; r . inherits ( a , o ) ; var f = function ( ) { this . tagName = "" , this . closing = ! 1 , this . selfClosing = ! 1 , this . start = { row : 0 , column : 0 } , this . end = { row : 0 , column : 0 } } ; ( function ( ) { this . getFoldWidget = function ( e , t , n ) { var r = this . _getFirstTagInLine ( e , n ) ; return r ? r . closing || ! r . tagName && r . selfClosing ? "markbeginend" == t ? "end" : "" : ! r . tagName || r . selfClosing || this . voidElements . hasOwnProperty ( r . tagName . toLowerCase ( ) ) ? "" : this . _findEndTagInLine ( e , n , r . tagName , r . end . column ) ? "" : "start" : "" } , this . _getFirstTagInLine = function ( e , t ) { for ( var n = e . getTokens ( t ) , r = new f , i = 0 ; i < n . length ; i ++ ) { var s = n [ i ] ; if ( l ( s , "tag-open" ) ) { if ( r . end . column = r . start . column + s . value . length , r . closing = l ( s , "end-tag-open" ) , s = n [ ++ i ] , ! s ) return null ; for ( r . tagName = s . value , r . end . column += s . value . length , i ++ ; i < n . length ; i ++ ) if ( s = n [ i ] , r . end . column += s . value . length , l ( s , "tag-close" ) ) { r . selfClosing = "/>" == s . value ; break } return r } if ( l ( s , "tag-close" ) ) return r . selfClosing = "/>" == s . value , r ; r . start . column += s . value . length } return null } , this . _findEndTagInLine = function ( e , t , n , r ) { for ( var i = e . getTokens ( t ) , s = 0 , o = 0 ; o < i . length ; o ++ ) { var u = i [ o ] ; if ( s += u . value . length , ! ( s < r ) && l ( u , "end-tag-open" ) && ( u = i [ o + 1 ] , u && u . value == n ) ) return ! 0 } return ! 1 } , this . _readTagForward = function ( e ) { var t = e . getCurrentToken ( ) ; if ( ! t ) return null ; var n = new f ; do if ( l ( t , "tag-open" ) ) n . closing = l ( t , "end-tag-open" ) , n . start . row = e . getCurrentTokenRow ( ) , n . start . column = e . getCurrentTokenColumn ( ) ; else if ( l ( t , "tag-name" ) ) n . tagName = t . value ; else if ( l ( t , "tag-close" ) ) return n . selfClosing = "/>" == t . value , n . end . row = e . getCurrentTokenRow ( ) , n . end . column = e . getCurrentTokenColumn ( ) + t . value . length , e . stepForward ( ) , n ; while ( t = e . stepForward ( ) ) ; return null } , this . _readTagBackward = function ( e ) { var t = e . getCurrentToken ( ) ; if ( ! t ) return null ; var n = new f ; do { if ( l ( t , "tag-open" ) ) return n . closing = l ( t , "end-tag-open" ) , n . start . row = e . getCurrentTokenRow ( ) , n . start . column = e . getCurrentTokenColumn ( ) , e . stepBackward ( ) , n ; l ( t , "tag-name" ) ? n . tagName = t . value : l ( t , "tag-close" ) && ( n . selfClosing = "/>" == t . value , n . end . row = e . getCurrentTokenRow ( ) , n . end . column = e . getCurrentTokenColumn ( ) + t . value . length ) } while ( t = e . stepBackward ( ) ) ; return null } , this . _pop = function ( e , t ) { for ( ; e . length ; ) { var n = e [ e . length - 1 ] ; if ( ! t || n . tagName == t . tagName ) return e . pop ( ) ; { if ( ! this . optionalEndTags . hasOwnProperty ( n . tagName ) ) return null ; e . pop ( ) } } } , this . getFoldWidgetRange = function ( e , t , n ) { var r = this . _getFirstTagInLine ( e , n ) ; if (
return i . map ( function ( e ) { return { caption : e , snippet : e , meta : "html entity" , score : Number . MAX _VALUE } } ) } } ) . call ( h . prototype ) , t . HtmlCompletions = h } ) , ace . define ( "ace/mode/html" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/mode/text" , "ace/mode/javascript" , "ace/mode/css" , "ace/mode/html_highlight_rules" , "ace/mode/behaviour/xml" , "ace/mode/folding/html" , "ace/mode/html_completions" , "ace/worker/worker_client" ] , function ( e , t , n ) { "use strict" ; var r = e ( "../lib/oop" ) , i = e ( "../lib/lang" ) , s = e ( "./text" ) . Mode , o = e ( "./javascript" ) . Mode , u = e ( "./css" ) . Mode , a = e ( "./html_highlight_rules" ) . HtmlHighlightRules , f = e ( "./behaviour/xml" ) . XmlBehaviour , l = e ( "./folding/html" ) . FoldMode , c = e ( "./html_completions" ) . HtmlCompletions , h = e ( "../worker/worker_client" ) . WorkerClient , p = [ "area" , "base" , "br" , "col" , "embed" , "hr" , "img" , "input" , "keygen" , "link" , "meta" , "menuitem" , "param" , "source" , "track" , "wbr" ] , d = [ "li" , "dt" , "dd" , "p" , "rt" , "rp" , "optgroup" , "option" , "colgroup" , "td" , "th" ] , v = function ( e ) { this . fragmentContext = e && e . fragmentContext , this . HighlightRules = a , this . $behaviour = new f , this . $completer = new c , this . createModeDelegates ( { "js-" : o , "css-" : u } ) , this . foldingRules = new l ( this . voidElements , i . arrayToMap ( d ) ) } ; r . inherits ( v , s ) , function ( ) { this . blockComment = { start : "<!--" , end : "-->" } , this . voidElements = i . arrayToMap ( p ) , this . getNextLineIndent = function ( e , t , n ) { return this . $getIndent ( t ) } , this . checkOutdent = function ( e , t , n ) { return ! 1 } , this . getCompletions = function ( e , t , n , r ) { return this . $completer . getCompletions ( e , t , n , r ) } , this . createWorker = function ( e ) { if ( this . constructor == v ) { var t = new h ( [ "ace" ] , "ace/mode/html_worker" , "Worker" ) ; return t . attachToDocument ( e . getDocument ( ) ) , this . fragmentContext && t . call ( "setOptions" , [ { context : this . fragmentContext } ] ) , t . on ( "error" , function ( t ) { e . setAnnotations ( t . data ) } ) , t . on ( "terminate" , function ( ) { e . clearAnnotations ( ) } ) , t } } , this . $id = "ace/mode/html" } . call ( v . prototype ) , t . Mode = v } ) , ace . define ( "ace/mode/markdown_highlight_rules" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/lib/lang" , "ace/mode/text_highlight_rules" , "ace/mode/javascript_highlight_rules" , "ace/mode/xml_highlight_rules" , "ace/mode/html_highlight_rules" , "ace/mode/css_highlight_rules" ] , function ( e , t , n ) { "use strict" ; function c ( e , t ) { return { token : "support.function" , regex : "^\\s*```" + e + "\\s*$" , push : t + "start" } } var r = e ( "../lib/oop" ) , i = e ( "../lib/lang" ) , s = e ( "./text_highlight_rules" ) . TextHighlightRules , o = e ( "./javascript_highlight_rules" ) . JavaScriptHighlightRules , u = e ( "./xml_highlight_rules" ) . XmlHighlightRules , a = e ( "./html_highlight_rules" ) . HtmlHighlightRules , f = e ( "./css_highlight_rules" ) . CssHighlightRules , l = function ( e ) { return "(?:[^" + i . escapeRegExp ( e ) + "\\\\]|\\\\.)*" } , h = function ( ) { a . call ( this ) , this . $rules . start . unshift ( { token : "empty_line" , regex : "^$" , next : "allowBlock" } , { token : "markup.heading.1" , regex : "^=+(?=\\s*$)" } , { token : "markup.heading.2" , regex : "^\\-+(?=\\s*$)" } , { token : function ( e ) { return "markup.heading." + e . length } , regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/ , next : "header" } , c ( "(?:javascript|js)" , "jscode-" ) , c ( "xml" , "xmlcode-" ) , c ( "html" , "htmlcode-" ) , c ( "css" , "csscode-" ) , { token : "support.function" , regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$" , next : "githubblock" } , { token : "string.blockquote" , regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+" , next : "blockquote" } , { token : "constant" , regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$" , next : "allowBlock" } , { token : "markup.list" , regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+" , next : "listblock-start" } , { include : "basic" } ) , this . addRules ( { basic : [ { token : "constant.language.escape" , regex : /\\[\\`*_{}\[\]()#+\-.!]/ } , { token : "support.function" , regex : "(`+)(.*?[^`])(\\1)" } , { token : [ "text" , "constant" , "text" , "url" , "string" , "text" ] , regex : '^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$' } , { token : [ "text" , "string" , "text" , "constant" , "text" ] , regex : "(\\[)(" + l ( "]" ) + ")(\\]\\s*\\[)(" + l ( "]" ) + ")(\\])" } , { token : [ "text" , "string" , "text" , "markup.underline" , "string" , "text" ] , regex : "(\\[)(" + l ( "]" ) + ')(\\]\\()((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)(\\s*"' + l ( '"' ) + '"\\s*)?(\\))' } , { token : "string.strong" , regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" } , { token : "string.emphasis" , regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" } , { token : [ "
} } return i } function xr ( n ) { return "number" == typeof n ? n : xu ( n ) ? P : + n } function jr ( n ) { if ( "string" == typeof n ) return n ; if ( uf ( n ) ) return l ( n , jr ) + "" ; if ( xu ( n ) ) return no ? no . call ( n ) : "" ; var t = n + "" ; return "0" == t && 1 / n == - N ? "-0" : t } function wr ( n , t , r ) { var e = - 1 , u = c , i = n . length , o = ! 0 , f = [ ] , l = f ; if ( r ) o = ! 1 , u = a ; else if ( 200 <= i ) { if ( u = t ? null : ao ( n ) ) return D ( u ) ; o = ! 1 , u = R , l = new qn } else l = t ? [ ] : f ; n : for ( ; ++ e < i ; ) { var s = n [ e ] , h = t ? t ( s ) : s , s = r || 0 !== s ? s : 0 ; if ( o && h === h ) { for ( var p = l . length ; p -- ; ) if ( l [ p ] === h ) continue n ; t && l . push ( h ) , f . push ( s ) } else u ( l , h , r ) || ( l !== f && l . push ( h ) , f . push ( s ) ) } return f } function mr ( n , t , r , e ) { for ( var u = n . length , i = e ? u : - 1 ; ( e ? i -- : ++ i < u ) && t ( n [ i ] , i , n ) ; ) ; return r ? vr ( n , e ? 0 : i , e ? i + 1 : u ) : vr ( n , e ? i + 1 : 0 , e ? u : i ) } function Ar ( n , t ) { var r = n ; return r instanceof Mn && ( r = r . value ( ) ) , h ( t , function ( n , t ) { return t . func . apply ( t . thisArg , s ( [ n ] , t . args ) ) } , r ) } function kr ( n , t , r ) { var e = n . length ; if ( 2 > e ) return e ? wr ( n [ 0 ] ) : [ ] ; for ( var u = - 1 , i = qu ( e ) ; ++ u < e ; ) for ( var o = n [ u ] , f = - 1 ; ++ f < e ; ) { var c = n [ f ] ; c !== o && ( i [ u ] = jt ( i [ u ] || o , c , t , r ) ) } return wr ( kt ( i , 1 ) , t , r ) } function Er ( n , t , r ) { for ( var e = - 1 , u = n . length , i = t . length , o = { } ; ++ e < u ; ) r ( o , n [ e ] , e < i ? t [ e ] : F ) ; return o } function Or ( n ) { return lu ( n ) ? n : [ ] } function Sr ( n ) { return "function" == typeof n ? n : Mu } function Ir ( n ) { return uf ( n ) ? n : bo ( n ) } function Rr ( n , t , r ) { var e = n . length ; return r = r === F ? e : r , ! t && r >= e ? n : vr ( n , t , r ) } function zr ( n , t ) { if ( t ) return n . slice ( ) ; var r = n . length , r = _i ? _i ( r ) : new n . constructor ( r ) ; return n . copy ( r ) , r } function Wr ( n ) { var t = new n . constructor ( n . byteLength ) ; return new pi ( t ) . set ( new pi ( n ) ) , t } function Br ( n , t ) { return new n . constructor ( t ? Wr ( n . buffer ) : n . buffer , n . byteOffset , n . length ) } function Lr ( n , t ) { if ( n !== t ) { var r = n !== F , e = null === n , u = n === n , i = xu ( n ) , o = t !== F , f = null === t , c = t === t , a = xu ( t ) ; if ( ! f && ! a && ! i && n > t || i && o && c && ! f && ! a || e && o && c || ! r && c || ! u ) return 1 ; if ( ! e && ! i && ! a && n < t || a && r && u && ! e && ! i || f && r && u || ! o && u || ! c ) return - 1 } return 0 } function Ur ( n , t , r , e ) { var u = - 1 , i = n . length , o = r . length , f = - 1 , c = t . length , a = Bi ( i - o , 0 ) , l = qu ( c + a ) ; for ( e = ! e ; ++ f < c ; ) l [ f ] = t [ f ] ; for ( ; ++ u < o ; ) ( e || u < i ) && ( l [ r [ u ] ] = n [ u ] ) ; for ( ; a -- ; ) l [ f ++ ] = n [ u ++ ] ; return l } function Cr ( n , t , r , e ) { var u = - 1 , i = n . length , o = - 1 , f = r . length , c = - 1 , a = t . length , l = Bi ( i - f , 0 ) , s = qu ( l + a ) ; for ( e = ! e ; ++ u < l ; ) s [ u ] = n [ u ] ; for ( l = u ; ++ c < a ; ) s [ l + c ] = t [ c ] ; for ( ; ++ o < f ; ) ( e || u < i ) && ( s [ l + r [ o ] ] = n [ u ++ ] ) ; return s } function Dr ( n , t ) { var r = - 1 , e = n . length ; for ( t || ( t = qu ( e ) ) ; ++ r < e ; ) t [ r ] = n [ r ] ; return t } function Mr ( n , t , r , e ) { var u = ! r ; r || ( r = { } ) ; for ( var i = - 1 , o = t . length ; ++ i < o ; ) { var f = t [ i ] , c = e ? e ( r [ f ] , n [ f ] , f , r , n ) : F ; c === F && ( c = n [ f ] ) , u ? _t ( r , f , c ) : lt ( r , f , c ) } return r } function Tr ( n , t ) { return Mr ( n , so ( n ) , t ) } function $r ( n , t ) { return function ( r , u ) { var i = uf ( r ) ? e : ht , o = t ? t ( ) : { } ; return i ( r , n , ve ( u , 2 ) , o ) } } function Fr ( n ) { return lr ( function ( t , r ) { var e = - 1 , u = r . length , i = 1 < u ? r [ u - 1 ] : F , o = 2 < u ? r [ 2 ] : F , i = 3 < n . length && "function" == typeof i ? ( u -- , i ) : F ; for ( o && ke ( r [ 0 ] , r [ 1 ] , o ) && ( i = 3 > u ? F : i , u = 1 ) , t = Ju ( t ) ; ++ e < u ; ) ( o = r [ e ] ) && n ( t , o , e , i ) ; return t } ) } function Nr ( n , t ) { return function ( r , e ) { if ( null == r ) return r ; if ( ! au ( r ) ) return n ( r , e ) ; for ( var u = r . length , i = t ? u : - 1 , o = Ju ( r ) ; ( t ? i -- : ++ i < u ) && ! 1 !== e ( o [ i ] , i , o ) ; ) ; return r } } function Pr ( n ) { return function ( t , r , e ) { var u = - 1 , i = Ju ( t ) ; e = e ( t ) ; for ( var o = e . length ; o -- ; ) { var f = e [ n ? o : ++ u ] ; if ( ! 1 === r ( i [ f ] , f , i ) ) break } return t } } function Zr ( n , t , r ) { function e ( ) { return ( this && this !== Zn && this instanceof e ? i : n ) . apply ( u ? r : this , arguments ) } var u = 1 & t , i = Kr ( n ) ; return e } function qr ( n ) { return function ( t ) { t = Ou ( t ) ; var r = Bn . test ( t ) ? $ ( t ) : F , e = r ? r [ 0 ] : t . charAt ( 0 ) ; return t = r ? Rr ( r , 1 ) . join ( "" ) : t . slice ( 1 ) , e [ n ] ( ) + t } } function Vr ( n ) { return function ( t ) { return h ( Cu ( Uu ( t ) . replace ( In , "" ) ) , n , "" ) } } function Kr ( n ) { return function ( ) { var t = arguments ; switch ( t . length ) { case 0 : return new n ; case 1 : return new n ( t [ 0 ] ) ; case 2 : return new n ( t [ 0 ] , t [ 1 ] ) ; case 3 : return new n ( t [ 0 ] , t [ 1 ] , t [ 2 ] ) ; case 4 : return new n ( t [ 0 ] , t [ 1 ] , t [ 2 ] , t [ 3 ] ) ; case 5 : return new n ( t [ 0 ] , t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] ) ; case 6 : return new n ( t [ 0 ] , t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] , t [ 5 ] ) ; case 7 : return new n ( t [ 0 ] , t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] , t [ 5 ] , t [ 6 ] ) } var r = to ( n . prototype ) , t = n . apply ( r , t ) ; return vu ( t ) ? t : r } } function Gr ( n , t , e ) { function u ( ) { for ( var o = arguments . length , f = qu ( o ) , c = o , a = _e ( u ) ; c -- ; ) f [ c ] = arguments [ c ] ; return c = 3 > o && f [ 0 ] !== a && f [ o - 1 ] !== a ? [ ] : C ( f , a ) , o -= c . length , o < e ? ie ( n , t , Yr , u . placeholder , F , f , c , F , F , e - o ) : r ( this && this !== Zn && this instanceof u ? i : n , this , f ) } var i = Kr (
} , On . once = function ( n ) { return ru ( 2 , n ) } , On . orderBy = function ( n , t , r , e ) { return null == n ? [ ] : ( uf ( t ) || ( t = null == t ? [ ] : [ t ] ) , r = e ? F : r , uf ( r ) || ( r = null == r ? [ ] : [ r ] ) , rr ( n , t , r ) ) } , On . over = qf , On . overArgs = Yo , On . overEvery = Vf , On . overSome = Kf , On . partial = Qo , On . partialRight = Xo , On . partition = Zo , On . pick = Sf , On . pickBy = Wu , On . property = Nu , On . propertyOf = function ( n ) { return function ( t ) { return null == n ? F : It ( n , t ) } } , On . pull = Eo , On . pullAll = qe , On . pullAllBy = function ( n , t , r ) { return n && n . length && t && t . length ? or ( n , t , ve ( r , 2 ) ) : n } , On . pullAllWith = function ( n , t , r ) { return n && n . length && t && t . length ? or ( n , t , F , r ) : n } , On . pullAt = Oo , On . range = Gf , On . rangeRight = Hf , On . rearg = nf , On . reject = function ( n , t ) { return ( uf ( n ) ? f : At ) ( n , fu ( ve ( t , 3 ) ) ) } , On . remove = function ( n , t ) { var r = [ ] ; if ( ! n || ! n . length ) return r ; var e = - 1 , u = [ ] , i = n . length ; for ( t = ve ( t , 3 ) ; ++ e < i ; ) { var o = n [ e ] ; t ( o , e , n ) && ( r . push ( o ) , u . push ( e ) ) } return fr ( n , u ) , r } , On . rest = function ( n , t ) { if ( "function" != typeof n ) throw new Xu ( "Expected a function" ) ; return t = t === F ? t : mu ( t ) , lr ( n , t ) } , On . reverse = Ve , On . sampleSize = function ( n , t , r ) { return t = ( r ? ke ( n , t , r ) : t === F ) ? 1 : mu ( t ) , ( uf ( n ) ? ot : hr ) ( n , t ) } , On . set = function ( n , t , r ) { return null == n ? n : pr ( n , t , r ) } , On . setWith = function ( n , t , r , e ) { return e = "function" == typeof e ? e : F , null == n ? n : pr ( n , t , r , e ) } , On . shuffle = function ( n ) { return ( uf ( n ) ? ft : _r ) ( n ) } , On . slice = function ( n , t , r ) { var e = null == n ? 0 : n . length ; return e ? ( r && "number" != typeof r && ke ( n , t , r ) ? ( t = 0 , r = e ) : ( t = null == t ? 0 : mu ( t ) , r = r === F ? e : mu ( r ) ) , vr ( n , t , r ) ) : [ ] } , On . sortBy = qo , On . sortedUniq = function ( n ) { return n && n . length ? br ( n ) : [ ] } , On . sortedUniqBy = function ( n , t ) { return n && n . length ? br ( n , ve ( t , 2 ) ) : [ ] } , On . split = function ( n , t , r ) { return r && "number" != typeof r && ke ( n , t , r ) && ( t = r = F ) , r = r === F ? 4294967295 : r >>> 0 , r ? ( n = Ou ( n ) ) && ( "string" == typeof t || null != t && ! lf ( t ) ) && ( t = jr ( t ) , ! t && Bn . test ( n ) ) ? Rr ( $ ( n ) , 0 , r ) : n . split ( t , r ) : [ ] } , On . spread = function ( n , t ) { if ( "function" != typeof n ) throw new Xu ( "Expected a function" ) ; return t = t === F ? 0 : Bi ( mu ( t ) , 0 ) , lr ( function ( e ) { var u = e [ t ] ; return e = Rr ( e , 0 , t ) , u && s ( e , u ) , r ( n , this , e ) } ) } , On . tail = function ( n ) { var t = null == n ? 0 : n . length ; return t ? vr ( n , 1 , t ) : [ ] } , On . take = function ( n , t , r ) { return n && n . length ? ( t = r || t === F ? 1 : mu ( t ) , vr ( n , 0 , 0 > t ? 0 : t ) ) : [ ] } , On . takeRight = function ( n , t , r ) { var e = null == n ? 0 : n . length ; return e ? ( t = r || t === F ? 1 : mu ( t ) , t = e - t , vr ( n , 0 > t ? 0 : t , e ) ) : [ ] } , On . takeRightWhile = function ( n , t ) { return n && n . length ? mr ( n , ve ( t , 3 ) , ! 1 , ! 0 ) : [ ] } , On . takeWhile = function ( n , t ) { return n && n . length ? mr ( n , ve ( t , 3 ) ) : [ ] } , On . tap = function ( n , t ) { return t ( n ) , n } , On . throttle = function ( n , t , r ) { var e = ! 0 , u = ! 0 ; if ( "function" != typeof n ) throw new Xu ( "Expected a function" ) ; return vu ( r ) && ( e = "leading" in r ? ! ! r . leading : e , u = "trailing" in r ? ! ! r . trailing : u ) , iu ( n , t , { leading : e , maxWait : t , trailing : u } ) } , On . thru = Je , On . toArray = ju , On . toPairs = If , On . toPairsIn = Rf , On . toPath = function ( n ) { return uf ( n ) ? l ( n , Ce ) : xu ( n ) ? [ n ] : Dr ( bo ( n ) ) } , On . toPlainObject = Eu , On . transform = function ( n , t , r ) { var e = uf ( n ) , i = e || ff ( n ) || hf ( n ) ; if ( t = ve ( t , 4 ) , null == r ) { var o = n && n . constructor ; r = i ? e ? new o : [ ] : vu ( n ) && hu ( o ) ? to ( vi ( n ) ) : { } } return ( i ? u : Et ) ( n , function ( n , e , u ) { return t ( r , n , e , u ) } ) , r } , On . unary = function ( n ) { return tu ( n , 1 ) } , On . union = So , On . unionBy = Io , On . unionWith = Ro , On . uniq = function ( n ) { return n && n . length ? wr ( n ) : [ ] } , On . uniqBy = function ( n , t ) { return n && n . length ? wr ( n , ve ( t , 2 ) ) : [ ] } , On . uniqWith = function ( n , t ) { return t = "function" == typeof t ? t : F , n && n . length ? wr ( n , F , t ) : [ ] } , On . unset = function ( n , t ) { var r ; if ( null == n ) r = ! 0 ; else { r = n ; var e = t , e = Ee ( e , r ) ? [ e ] : Ir ( e ) ; r = We ( r , e ) , e = Ce ( Ze ( e ) ) , r = ! ( null != r && ui . call ( r , e ) ) || delete r [ e ] } return r } , On . unzip = Ke , On . unzipWith = Ge , On . update = function ( n , t , r ) { return null == n ? n : pr ( n , t , Sr ( r ) ( It ( n , t ) ) , void 0 ) } , On . updateWith = function ( n , t , r , e ) { return e = "function" == typeof e ? e : F , null != n && ( n = pr ( n , t , Sr ( r ) ( It ( n , t ) ) , e ) ) , n } , On . values = Bu , On . valuesIn = function ( n ) { return null == n ? [ ] : I ( n , zu ( n ) ) } , On . without = zo , On . words = Cu , On . wrap = function ( n , t ) { return Qo ( Sr ( t ) , n ) } , On . xor = Wo , On . xorBy = Bo , On . xorWith = Lo , On . zip = Uo , On . zipObject = function ( n , t ) { return Er ( n || [ ] , t || [ ] , lt ) } , On . zipObjectDeep = function ( n , t ) { return Er ( n || [ ] , t || [ ] , pr ) } , On . zipWith = Co , On . entries = If , On . entriesIn = Rf , On . extend = gf , On . extendWith = df , $u ( On , On ) , On . add = Jf , On . attempt = Tf , On . camelCase = zf , On . capitalize = Lu , On . ceil = Yf , On . clamp = function ( n , t , r ) { return r === F && ( r = t , t = F ) , r !== F && ( r = ku ( r ) , r = r === r ? r : 0 ) , t !== F && ( t = ku ( t ) , t = t =