webpackJsonp([0], { 1036: function(e, t, n) { !(function(t, n) { e.exports = n(); })(0, function() { 'use strict'; function classTest(e) { return new RegExp('(^|\\s)' + e + '(?:$|\\s)\\s*'); } function removeChildren(e) { for ( var t = e.childNodes.length; t > 0; --t ) e.removeChild(e.firstChild); return e; } function removeChildrenAndAdd(e, t) { return removeChildren(e).appendChild(t); } function elt(e, t, n, r) { var i = document.createElement(e); if ( (n && (i.className = n), r && (i.style.cssText = r), 'string' == typeof t) ) i.appendChild(document.createTextNode(t)); else if (t) for (var o = 0; o < t.length; ++o) i.appendChild(t[o]); return i; } function eltP(e, t, n, r) { var i = elt(e, t, n, r); return i.setAttribute('role', 'presentation'), i; } function contains(e, t) { if ((3 == t.nodeType && (t = t.parentNode), e.contains)) return e.contains(t); do { if ((11 == t.nodeType && (t = t.host), t == e)) return !0; } while ((t = t.parentNode)); } function activeElt() { var e; try { e = document.activeElement; } catch (t) { e = document.body || null; } for ( ; e && e.shadowRoot && e.shadowRoot.activeElement; ) e = e.shadowRoot.activeElement; return e; } function addClass(e, t) { var n = e.className; classTest(t).test(n) || (e.className += (n ? ' ' : '') + t); } function joinClasses(e, t) { for ( var n = e.split(' '), r = 0; r < n.length; r++ ) n[r] && !classTest(n[r]).test(t) && (t += ' ' + n[r]); return t; } function bind(e) { var t = Array.prototype.slice.call(arguments, 1); return function() { return e.apply(null, t); }; } function copyObj(e, t, n) { t || (t = {}); for (var r in e) !e.hasOwnProperty(r) || (!1 === n && t.hasOwnProperty(r)) || (t[r] = e[r]); return t; } function countColumn(e, t, n, r, i) { null == t && -1 == (t = e.search(/[^\s\u00a0]/)) && (t = e.length); for (var o = r || 0, a = i || 0; ; ) { var s = e.indexOf('\t', o); if (s < 0 || s >= t) return a + (t - o); (a += s - o), (a += n - a % n), (o = s + 1); } } function indexOf(e, t) { for (var n = 0; n < e.length; ++n) if (e[n] == t) return n; return -1; } function findColumn(e, t, n) { for (var r = 0, i = 0; ; ) { var o = e.indexOf('\t', r); -1 == o && (o = e.length); var a = o - r; if (o == e.length || i + a >= t) return r + Math.min(a, t - i); if (((i += o - r), (i += n - i % n), (r = o + 1), i >= t)) return r; } } function spaceStr(e) { for (; E.length <= e; ) E.push(lst(E) + ' '); return E[e]; } function lst(e) { return e[e.length - 1]; } function map(e, t) { for (var n = [], r = 0; r < e.length; r++) n[r] = t(e[r], r); return n; } function insertSorted(e, t, n) { for (var r = 0, i = n(t); r < e.length && n(e[r]) <= i; ) r++; e.splice(r, 0, t); } function nothing() {} function createObj(e, t) { var n; return Object.create ? (n = Object.create(e)) : ((nothing.prototype = e), (n = new nothing())), t && copyObj(t, n), n; } function isWordCharBasic(e) { return ( /\w/.test(e) || (e > '€' && (e.toUpperCase() != e.toLowerCase() || I.test(e))) ); } function isWordChar(e, t) { return t ? !!(t.source.indexOf('\\w') > -1 && isWordCharBasic(e)) || t.test(e) : isWordCharBasic(e); } function isEmpty(e) { for (var t in e) if (e.hasOwnProperty(t) && e[t]) return !1; return !0; } function isExtendingChar(e) { return e.charCodeAt(0) >= 768 && F.test(e); } function skipExtendingChars(e, t, n) { for ( ; (n < 0 ? t > 0 : t < e.length) && isExtendingChar(e.charAt(t)); ) t += n; return t; } function findFirst(e, t, n) { for (;;) { if (Math.abs(t - n) <= 1) return e(t) ? t : n; var r = Math.floor((t + n) / 2); e(r) ? (n = r) : (t = r); } } function Display(e, t, r) { var i = this; (this.input = r), (i.scrollbarFiller = elt('div', null, 'CodeMirror-scrollbar-filler')), i.scrollbarFiller.setAttribute('cm-not-content', 'true'), (i.gutterFiller = elt('div', null, 'CodeMirror-gutter-filler')), i.gutterFiller.setAttribute('cm-not-content', 'true'), (i.lineDiv = eltP('div', null, 'CodeMirror-code')), (i.selectionDiv = elt('div', null, null, 'position: relative; z-index: 1')), (i.cursorDiv = elt('div', null, 'CodeMirror-cursors')), (i.measure = elt('div', null, 'CodeMirror-measure')), (i.lineMeasure = elt('div', null, 'CodeMirror-measure')), (i.lineSpace = eltP('div', [i.measure, i.lineMeasure, i.selectionDiv, i.cursorDiv, i.lineDiv], null, 'position: relative; outline: none')); var o = eltP('div', [i.lineSpace], 'CodeMirror-lines'); (i.mover = elt( 'div', [o], null, 'position: relative' )), (i.sizer = elt('div', [i.mover], 'CodeMirror-sizer')), (i.sizerWidth = null), (i.heightForcer = elt('div', null, null, 'position: absolute; height: ' + N + 'px; width: 1px;')), (i.gutters = elt('div', null, 'CodeMirror-gutters')), (i.lineGutter = null), (i.scroller = elt('div', [i.sizer, i.heightForcer, i.gutters], 'CodeMirror-scroll')), i.scroller.setAttribute('tabIndex', '-1'), (i.wrapper = elt('div', [i.scrollbarFiller, i.gutterFiller, i.scroller], 'CodeMirror')), a && s < 8 && ((i.gutters.style.zIndex = -1), (i.scroller.style.paddingRight = 0)), l || (n && v) || (i.scroller.draggable = !0), e && (e.appendChild ? e.appendChild(i.wrapper) : e(i.wrapper)), (i.viewFrom = i.viewTo = t.first), (i.reportedViewFrom = i.reportedViewTo = t.first), (i.view = []), (i.renderedView = null), (i.externalMeasured = null), (i.viewOffset = 0), (i.lastWrapHeight = i.lastWrapWidth = 0), (i.updateLineNumbers = null), (i.nativeBarWidth = i.barHeight = i.barWidth = 0), (i.scrollbarsClipped = !1), (i.lineNumWidth = i.lineNumInnerWidth = i.lineNumChars = null), (i.alignWidgets = !1), (i.cachedCharWidth = i.cachedTextHeight = i.cachedPaddingH = null), (i.maxLine = null), (i.maxLineLength = 0), (i.maxLineChanged = !1), (i.wheelDX = i.wheelDY = i.wheelStartX = i.wheelStartY = null), (i.shift = !1), (i.selForContextMenu = null), (i.activeTouch = null), r.init(i); } function getLine(e, t) { if ((t -= e.first) < 0 || t >= e.size) throw new Error( 'There is no line ' + (t + e.first) + ' in the document.' ); for (var n = e; !n.lines; ) for (var r = 0; ; ++r) { var i = n.children[r], o = i.chunkSize(); if (t < o) { n = i; break; } t -= o; } return n.lines[t]; } function getBetween(e, t, n) { var r = [], i = t.line; return e.iter(t.line, n.line + 1, function(e) { var o = e.text; i == n.line && (o = o.slice( 0, n.ch )), i == t.line && (o = o.slice(t.ch)), r.push(o), ++i; }), r; } function getLines(e, t, n) { var r = []; return e.iter(t, n, function(e) { r.push(e.text); }), r; } function updateLineHeight(e, t) { var n = t - e.height; if (n) for (var r = e; r; r = r.parent) r.height += n; } function lineNo(e) { if (null == e.parent) return null; for ( var t = e.parent, n = indexOf(t.lines, e), r = t.parent; r; (t = r), (r = r.parent) ) for (var i = 0; r.children[i] != t; ++i) n += r.children[i].chunkSize(); return n + t.first; } function lineAtHeight(e, t) { var n = e.first; e: do { for (var r = 0; r < e.children.length; ++r) { var i = e.children[r], o = i.height; if (t < o) { e = i; continue e; } (t -= o), (n += i.chunkSize()); } return n; } while (!e.lines); for (var a = 0; a < e.lines.length; ++a) { var s = e.lines[a], l = s.height; if (t < l) break; t -= l; } return n + a; } function isLine(e, t) { return t >= e.first && t < e.first + e.size; } function lineNumberFor(e, t) { return String(e.lineNumberFormatter(t + e.firstLineNumber)); } function Pos(e, t, n) { if ((void 0 === n && (n = null), !(this instanceof Pos))) return new Pos(e, t, n); (this.line = e), (this.ch = t), (this.sticky = n); } function cmp(e, t) { return e.line - t.line || e.ch - t.ch; } function equalCursorPos(e, t) { return e.sticky == t.sticky && 0 == cmp(e, t); } function copyPos(e) { return Pos(e.line, e.ch); } function maxPos(e, t) { return cmp(e, t) < 0 ? t : e; } function minPos(e, t) { return cmp(e, t) < 0 ? e : t; } function clipLine(e, t) { return Math.max(e.first, Math.min(t, e.first + e.size - 1)); } function clipPos(e, t) { if (t.line < e.first) return Pos(e.first, 0); var n = e.first + e.size - 1; return t.line > n ? Pos(n, getLine(e, n).text.length) : clipToLen(t, getLine(e, t.line).text.length); } function clipToLen(e, t) { var n = e.ch; return null == n || n > t ? Pos(e.line, t) : n < 0 ? Pos(e.line, 0) : e; } function clipPosArray(e, t) { for (var n = [], r = 0; r < t.length; r++) n[r] = clipPos(e, t[r]); return n; } function seeReadOnlySpans() { B = !0; } function seeCollapsedSpans() { z = !0; } function MarkedSpan(e, t, n) { (this.marker = e), (this.from = t), (this.to = n); } function getMarkedSpanFor(e, t) { if (e) for (var n = 0; n < e.length; ++n) { var r = e[n]; if (r.marker == t) return r; } } function removeMarkedSpan(e, t) { for ( var n, r = 0; r < e.length; ++r ) e[r] != t && (n || (n = [])).push(e[r]); return n; } function addMarkedSpan(e, t) { (e.markedSpans = e.markedSpans ? e.markedSpans.concat([t]) : [t]), t.marker.attachLine(e); } function markedSpansBefore(e, t, n) { var r; if (e) for (var i = 0; i < e.length; ++i) { var o = e[i], a = o.marker, s = null == o.from || (a.inclusiveLeft ? o.from <= t : o.from < t); if ( s || (o.from == t && 'bookmark' == a.type && (!n || !o.marker.insertLeft)) ) { var l = null == o.to || (a.inclusiveRight ? o.to >= t : o.to > t); (r || (r = [])).push(new MarkedSpan(a, o.from, l ? null : o.to)); } } return r; } function markedSpansAfter(e, t, n) { var r; if (e) for (var i = 0; i < e.length; ++i) { var o = e[i], a = o.marker, s = null == o.to || (a.inclusiveRight ? o.to >= t : o.to > t); if ( s || (o.from == t && 'bookmark' == a.type && (!n || o.marker.insertLeft)) ) { var l = null == o.from || (a.inclusiveLeft ? o.from <= t : o.from < t); (r || (r = [])) .push( new MarkedSpan( a, l ? null : o.from - t, null == o.to ? null : o.to - t ) ); } } return r; } function stretchSpansOverChange(e, t) { if (t.full) return null; var n = isLine(e, t.from.line) && getLine(e, t.from.line).markedSpans, r = isLine(e, t.to.line) && getLine(e, t.to.line).markedSpans; if (!n && !r) return null; var i = t.from.ch, o = t.to.ch, a = 0 == cmp(t.from, t.to), s = markedSpansBefore(n, i, a), l = markedSpansAfter(r, o, a), c = 1 == t.text.length, u = lst(t.text).length + (c ? i : 0); if (s) for (var d = 0; d < s.length; ++d) { var p = s[d]; if (null == p.to) { var f = getMarkedSpanFor(l, p.marker); f ? c && (p.to = null == f.to ? null : f.to + u) : (p.to = i); } } if (l) for (var h = 0; h < l.length; ++h) { var g = l[h]; if ((null != g.to && (g.to += u), null == g.from)) { var m = getMarkedSpanFor(s, g.marker); m || ((g.from = u), c && (s || (s = [])).push(g)); } else (g.from += u), c && (s || (s = [])).push(g); } s && (s = clearEmptySpans(s)), l && l != s && (l = clearEmptySpans(l)); var v = [s]; if (!c) { var y, b = t.text.length - 2; if (b > 0 && s) for (var x = 0; x < s.length; ++x) null == s[x].to && (y || (y = [])).push(new MarkedSpan(s[x].marker, null, null)); for (var C = 0; C < b; ++C) v.push(y); v.push(l); } return v; } function clearEmptySpans(e) { for (var t = 0; t < e.length; ++t) { var n = e[t]; null != n.from && n.from == n.to && !1 !== n.marker.clearWhenEmpty && e.splice(t--, 1); } return e.length ? e : null; } function removeReadOnlyRanges(e, t, n) { var r = null; if ( (e.iter(t.line, n.line + 1, function(e) { if (e.markedSpans) for (var t = 0; t < e.markedSpans.length; ++t) { var n = e.markedSpans[t].marker; !n.readOnly || (r && -1 != indexOf(r, n)) || (r || (r = [])).push(n); } }), !r) ) return null; for ( var i = [{ from: t, to: n }], o = 0; o < r.length; ++o ) for (var a = r[o], s = a.find(0), l = 0; l < i.length; ++l) { var c = i[l]; if (!(cmp(c.to, s.from) < 0 || cmp(c.from, s.to) > 0)) { var u = [l, 1], d = cmp(c.from, s.from), p = cmp(c.to, s.to); (d < 0 || (!a.inclusiveLeft && !d)) && u.push({ from: c.from, to: s.from }), (p > 0 || (!a.inclusiveRight && !p)) && u.push({ from: s.to, to: c.to }), i.splice.apply(i, u), (l += u.length - 3); } } return i; } function detachMarkedSpans(e) { var t = e.markedSpans; if (t) { for (var n = 0; n < t.length; ++n) t[n].marker.detachLine(e); e.markedSpans = null; } } function attachMarkedSpans(e, t) { if (t) { for (var n = 0; n < t.length; ++n) t[n].marker.attachLine(e); e.markedSpans = t; } } function extraLeft(e) { return e.inclusiveLeft ? -1 : 0; } function extraRight(e) { return e.inclusiveRight ? 1 : 0; } function compareCollapsedMarkers(e, t) { var n = e.lines.length - t.lines.length; if (0 != n) return n; var r = e.find(), i = t.find(), o = cmp(r.from, i.from) || extraLeft(e) - extraLeft(t); if (o) return -o; var a = cmp(r.to, i.to) || extraRight(e) - extraRight(t); return a || t.id - e.id; } function collapsedSpanAtSide(e, t) { var n, r = z && e.markedSpans; if (r) for (var i = void 0, o = 0; o < r.length; ++o) (i = r[o]), i.marker.collapsed && null == (t ? i.from : i.to) && (!n || compareCollapsedMarkers(n, i.marker) < 0) && (n = i.marker); return n; } function collapsedSpanAtStart(e) { return collapsedSpanAtSide(e, !0); } function collapsedSpanAtEnd(e) { return collapsedSpanAtSide(e, !1); } function conflictingCollapsedRange(e, t, n, r, i) { var o = getLine(e, t), a = z && o.markedSpans; if (a) for (var s = 0; s < a.length; ++s) { var l = a[s]; if (l.marker.collapsed) { var c = l.marker.find(0), u = cmp(c.from, n) || extraLeft(l.marker) - extraLeft(i), d = cmp(c.to, r) || extraRight(l.marker) - extraRight(i); if ( !((u >= 0 && d <= 0) || (u <= 0 && d >= 0)) && ((u <= 0 && (l.marker.inclusiveRight && i.inclusiveLeft ? cmp(c.to, n) >= 0 : cmp(c.to, n) > 0)) || (u >= 0 && (l.marker.inclusiveRight && i.inclusiveLeft ? cmp(c.from, r) <= 0 : cmp(c.from, r) < 0))) ) return !0; } } } function visualLine(e) { for (var t; (t = collapsedSpanAtStart(e)); ) e = t.find(-1, !0).line; return e; } function visualLineEnd(e) { for (var t; (t = collapsedSpanAtEnd(e)); ) e = t.find(1, !0).line; return e; } function visualLineContinued(e) { for ( var t, n; (t = collapsedSpanAtEnd(e)); ) (e = t.find(1, !0).line), (n || (n = [])).push(e); return n; } function visualLineNo(e, t) { var n = getLine(e, t), r = visualLine(n); return n == r ? t : lineNo(r); } function visualLineEndNo(e, t) { if (t > e.lastLine()) return t; var n, r = getLine(e, t); if (!lineIsHidden(e, r)) return t; for (; (n = collapsedSpanAtEnd(r)); ) r = n.find(1, !0).line; return lineNo(r) + 1; } function lineIsHidden(e, t) { var n = z && t.markedSpans; if (n) for (var r = void 0, i = 0; i < n.length; ++i) if (((r = n[i]), r.marker.collapsed)) { if (null == r.from) return !0; if ( !r.marker.widgetNode && 0 == r.from && r.marker.inclusiveLeft && lineIsHiddenInner(e, t, r) ) return !0; } } function lineIsHiddenInner(e, t, n) { if (null == n.to) { var r = n.marker.find(1, !0); return lineIsHiddenInner( e, r.line, getMarkedSpanFor(r.line.markedSpans, n.marker) ); } if (n.marker.inclusiveRight && n.to == t.text.length) return !0; for ( var i = void 0, o = 0; o < t.markedSpans.length; ++o ) if (((i = t.markedSpans[o]), i.marker.collapsed && !i.marker.widgetNode && i.from == n.to && (null == i.to || i.to != n.from) && (i.marker.inclusiveLeft || n.marker.inclusiveRight) && lineIsHiddenInner(e, t, i))) return !0; } function heightAtLine(e) { e = visualLine(e); for (var t = 0, n = e.parent, r = 0; r < n.lines.length; ++r) { var i = n.lines[r]; if (i == e) break; t += i.height; } for ( var o = n.parent; o; (n = o), (o = n.parent) ) for (var a = 0; a < o.children.length; ++a) { var s = o.children[a]; if (s == n) break; t += s.height; } return t; } function lineLength(e) { if (0 == e.height) return 0; for (var t, n = e.text.length, r = e; (t = collapsedSpanAtStart(r)); ) { var i = t.find(0, !0); (r = i.from.line), (n += i.from.ch - i.to.ch); } for (r = e; (t = collapsedSpanAtEnd(r)); ) { var o = t.find(0, !0); (n -= r.text.length - o.from.ch), (r = o.to.line), (n += r.text.length - o.to.ch); } return n; } function findMaxLine(e) { var t = e.display, n = e.doc; (t.maxLine = getLine( n, n.first )), (t.maxLineLength = lineLength(t.maxLine)), (t.maxLineChanged = !0), n.iter( function(e) { var n = lineLength(e); n > t.maxLineLength && ((t.maxLineLength = n), (t.maxLine = e)); } ); } function iterateBidiSections(e, t, n, r) { if (!e) return r(t, n, 'ltr'); for (var i = !1, o = 0; o < e.length; ++o) { var a = e[o]; ((a.from < n && a.to > t) || (t == n && a.to == t)) && (r( Math.max(a.from, t), Math.min(a.to, n), 1 == a.level ? 'rtl' : 'ltr' ), (i = !0)); } i || r(t, n, 'ltr'); } function getBidiPartAt(e, t, n) { var r; R = null; for (var i = 0; i < e.length; ++i) { var o = e[i]; if (o.from < t && o.to > t) return i; o.to == t && (o.from != o.to && 'before' == n ? (r = i) : (R = i)), o.from == t && (o.from != o.to && 'before' != n ? (r = i) : (R = i)); } return null != r ? r : R; } function getOrder(e, t) { var n = e.order; return null == n && (n = e.order = V(e.text, t)), n; } function moveCharLogically(e, t, n) { var r = skipExtendingChars(e.text, t + n, n); return r < 0 || r > e.text.length ? null : r; } function moveLogically(e, t, n) { var r = moveCharLogically(e, t.ch, n); return null == r ? null : new Pos(t.line, r, n < 0 ? 'after' : 'before'); } function endOfLine(e, t, n, r, i) { if (e) { var o = getOrder(n, t.doc.direction); if (o) { var a, s = i < 0 ? lst(o) : o[0], l = i < 0 == (1 == s.level), c = l ? 'after' : 'before'; if (s.level > 0) { var u = prepareMeasureForLine(t, n); a = i < 0 ? n.text.length - 1 : 0; var d = measureCharPrepared(t, u, a).top; (a = findFirst( function(e) { return measureCharPrepared(t, u, e).top == d; }, i < 0 == (1 == s.level) ? s.from : s.to - 1, a )), 'before' == c && (a = moveCharLogically(n, a, 1)); } else a = i < 0 ? s.to : s.from; return new Pos(r, a, c); } } return new Pos( r, i < 0 ? n.text.length : 0, i < 0 ? 'before' : 'after' ); } function moveVisually(e, t, n, r) { var i = getOrder(t, e.doc.direction); if (!i) return moveLogically(t, n, r); n.ch >= t.text.length ? ((n.ch = t.text.length), (n.sticky = 'before')) : n.ch <= 0 && ((n.ch = 0), (n.sticky = 'after')); var o = getBidiPartAt(i, n.ch, n.sticky), a = i[o]; if ( 'ltr' == e.doc.direction && a.level % 2 == 0 && (r > 0 ? a.to > n.ch : a.from < n.ch) ) return moveLogically(t, n, r); var s, l = function(e, n) { return moveCharLogically(t, e instanceof Pos ? e.ch : e, n); }, c = function(n) { return e.options.lineWrapping ? ((s = s || prepareMeasureForLine(e, t)), wrappedLineExtentChar( e, t, s, n )) : { begin: 0, end: t.text.length }; }, u = c('before' == n.sticky ? l(n, -1) : n.ch); if ('rtl' == e.doc.direction || 1 == a.level) { var d = 1 == a.level == r < 0, p = l(n, d ? 1 : -1); if ( null != p && (d ? p <= a.to && p <= u.end : p >= a.from && p >= u.begin) ) { var f = d ? 'before' : 'after'; return new Pos(n.line, p, f); } } var h = function(e, t, r) { for ( var o = function(e, t) { return t ? new Pos(n.line, l(e, 1), 'before') : new Pos(n.line, e, 'after'); }; e >= 0 && e < i.length; e += t ) { var a = i[e], s = t > 0 == (1 != a.level), c = s ? r.begin : l(r.end, -1); if (a.from <= c && c < a.to) return o(c, s); if (((c = s ? a.from : l(a.to, -1)), r.begin <= c && c < r.end)) return o(c, s); } }, g = h(o + r, r, u); if (g) return g; var m = r > 0 ? u.end : l(u.begin, -1); return null == m || (r > 0 && m == t.text.length) || !(g = h(r > 0 ? 0 : i.length - 1, r, c(m))) ? null : g; } function getHandlers(e, t) { return (e._handlers && e._handlers[t]) || j; } function off(e, t, n) { if (e.removeEventListener) e.removeEventListener(t, n, !1); else if (e.detachEvent) e.detachEvent('on' + t, n); else { var r = e._handlers, i = r && r[t]; if (i) { var o = indexOf(i, n); o > -1 && (r[t] = i.slice(0, o).concat(i.slice(o + 1))); } } } function signal(e, t) { var n = getHandlers(e, t); if (n.length) for ( var r = Array.prototype.slice.call(arguments, 2), i = 0; i < n.length; ++i ) n[i].apply(null, r); } function signalDOMEvent(e, t, n) { return 'string' == typeof t && (t = { type: t, preventDefault: function() { this.defaultPrevented = !0; } }), signal(e, n || t.type, e, t), e_defaultPrevented(t) || t.codemirrorIgnore; } function signalCursorActivity(e) { var t = e._handlers && e._handlers.cursorActivity; if (t) for ( var n = e.curOp.cursorActivityHandlers || (e.curOp.cursorActivityHandlers = []), r = 0; r < t.length; ++r ) -1 == indexOf(n, t[r]) && n.push(t[r]); } function hasHandler(e, t) { return getHandlers(e, t).length > 0; } function eventMixin(e) { (e.prototype.on = function(e, t) { G(this, e, t); }), (e.prototype.off = function(e, t) { off(this, e, t); }); } function e_preventDefault(e) { e.preventDefault ? e.preventDefault() : (e.returnValue = !1); } function e_stopPropagation(e) { e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = !0); } function e_defaultPrevented(e) { return null != e.defaultPrevented ? e.defaultPrevented : 0 == e.returnValue; } function e_stop(e) { e_preventDefault(e), e_stopPropagation(e); } function e_target(e) { return e.target || e.srcElement; } function e_button(e) { var t = e.which; return null == t && (1 & e.button ? (t = 1) : 2 & e.button ? (t = 3) : 4 & e.button && (t = 2)), y && e.ctrlKey && 1 == t && (t = 3), t; } function zeroWidthElement(e) { if (null == O) { var t = elt('span', '​'); removeChildrenAndAdd( e, elt('span', [t, document.createTextNode('x')]) ), 0 != e.firstChild.offsetHeight && (O = t.offsetWidth <= 1 && t.offsetHeight > 2 && !(a && s < 8)); } var n = O ? elt('span', '​') : elt( 'span', ' ', null, 'display: inline-block; width: 1px; margin-right: -1px' ); return n.setAttribute('cm-text', ''), n; } function hasBadBidiRects(e) { if (null != P) return P; var t = removeChildrenAndAdd(e, document.createTextNode('AخA')), n = w(t, 0, 1).getBoundingClientRect(), r = w(t, 1, 2).getBoundingClientRect(); return removeChildren( e ), !(!n || n.left == n.right) && (P = r.right - n.right < 3); } function hasBadZoomedRects(e) { if (null != q) return q; var t = removeChildrenAndAdd(e, elt('span', 'x')), n = t.getBoundingClientRect(), r = w(t, 0, 1).getBoundingClientRect(); return (q = Math.abs(n.left - r.left) > 1); } function defineMode(e, t) { arguments.length > 2 && (t.dependencies = Array.prototype.slice.call( arguments, 2 )), (X[e] = t); } function defineMIME(e, t) { Y[e] = t; } function resolveMode(e) { if ('string' == typeof e && Y.hasOwnProperty(e)) e = Y[e]; else if (e && 'string' == typeof e.name && Y.hasOwnProperty(e.name)) { var t = Y[e.name]; 'string' == typeof t && (t = { name: t }), (e = createObj( t, e )), (e.name = t.name); } else { if ('string' == typeof e && /^[\w\-]+\/[\w\-]+\+xml$/.test(e)) return resolveMode('application/xml'); if ('string' == typeof e && /^[\w\-]+\/[\w\-]+\+json$/.test(e)) return resolveMode('application/json'); } return 'string' == typeof e ? { name: e } : e || { name: 'null' }; } function getMode(e, t) { t = resolveMode(t); var n = X[t.name]; if (!n) return getMode(e, 'text/plain'); var r = n(e, t); if (Z.hasOwnProperty(t.name)) { var i = Z[t.name]; for (var o in i) i.hasOwnProperty(o) && (r.hasOwnProperty(o) && (r['_' + o] = r[o]), (r[o] = i[o])); } if ( ((r.name = t.name), t.helperType && (r.helperType = t.helperType), t.modeProps) ) for (var a in t.modeProps) r[a] = t.modeProps[a]; return r; } function extendMode(e, t) { copyObj(t, Z.hasOwnProperty(e) ? Z[e] : (Z[e] = {})); } function copyState(e, t) { if (!0 === t) return t; if (e.copyState) return e.copyState(t); var n = {}; for (var r in t) { var i = t[r]; i instanceof Array && (i = i.concat([])), (n[r] = i); } return n; } function innerMode(e, t) { for ( var n; e.innerMode && (n = e.innerMode(t)) && n.mode != e; ) (t = n.state), (e = n.mode); return n || { mode: e, state: t }; } function startState(e, t, n) { return !e.startState || e.startState(t, n); } function highlightLine(e, t, n, r) { var i = [e.state.modeGen], o = {}; runMode( e, t.text, e.doc.mode, n, function(e, t) { return i.push(e, t); }, o, r ); for (var a = 0; a < e.state.overlays.length; ++a) !(function(n) { var r = e.state.overlays[n], a = 1, s = 0; runMode( e, t.text, r.mode, !0, function(e, t) { for (var n = a; s < e; ) { var o = i[a]; o > e && i.splice(a, 1, e, i[a + 1], o), (a += 2), (s = Math.min( e, o )); } if (t) if (r.opaque) i.splice(n, a - n, e, 'overlay ' + t), (a = n + 2); else for (; n < a; n += 2) { var l = i[n + 1]; i[n + 1] = (l ? l + ' ' : '') + 'overlay ' + t; } }, o ); })(a); return { styles: i, classes: o.bgClass || o.textClass ? o : null }; } function getLineStyles(e, t, n) { if (!t.styles || t.styles[0] != e.state.modeGen) { var r = getStateBefore(e, lineNo(t)), i = highlightLine( e, t, t.text.length > e.options.maxHighlightLength ? copyState(e.doc.mode, r) : r ); (t.stateAfter = r), (t.styles = i.styles), i.classes ? (t.styleClasses = i.classes) : t.styleClasses && (t.styleClasses = null), n === e.doc.frontier && e.doc.frontier++; } return t.styles; } function getStateBefore(e, t, n) { var r = e.doc, i = e.display; if (!r.mode.startState) return !0; var o = findStartLine(e, t, n), a = o > r.first && getLine(r, o - 1).stateAfter; return (a = a ? copyState(r.mode, a) : startState(r.mode)), r.iter(o, t, function(n) { processLine(e, n.text, a); var s = o == t - 1 || o % 5 == 0 || (o >= i.viewFrom && o < i.viewTo); (n.stateAfter = s ? copyState(r.mode, a) : null), ++o; }), n && (r.frontier = o), a; } function processLine(e, t, n, r) { var i = e.doc.mode, o = new J(t, e.options.tabSize); for ( (o.start = o.pos = r || 0), '' == t && callBlankLine(i, n); !o.eol(); ) readToken(i, o, n), (o.start = o.pos); } function callBlankLine(e, t) { if (e.blankLine) return e.blankLine(t); if (e.innerMode) { var n = innerMode(e, t); return n.mode.blankLine ? n.mode.blankLine(n.state) : void 0; } } function readToken(e, t, n, r) { for (var i = 0; i < 10; i++) { r && (r[0] = innerMode(e, n).mode); var o = e.token(t, n); if (t.pos > t.start) return o; } throw new Error('Mode ' + e.name + ' failed to advance stream.'); } function takeToken(e, t, n, r) { var i, o = function(e) { return { start: d.start, end: d.pos, string: d.current(), type: i || null, state: e ? copyState(a.mode, u) : u }; }, a = e.doc, s = a.mode; t = clipPos(a, t); var l, c = getLine(a, t.line), u = getStateBefore(e, t.line, n), d = new J(c.text, e.options.tabSize); for ( r && (l = []); (r || d.pos < t.ch) && !d.eol(); ) (d.start = d.pos), (i = readToken(s, d, u)), r && l.push(o(!0)); return r ? l : o(); } function extractLineClasses(e, t) { if (e) for (;;) { var n = e.match(/(?:^|\s+)line-(background-)?(\S+)/); if (!n) break; e = e.slice(0, n.index) + e.slice(n.index + n[0].length); var r = n[1] ? 'bgClass' : 'textClass'; null == t[r] ? (t[r] = n[2]) : new RegExp('(?:^|s)' + n[2] + '(?:$|s)').test(t[r]) || (t[r] += ' ' + n[2]); } return e; } function runMode(e, t, n, r, i, o, a) { var s = n.flattenSpans; null == s && (s = e.options.flattenSpans); var l, c = 0, u = null, d = new J(t, e.options.tabSize), p = e.options.addModeClass && [null]; for ( '' == t && extractLineClasses(callBlankLine(n, r), o); !d.eol(); ) { if ( (d.pos > e.options.maxHighlightLength ? ((s = !1), a && processLine(e, t, r, d.pos), (d.pos = t.length), (l = null)) : (l = extractLineClasses(readToken(n, d, r, p), o)), p) ) { var f = p[0].name; f && (l = 'm-' + (l ? f + ' ' + l : f)); } if (!s || u != l) { for (; c < d.start; ) (c = Math.min(d.start, c + 5e3)), i(c, u); u = l; } d.start = d.pos; } for (; c < d.pos; ) { var h = Math.min(d.pos, c + 5e3); i(h, u), (c = h); } } function findStartLine(e, t, n) { for ( var r, i, o = e.doc, a = n ? -1 : t - (e.doc.mode.innerMode ? 1e3 : 100), s = t; s > a; --s ) { if (s <= o.first) return o.first; var l = getLine(o, s - 1); if (l.stateAfter && (!n || s <= o.frontier)) return s; var c = countColumn(l.text, null, e.options.tabSize); (null == i || r > c) && ((i = s - 1), (r = c)); } return i; } function updateLine(e, t, n, r) { (e.text = t), e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null), null != e.order && (e.order = null), detachMarkedSpans(e), attachMarkedSpans(e, n); var i = r ? r(e) : 1; i != e.height && updateLineHeight(e, i); } function cleanUpLine(e) { (e.parent = null), detachMarkedSpans(e); } function interpretTokenStyle(e, t) { if (!e || /^\s*$/.test(e)) return null; var n = t.addModeClass ? ne : te; return n[e] || (n[e] = e.replace(/\S+/g, 'cm-$&')); } function buildLineContent(e, t) { var n = eltP('span', null, null, l ? 'padding-right: .1px' : null), r = { pre: eltP('pre', [n], 'CodeMirror-line'), content: n, col: 0, pos: 0, cm: e, trailingSpace: !1, splitSpaces: (a || l) && e.getOption('lineWrapping') }; t.measure = {}; for (var i = 0; i <= (t.rest ? t.rest.length : 0); i++) { var o = i ? t.rest[i - 1] : t.line, s = void 0; (r.pos = 0), (r.addToken = buildToken), hasBadBidiRects(e.display.measure) && (s = getOrder(o, e.doc.direction)) && (r.addToken = buildTokenBadBidi(r.addToken, s)), (r.map = []); insertLineContent( o, r, getLineStyles(e, o, t != e.display.externalMeasured && lineNo(o)) ), o.styleClasses && (o.styleClasses.bgClass && (r.bgClass = joinClasses(o.styleClasses.bgClass, r.bgClass || '')), o.styleClasses.textClass && (r.textClass = joinClasses(o.styleClasses.textClass, r.textClass || ''))), 0 == r.map.length && r.map.push(0, 0, r.content.appendChild(zeroWidthElement(e.display.measure))), 0 == i ? ((t.measure.map = r.map), (t.measure.cache = {})) : ((t.measure.maps || (t.measure.maps = [])).push(r.map), (t.measure.caches || (t.measure.caches = [])).push({})); } if (l) { var c = r.content.lastChild; (/\bcm-tab\b/.test(c.className) || (c.querySelector && c.querySelector('.cm-tab'))) && (r.content.className = 'cm-tab-wrap-hack'); } return signal( e, 'renderLine', e, t.line, r.pre ), r.pre.className && (r.textClass = joinClasses(r.pre.className, r.textClass || '')), r; } function defaultSpecialCharPlaceholder(e) { var t = elt('span', '•', 'cm-invalidchar'); return (t.title = '\\u' + e .charCodeAt(0) .toString(16)), t.setAttribute('aria-label', t.title), t; } function buildToken(e, t, n, r, i, o, l) { if (t) { var c, u = e.splitSpaces ? splitSpaces(t, e.trailingSpace) : t, d = e.cm.state.specialChars, p = !1; if (d.test(t)) { c = document.createDocumentFragment(); for (var f = 0; ; ) { d.lastIndex = f; var h = d.exec(t), g = h ? h.index - f : t.length - f; if (g) { var m = document.createTextNode(u.slice(f, f + g)); a && s < 9 ? c.appendChild(elt('span', [m])) : c.appendChild(m), e.map.push( e.pos, e.pos + g, m ), (e.col += g), (e.pos += g); } if (!h) break; f += g + 1; var v = void 0; if ('\t' == h[0]) { var y = e.cm.options.tabSize, b = y - e.col % y; (v = c.appendChild( elt('span', spaceStr(b), 'cm-tab') )), v.setAttribute('role', 'presentation'), v.setAttribute( 'cm-text', '\t' ), (e.col += b); } else '\r' == h[0] || '\n' == h[0] ? ((v = c.appendChild( elt('span', '\r' == h[0] ? '␍' : '␤', 'cm-invalidchar') )), v.setAttribute('cm-text', h[0]), (e.col += 1)) : ((v = e.cm.options.specialCharPlaceholder( h[0] )), v.setAttribute('cm-text', h[0]), a && s < 9 ? c.appendChild(elt('span', [v])) : c.appendChild(v), (e.col += 1)); e.map.push(e.pos, e.pos + 1, v), e.pos++; } } else (e.col += t.length), (c = document.createTextNode(u)), e.map.push( e.pos, e.pos + t.length, c ), a && s < 9 && (p = !0), (e.pos += t.length); if ( ((e.trailingSpace = 32 == u.charCodeAt(t.length - 1)), n || r || i || p || l) ) { var x = n || ''; r && (x += r), i && (x += i); var C = elt('span', [c], x, l); return o && (C.title = o), e.content.appendChild(C); } e.content.appendChild(c); } } function splitSpaces(e, t) { if (e.length > 1 && !/ /.test(e)) return e; for (var n = t, r = '', i = 0; i < e.length; i++) { var o = e.charAt(i); ' ' != o || !n || (i != e.length - 1 && 32 != e.charCodeAt(i + 1)) || (o = ' '), (r += o), (n = ' ' == o); } return r; } function buildTokenBadBidi(e, t) { return function(n, r, i, o, a, s, l) { i = i ? i + ' cm-force-border' : 'cm-force-border'; for (var c = n.pos, u = c + r.length; ; ) { for ( var d = void 0, p = 0; p < t.length && ((d = t[p]), !(d.to > c && d.from <= c)); p++ ); if (d.to >= u) return e(n, r, i, o, a, s, l); e( n, r.slice(0, d.to - c), i, o, null, s, l ), (o = null), (r = r.slice(d.to - c)), (c = d.to); } }; } function buildCollapsedSpan(e, t, n, r) { var i = !r && n.widgetNode; i && e.map.push( e.pos, e.pos + t, i ), !r && e.cm.display.input.needsContentAttribute && (i || (i = e.content.appendChild(document.createElement('span'))), i.setAttribute('cm-marker', n.id)), i && (e.cm.display.input.setUneditable(i), e.content.appendChild(i)), (e.pos += t), (e.trailingSpace = !1); } function insertLineContent(e, t, n) { var r = e.markedSpans, i = e.text, o = 0; if (r) for ( var a, s, l, c, u, d, p, f = i.length, h = 0, g = 1, m = '', v = 0; ; ) { if (v == h) { (l = c = u = d = s = ''), (p = null), (v = 1 / 0); for (var y = [], b = void 0, x = 0; x < r.length; ++x) { var C = r[x], w = C.marker; 'bookmark' == w.type && C.from == h && w.widgetNode ? y.push(w) : C.from <= h && (null == C.to || C.to > h || (w.collapsed && C.to == h && C.from == h)) ? (null != C.to && C.to != h && v > C.to && ((v = C.to), (c = '')), w.className && (l += ' ' + w.className), w.css && (s = (s ? s + ';' : '') + w.css), w.startStyle && C.from == h && (u += ' ' + w.startStyle), w.endStyle && C.to == v && (b || (b = [])).push(w.endStyle, C.to), w.title && !d && (d = w.title), w.collapsed && (!p || compareCollapsedMarkers(p.marker, w) < 0) && (p = C)) : C.from > h && v > C.from && (v = C.from); } if (b) for (var S = 0; S < b.length; S += 2) b[S + 1] == v && (c += ' ' + b[S]); if (!p || p.from == h) for (var k = 0; k < y.length; ++k) buildCollapsedSpan(t, 0, y[k]); if (p && (p.from || 0) == h) { if ( (buildCollapsedSpan( t, (null == p.to ? f + 1 : p.to) - h, p.marker, null == p.from ), null == p.to) ) return; p.to == h && (p = !1); } } if (h >= f) break; for (var L = Math.min(f, v); ; ) { if (m) { var M = h + m.length; if (!p) { var T = M > L ? m.slice(0, L - h) : m; t.addToken( t, T, a ? a + l : l, u, h + T.length == v ? c : '', d, s ); } if (M >= L) { (m = m.slice(L - h)), (h = L); break; } (h = M), (u = ''); } (m = i.slice(o, (o = n[g++]))), (a = interpretTokenStyle( n[g++], t.cm.options )); } } else for (var O = 1; O < n.length; O += 2) t.addToken( t, i.slice(o, (o = n[O])), interpretTokenStyle(n[O + 1], t.cm.options) ); } function LineView(e, t, n) { (this.line = t), (this.rest = visualLineContinued(t)), (this.size = this.rest ? lineNo(lst(this.rest)) - n + 1 : 1), (this.node = this.text = null), (this.hidden = lineIsHidden(e, t)); } function buildViewArray(e, t, n) { for (var r, i = [], o = t; o < n; o = r) { var a = new LineView(e.doc, getLine(e.doc, o), o); (r = o + a.size), i.push(a); } return i; } function pushOperation(e) { re ? re.ops.push(e) : (e.ownsGroup = re = { ops: [e], delayedCallbacks: [] }); } function fireCallbacksForOps(e) { var t = e.delayedCallbacks, n = 0; do { for (; n < t.length; n++) t[n].call(null); for (var r = 0; r < e.ops.length; r++) { var i = e.ops[r]; if (i.cursorActivityHandlers) for (; i.cursorActivityCalled < i.cursorActivityHandlers.length; ) i.cursorActivityHandlers[i.cursorActivityCalled++].call( null, i.cm ); } } while (n < t.length); } function finishOperation(e, t) { var n = e.ownsGroup; if (n) try { fireCallbacksForOps(n); } finally { (re = null), t(n); } } function signalLater(e, t) { var n = getHandlers(e, t); if (n.length) { var r, i = Array.prototype.slice.call(arguments, 2); re ? (r = re.delayedCallbacks) : ie ? (r = ie) : ((r = ie = []), setTimeout(fireOrphanDelayed, 0)); for (var o = 0; o < n.length; ++o) !(function(e) { r.push(function() { return n[e].apply(null, i); }); })(o); } } function fireOrphanDelayed() { var e = ie; ie = null; for (var t = 0; t < e.length; ++t) e[t](); } function updateLineForChanges(e, t, n, r) { for (var i = 0; i < t.changes.length; i++) { var o = t.changes[i]; 'text' == o ? updateLineText(e, t) : 'gutter' == o ? updateLineGutter(e, t, n, r) : 'class' == o ? updateLineClasses(e, t) : 'widget' == o && updateLineWidgets(e, t, r); } t.changes = null; } function ensureLineWrapped(e) { return e.node == e.text && ((e.node = elt('div', null, null, 'position: relative')), e.text .parentNode && e.text.parentNode.replaceChild(e.node, e.text), e.node.appendChild( e.text ), a && s < 8 && (e.node.style.zIndex = 2)), e.node; } function updateLineBackground(e, t) { var n = t.bgClass ? t.bgClass + ' ' + (t.line.bgClass || '') : t.line.bgClass; if ((n && (n += ' CodeMirror-linebackground'), t.background)) n ? (t.background.className = n) : (t.background.parentNode.removeChild( t.background ), (t.background = null)); else if (n) { var r = ensureLineWrapped(t); (t.background = r.insertBefore( elt('div', null, n), r.firstChild )), e.display.input.setUneditable(t.background); } } function getLineContent(e, t) { var n = e.display.externalMeasured; return n && n.line == t.line ? ((e.display.externalMeasured = null), (t.measure = n.measure), n.built) : buildLineContent(e, t); } function updateLineText(e, t) { var n = t.text.className, r = getLineContent(e, t); t.text == t.node && (t.node = r.pre), t.text.parentNode.replaceChild(r.pre, t.text), (t.text = r.pre), r.bgClass != t.bgClass || r.textClass != t.textClass ? ((t.bgClass = r.bgClass), (t.textClass = r.textClass), updateLineClasses(e, t)) : n && (t.text.className = n); } function updateLineClasses(e, t) { updateLineBackground( e, t ), t.line.wrapClass ? (ensureLineWrapped(t).className = t.line.wrapClass) : t.node != t.text && (t.node.className = ''); var n = t.textClass ? t.textClass + ' ' + (t.line.textClass || '') : t.line.textClass; t.text.className = n || ''; } function updateLineGutter(e, t, n, r) { if ( (t.gutter && (t.node.removeChild( t.gutter ), (t.gutter = null)), t.gutterBackground && (t.node.removeChild( t.gutterBackground ), (t.gutterBackground = null)), t.line.gutterClass) ) { var i = ensureLineWrapped(t); (t.gutterBackground = elt( 'div', null, 'CodeMirror-gutter-background ' + t.line.gutterClass, 'left: ' + (e.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) + 'px; width: ' + r.gutterTotalWidth + 'px' )), e.display.input.setUneditable(t.gutterBackground), i.insertBefore( t.gutterBackground, t.text ); } var o = t.line.gutterMarkers; if (e.options.lineNumbers || o) { var a = ensureLineWrapped(t), s = (t.gutter = elt( 'div', null, 'CodeMirror-gutter-wrapper', 'left: ' + (e.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) + 'px' )); if ( (e.display.input.setUneditable(s), a.insertBefore(s, t.text), t.line .gutterClass && (s.className += ' ' + t.line.gutterClass), !e .options.lineNumbers || (o && o['CodeMirror-linenumbers']) || (t.lineNumber = s.appendChild( elt( 'div', lineNumberFor(e.options, n), 'CodeMirror-linenumber CodeMirror-gutter-elt', 'left: ' + r.gutterLeft['CodeMirror-linenumbers'] + 'px; width: ' + e.display.lineNumInnerWidth + 'px' ) )), o) ) for (var l = 0; l < e.options.gutters.length; ++l) { var c = e.options.gutters[l], u = o.hasOwnProperty(c) && o[c]; u && s.appendChild( elt( 'div', [u], 'CodeMirror-gutter-elt', 'left: ' + r.gutterLeft[c] + 'px; width: ' + r.gutterWidth[c] + 'px' ) ); } } } function updateLineWidgets(e, t, n) { t.alignable && (t.alignable = null); for ( var r = t.node.firstChild, i = void 0; r; r = i ) (i = r.nextSibling), 'CodeMirror-linewidget' == r.className && t.node.removeChild(r); insertLineWidgets(e, t, n); } function buildLineElement(e, t, n, r) { var i = getLineContent(e, t); return (t.text = t.node = i.pre), i.bgClass && (t.bgClass = i.bgClass), i.textClass && (t.textClass = i.textClass), updateLineClasses(e, t), updateLineGutter(e, t, n, r), insertLineWidgets(e, t, r), t.node; } function insertLineWidgets(e, t, n) { if ((insertLineWidgetsFor(e, t.line, t, n, !0), t.rest)) for (var r = 0; r < t.rest.length; r++) insertLineWidgetsFor(e, t.rest[r], t, n, !1); } function insertLineWidgetsFor(e, t, n, r, i) { if (t.widgets) for ( var o = ensureLineWrapped(n), a = 0, s = t.widgets; a < s.length; ++a ) { var l = s[a], c = elt('div', [l.node], 'CodeMirror-linewidget'); l.handleMouseEvents || c.setAttribute('cm-ignore-events', 'true'), positionLineWidget( l, c, n, r ), e.display.input.setUneditable(c), i && l.above ? o.insertBefore(c, n.gutter || n.text) : o.appendChild(c), signalLater(l, 'redraw'); } } function positionLineWidget(e, t, n, r) { if (e.noHScroll) { (n.alignable || (n.alignable = [])).push(t); var i = r.wrapperWidth; (t.style.left = r.fixedPos + 'px'), e.coverGutter || ((i -= r.gutterTotalWidth), (t.style.paddingLeft = r.gutterTotalWidth + 'px')), (t.style.width = i + 'px'); } e.coverGutter && ((t.style.zIndex = 5), (t.style.position = 'relative'), e.noHScroll || (t.style.marginLeft = -r.gutterTotalWidth + 'px')); } function widgetHeight(e) { if (null != e.height) return e.height; var t = e.doc.cm; if (!t) return 0; if (!contains(document.body, e.node)) { var n = 'position: relative;'; e.coverGutter && (n += 'margin-left: -' + t.display.gutters.offsetWidth + 'px;'), e.noHScroll && (n += 'width: ' + t.display.wrapper.clientWidth + 'px;'), removeChildrenAndAdd( t.display.measure, elt('div', [e.node], null, n) ); } return (e.height = e.node.parentNode.offsetHeight); } function eventInWidget(e, t) { for ( var n = e_target(t); n != e.wrapper; n = n.parentNode ) if (!n || (1 == n.nodeType && 'true' == n.getAttribute('cm-ignore-events')) || (n.parentNode == e.sizer && n != e.mover)) return !0; } function paddingTop(e) { return e.lineSpace.offsetTop; } function paddingVert(e) { return e.mover.offsetHeight - e.lineSpace.offsetHeight; } function paddingH(e) { if (e.cachedPaddingH) return e.cachedPaddingH; var t = removeChildrenAndAdd(e.measure, elt('pre', 'x')), n = window.getComputedStyle ? window.getComputedStyle(t) : t.currentStyle, r = { left: parseInt(n.paddingLeft), right: parseInt(n.paddingRight) }; return isNaN(r.left) || isNaN(r.right) || (e.cachedPaddingH = r), r; } function scrollGap(e) { return N - e.display.nativeBarWidth; } function displayWidth(e) { return ( e.display.scroller.clientWidth - scrollGap(e) - e.display.barWidth ); } function displayHeight(e) { return ( e.display.scroller.clientHeight - scrollGap(e) - e.display.barHeight ); } function ensureLineHeights(e, t, n) { var r = e.options.lineWrapping, i = r && displayWidth(e); if (!t.measure.heights || (r && t.measure.width != i)) { var o = (t.measure.heights = []); if (r) { t.measure.width = i; for ( var a = t.text.firstChild.getClientRects(), s = 0; s < a.length - 1; s++ ) { var l = a[s], c = a[s + 1]; Math.abs(l.bottom - c.bottom) > 2 && o.push((l.bottom + c.top) / 2 - n.top); } } o.push(n.bottom - n.top); } } function mapFromLineView(e, t, n) { if (e.line == t) return { map: e.measure.map, cache: e.measure.cache }; for ( var r = 0; r < e.rest.length; r++ ) if (e.rest[r] == t) return { map: e.measure.maps[r], cache: e.measure.caches[r] }; for ( var i = 0; i < e.rest.length; i++ ) if (lineNo(e.rest[i]) > n) return { map: e.measure.maps[i], cache: e.measure.caches[i], before: !0 }; } function updateExternalMeasurement(e, t) { t = visualLine(t); var n = lineNo(t), r = (e.display.externalMeasured = new LineView(e.doc, t, n)); r.lineN = n; var i = (r.built = buildLineContent(e, r)); return (r.text = i.pre), removeChildrenAndAdd(e.display.lineMeasure, i.pre), r; } function measureChar(e, t, n, r) { return measureCharPrepared(e, prepareMeasureForLine(e, t), n, r); } function findViewForLine(e, t) { if (t >= e.display.viewFrom && t < e.display.viewTo) return e.display.view[findViewIndex(e, t)]; var n = e.display.externalMeasured; return n && t >= n.lineN && t < n.lineN + n.size ? n : void 0; } function prepareMeasureForLine(e, t) { var n = lineNo(t), r = findViewForLine(e, n); r && !r.text ? (r = null) : r && r.changes && (updateLineForChanges( e, r, n, getDimensions(e) ), (e.curOp.forceUpdate = !0)), r || (r = updateExternalMeasurement(e, t)); var i = mapFromLineView(r, t, n); return { line: t, view: r, rect: null, map: i.map, cache: i.cache, before: i.before, hasHeights: !1 }; } function measureCharPrepared(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 || (ensureLineHeights( e, t.view, t.rect ), (t.hasHeights = !0)), (o = measureCharInner( 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 nodeAndOffsetInLineMap(e, t, n) { for (var r, i, o, a, s, l, c = 0; c < e.length; c += 3) if ( ((s = e[c]), (l = e[c + 1]), t < s ? ((i = 0), (o = 1), (a = 'left')) : t < l ? ((i = t - s), (o = i + 1)) : (c == e.length - 3 || (t == l && e[c + 3] > t)) && ((o = l - s), (i = o - 1), t >= l && (a = 'right')), null != i) ) { if ( ((r = e[c + 2]), s == l && n == (r.insertLeft ? 'left' : 'right') && (a = n), 'left' == n && 0 == i) ) for (; c && e[c - 2] == e[c - 3] && e[c - 1].insertLeft; ) (r = e[2 + (c -= 3)]), (a = 'left'); if ('right' == n && i == l - s) for ( ; c < e.length - 3 && e[c + 3] == e[c + 4] && !e[c + 5].insertLeft; ) (r = e[(c += 3) + 2]), (a = 'right'); break; } return { node: r, start: i, end: o, collapse: a, coverStart: s, coverEnd: l }; } function getUsefulRect(e, t) { var n = oe; if ('left' == t) for (var r = 0; r < e.length && (n = e[r]).left == n.right; r++); else for (var i = e.length - 1; i >= 0 && (n = e[i]).left == n.right; i--); return n; } function measureCharInner(e, t, n, r) { var i, o = nodeAndOffsetInLineMap(t.map, n, r), l = o.node, c = o.start, u = o.end, d = o.collapse; if (3 == l.nodeType) { for (var p = 0; p < 4; p++) { for (; c && isExtendingChar(t.line.text.charAt(o.coverStart + c)); ) --c; for ( ; o.coverStart + u < o.coverEnd && isExtendingChar(t.line.text.charAt(o.coverStart + u)); ) ++u; if ( ((i = a && s < 9 && 0 == c && u == o.coverEnd - o.coverStart ? l.parentNode.getBoundingClientRect() : getUsefulRect(w(l, c, u).getClientRects(), r)), i.left || i.right || 0 == c) ) break; (u = c), (c -= 1), (d = 'right'); } a && s < 11 && (i = maybeUpdateRectForZooming(e.display.measure, i)); } else { c > 0 && (d = r = 'right'); var f; i = e.options.lineWrapping && (f = l.getClientRects()).length > 1 ? f['right' == r ? f.length - 1 : 0] : l.getBoundingClientRect(); } if (a && s < 9 && !c && (!i || (!i.left && !i.right))) { var h = l.parentNode.getClientRects()[0]; i = h ? { left: h.left, right: h.left + charWidth(e.display), top: h.top, bottom: h.bottom } : oe; } for ( var g = i.top - t.rect.top, m = i.bottom - t.rect.top, v = (g + m) / 2, y = t.view.measure.heights, b = 0; b < y.length - 1 && !(v < y[b]); b++ ); var x = b ? y[b - 1] : 0, C = y[b], S = { left: ('right' == d ? i.right : i.left) - t.rect.left, right: ('left' == d ? i.left : i.right) - t.rect.left, top: x, bottom: C }; return i.left || i.right || (S.bogus = !0), e.options.singleCursorHeightPerLine || ((S.rtop = g), (S.rbottom = m)), S; } function maybeUpdateRectForZooming(e, t) { if ( !window.screen || null == screen.logicalXDPI || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(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 clearLineMeasurementCacheFor(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 clearLineMeasurementCache(e) { (e.display.externalMeasure = null), removeChildren(e.display.lineMeasure); for ( var t = 0; t < e.display.view.length; t++ ) clearLineMeasurementCacheFor(e.display.view[t]); } function clearCaches(e) { clearLineMeasurementCache( e ), (e.display.cachedCharWidth = e.display.cachedTextHeight = e.display.cachedPaddingH = null), e.options.lineWrapping || (e.display.maxLineChanged = !0), (e.display.lineNumChars = null); } function pageScrollX() { return u && m ? -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) : window.pageXOffset || (document.documentElement || document.body).scrollLeft; } function pageScrollY() { return u && m ? -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) : window.pageYOffset || (document.documentElement || document.body).scrollTop; } function intoCoordSystem(e, t, n, r, i) { if (!i && t.widgets) for (var o = 0; o < t.widgets.length; ++o) if (t.widgets[o].above) { var a = widgetHeight(t.widgets[o]); (n.top += a), (n.bottom += a); } if ('line' == r) return n; r || (r = 'local'); var s = heightAtLine(t); if ( ('local' == r ? (s += paddingTop(e.display)) : (s -= e.display.viewOffset), 'page' == r || 'window' == r) ) { var l = e.display.lineSpace.getBoundingClientRect(); s += l.top + ('window' == r ? 0 : pageScrollY()); var c = l.left + ('window' == r ? 0 : pageScrollX()); (n.left += c), (n.right += c); } return (n.top += s), (n.bottom += s), n; } function fromCoordSystem(e, t, n) { if ('div' == n) return t; var r = t.left, i = t.top; if ('page' == n) (r -= pageScrollX()), (i -= pageScrollY()); else if ('local' == n || !n) { var o = e.display.sizer.getBoundingClientRect(); (r += o.left), (i += o.top); } var a = e.display.lineSpace.getBoundingClientRect(); return { left: r - a.left, top: i - a.top }; } function charCoords(e, t, n, r, i) { return r || (r = getLine( e.doc, t.line )), intoCoordSystem(e, r, measureChar(e, r, t.ch, i), n); } function cursorCoords(e, t, n, r, i, o) { function get(t, a) { var s = measureCharPrepared(e, i, t, a ? 'right' : 'left', o); return a ? (s.left = s.right) : (s.right = s.left), intoCoordSystem(e, r, s, n); } function getBidi(e, t, n) { var r = a[t], i = r.level % 2 != 0; return get(n ? e - 1 : e, i != n); } (r = r || getLine(e.doc, t.line)), i || (i = prepareMeasureForLine(e, r)); var a = getOrder(r, e.doc.direction), s = t.ch, l = t.sticky; if ( (s >= r.text.length ? ((s = r.text.length), (l = 'before')) : s <= 0 && ((s = 0), (l = 'after')), !a) ) return get('before' == l ? s - 1 : s, 'before' == l); var c = getBidiPartAt(a, s, l), u = R, d = getBidi(s, c, 'before' == l); return null != u && (d.other = getBidi(s, u, 'before' != l)), d; } function estimateCoords(e, t) { var n = 0; (t = clipPos( e.doc, t )), e.options.lineWrapping || (n = charWidth(e.display) * t.ch); var r = getLine(e.doc, t.line), i = heightAtLine(r) + paddingTop(e.display); return { left: n, right: n, top: i, bottom: i + r.height }; } function PosWithInfo(e, t, n, r, i) { var o = Pos(e, t, n); return (o.xRel = i), r && (o.outside = !0), o; } function coordsChar(e, t, n) { var r = e.doc; if ((n += e.display.viewOffset) < 0) return PosWithInfo(r.first, 0, null, !0, -1); var i = lineAtHeight(r, n), o = r.first + r.size - 1; if (i > o) return PosWithInfo( r.first + r.size - 1, getLine(r, o).text.length, null, !0, 1 ); t < 0 && (t = 0); for (var a = getLine(r, i); ; ) { var s = coordsCharInner(e, a, i, t, n), l = collapsedSpanAtEnd(a), c = l && l.find(0, !0); if (!l || !(s.ch > c.from.ch || (s.ch == c.from.ch && s.xRel > 0))) return s; i = lineNo((a = c.to.line)); } } function wrappedLineExtent(e, t, n, r) { var i = function(r) { return intoCoordSystem(e, t, measureCharPrepared(e, n, r), 'line'); }, o = t.text.length, a = findFirst( function(e) { return i(e - 1).bottom <= r; }, o, 0 ); return (o = findFirst( function(e) { return i(e).top > r; }, a, o )), { begin: a, end: o }; } function wrappedLineExtentChar(e, t, n, r) { return wrappedLineExtent( e, t, n, intoCoordSystem(e, t, measureCharPrepared(e, n, r), 'line').top ); } function coordsCharInner(e, t, n, r, i) { i -= heightAtLine(t); var o, a = 0, s = t.text.length, l = prepareMeasureForLine(e, t); if (getOrder(t, e.doc.direction)) { if (e.options.lineWrapping) { var c; (c = wrappedLineExtent(e, t, l, i)), (a = c.begin), (s = c.end); } o = new Pos(n, a); var u, d, p = cursorCoords(e, o, 'line', t, l).left, f = p < r ? 1 : -1, h = p - r; do { if ( ((u = h), (d = o), null == (o = moveVisually(e, t, o, f)) || o.ch < a || s <= ('before' == o.sticky ? o.ch - 1 : o.ch)) ) { o = d; break; } h = cursorCoords(e, o, 'line', t, l).left - r; } while (f < 0 != h < 0 && Math.abs(h) <= Math.abs(u)); if (Math.abs(h) > Math.abs(u)) { if (h < 0 == u < 0) throw new Error('Broke out of infinite loop in coordsCharInner'); o = d; } } else { var g = findFirst( function(n) { var o = intoCoordSystem( e, t, measureCharPrepared(e, l, n), 'line' ); return o.top > i ? ((s = Math.min(n, s)), !0) : !(o.bottom <= i) && (o.left > r || (!(o.right < r) && r - o.left < o.right - r)); }, a, s ); (g = skipExtendingChars(t.text, g, 1)), (o = new Pos( n, g, g == s ? 'before' : 'after' )); } var m = cursorCoords(e, o, 'line', t, l); return (i < m.top || m.bottom < i) && (o.outside = !0), (o.xRel = r < m.left ? -1 : r > m.right ? 1 : 0), o; } function textHeight(e) { if (null != e.cachedTextHeight) return e.cachedTextHeight; if (null == ee) { ee = elt('pre'); for (var t = 0; t < 49; ++t) ee.appendChild(document.createTextNode('x')), ee.appendChild( elt('br') ); ee.appendChild(document.createTextNode('x')); } removeChildrenAndAdd(e.measure, ee); var n = ee.offsetHeight / 50; return n > 3 && (e.cachedTextHeight = n), removeChildren(e.measure), n || 1; } function charWidth(e) { if (null != e.cachedCharWidth) return e.cachedCharWidth; var t = elt('span', 'xxxxxxxxxx'), n = elt('pre', [t]); removeChildrenAndAdd(e.measure, n); var r = t.getBoundingClientRect(), i = (r.right - r.left) / 10; return i > 2 && (e.cachedCharWidth = i), i || 10; } function getDimensions(e) { for ( var t = e.display, n = {}, r = {}, i = t.gutters.clientLeft, o = t.gutters.firstChild, a = 0; o; (o = o.nextSibling), ++a ) (n[e.options.gutters[a]] = o.offsetLeft + o.clientLeft + i), (r[e.options.gutters[a]] = o.clientWidth); return { fixedPos: compensateForHScroll(t), gutterTotalWidth: t.gutters.offsetWidth, gutterLeft: n, gutterWidth: r, wrapperWidth: t.wrapper.clientWidth }; } function compensateForHScroll(e) { return ( e.scroller.getBoundingClientRect().left - e.sizer.getBoundingClientRect().left ); } function estimateHeight(e) { var t = textHeight(e.display), n = e.options.lineWrapping, r = n && Math.max( 5, e.display.scroller.clientWidth / charWidth(e.display) - 3 ); return function(i) { if (lineIsHidden(e.doc, i)) return 0; var o = 0; if (i.widgets) for (var a = 0; a < i.widgets.length; a++) i.widgets[a].height && (o += i.widgets[a].height); return n ? o + (Math.ceil(i.text.length / r) || 1) * t : o + t; }; } function estimateLineHeights(e) { var t = e.doc, n = estimateHeight(e); t.iter(function(e) { var t = n(e); t != e.height && updateLineHeight(e, t); }); } function posFromMouse(e, t, n, r) { var i = e.display; if (!n && 'true' == e_target(t).getAttribute('cm-not-content')) return null; var o, a, s = i.lineSpace.getBoundingClientRect(); try { (o = t.clientX - s.left), (a = t.clientY - s.top); } catch (t) { return null; } var l, c = coordsChar(e, o, a); if ( r && 1 == c.xRel && (l = getLine(e.doc, c.line).text).length == c.ch ) { var u = countColumn(l, l.length, e.options.tabSize) - l.length; c = Pos( c.line, Math.max( 0, Math.round( (o - paddingH(e.display).left) / charWidth(e.display) ) - u ) ); } return c; } function findViewIndex(e, t) { if (t >= e.display.viewTo) return null; if ((t -= e.display.viewFrom) < 0) return null; for ( var n = e.display.view, r = 0; r < n.length; r++ ) if ((t -= n[r].size) < 0) return r; } function updateSelection(e) { e.display.input.showSelection(e.display.input.prepareSelection()); } function prepareSelection(e, t) { for ( var n = e.doc, r = {}, i = (r.cursors = document.createDocumentFragment()), o = (r.selection = document.createDocumentFragment()), a = 0; a < n.sel.ranges.length; a++ ) if (!1 !== t || a != n.sel.primIndex) { var s = n.sel.ranges[a]; if ( !(s.from().line >= e.display.viewTo || s.to().line < e.display.viewFrom) ) { var l = s.empty(); (l || e.options.showCursorWhenSelecting) && drawSelectionCursor(e, s.head, i), l || drawSelectionRange(e, s, o); } } return r; } function drawSelectionCursor(e, t, n) { var r = cursorCoords( e, t, 'div', null, null, !e.options.singleCursorHeightPerLine ), i = n.appendChild(elt('div', ' ', 'CodeMirror-cursor')); if ( ((i.style.left = r.left + 'px'), (i.style.top = r.top + 'px'), (i.style.height = Math.max(0, r.bottom - r.top) * e.options.cursorHeight + 'px'), r.other) ) { var o = n.appendChild( elt('div', ' ', 'CodeMirror-cursor CodeMirror-secondarycursor') ); (o.style.display = ''), (o.style.left = r.other.left + 'px'), (o.style.top = r.other.top + 'px'), (o.style.height = 0.85 * (r.other.bottom - r.other.top) + 'px'); } } function drawSelectionRange(e, t, n) { function add(e, t, n, r) { t < 0 && (t = 0), (t = Math.round(t)), (r = Math.round(r)), o.appendChild(elt('div', null, 'CodeMirror-selected', 'position: absolute; left: ' + e + 'px;\n top: ' + t + 'px; width: ' + (null == n ? l - e : n) + 'px;\n height: ' + (r - t) + 'px')); } function drawForLine(t, n, r) { function coords(n, r) { return charCoords(e, Pos(t, n), 'div', c, r); } var o, a, c = getLine(i, t), u = c.text.length; return iterateBidiSections( getOrder(c, i.direction), n || 0, null == r ? u : r, function(e, t, i) { var c, d, p, f = coords(e, 'left'); if (e == t) (c = f), (d = p = f.left); else { if (((c = coords(t - 1, 'right')), 'rtl' == i)) { var h = f; (f = c), (c = h); } (d = f.left), (p = c.right); } null == n && 0 == e && (d = s), c.top - f.top > 3 && (add(d, f.top, null, f.bottom), (d = s), f.bottom < c.top && add(d, f.bottom, null, c.top)), null == r && t == u && (p = l), (!o || f.top < o.top || (f.top == o.top && f.left < o.left)) && (o = f), (!a || c.bottom > a.bottom || (c.bottom == a.bottom && c.right > a.right)) && (a = c), d < s + 1 && (d = s), add(d, c.top, p - d, c.bottom); } ), { start: o, end: a }; } var r = e.display, i = e.doc, o = document.createDocumentFragment(), a = paddingH(e.display), s = a.left, l = Math.max(r.sizerWidth, displayWidth(e) - r.sizer.offsetLeft) - a.right, c = t.from(), u = t.to(); if (c.line == u.line) drawForLine(c.line, c.ch, u.ch); else { var d = getLine(i, c.line), p = getLine(i, u.line), f = visualLine(d) == visualLine(p), h = drawForLine(c.line, c.ch, f ? d.text.length + 1 : null).end, g = drawForLine(u.line, f ? 0 : null, u.ch).start; f && (h.top < g.top - 2 ? (add(h.right, h.top, null, h.bottom), add( s, g.top, g.left, g.bottom )) : add(h.right, h.top, g.left - h.right, h.bottom)), h.bottom < g.top && add(s, h.bottom, null, g.top); } n.appendChild(o); } function restartBlink(e) { if (e.state.focused) { var t = e.display; clearInterval(t.blinker); var n = !0; (t.cursorDiv.style.visibility = ''), e.options.cursorBlinkRate > 0 ? (t.blinker = setInterval(function() { return (t.cursorDiv.style.visibility = (n = !n) ? '' : 'hidden'); }, e.options.cursorBlinkRate)) : e.options.cursorBlinkRate < 0 && (t.cursorDiv.style.visibility = 'hidden'); } } function ensureFocus(e) { e.state.focused || (e.display.input.focus(), onFocus(e)); } function delayBlurEvent(e) { (e.state.delayingBlurEvent = !0), setTimeout(function() { e.state.delayingBlurEvent && ((e.state.delayingBlurEvent = !1), onBlur(e)); }, 100); } function onFocus(e, t) { e.state.delayingBlurEvent && (e.state.delayingBlurEvent = !1), 'nocursor' != e.options.readOnly && (e.state.focused || (signal(e, 'focus', e, t), (e.state.focused = !0), addClass( e.display.wrapper, 'CodeMirror-focused' ), e.curOp || e.display.selForContextMenu == e.doc.sel || (e.display.input.reset(), l && setTimeout(function() { return e.display.input.reset(!0); }, 20)), e.display.input.receivedFocus()), restartBlink(e)); } function onBlur(e, t) { e.state.delayingBlurEvent || (e.state.focused && (signal(e, 'blur', e, t), (e.state.focused = !1), L( e.display.wrapper, 'CodeMirror-focused' )), clearInterval(e.display.blinker), setTimeout(function() { e.state.focused || (e.display.shift = !1); }, 150)); } function updateHeightsInViewport(e) { for ( var t = e.display, n = t.lineDiv.offsetTop, r = 0; r < t.view.length; r++ ) { var i = t.view[r], o = void 0; if (!i.hidden) { if (a && s < 8) { var l = i.node.offsetTop + i.node.offsetHeight; (o = l - n), (n = l); } else { var c = i.node.getBoundingClientRect(); o = c.bottom - c.top; } var u = i.line.height - o; if ( (o < 2 && (o = textHeight(t)), (u > 0.001 || u < -0.001) && (updateLineHeight(i.line, o), updateWidgetHeight( i.line ), i.rest)) ) for (var d = 0; d < i.rest.length; d++) updateWidgetHeight(i.rest[d]); } } } function updateWidgetHeight(e) { if (e.widgets) for (var t = 0; t < e.widgets.length; ++t) e.widgets[t].height = e.widgets[t].node.parentNode.offsetHeight; } function visibleLines(e, t, n) { var r = n && null != n.top ? Math.max(0, n.top) : e.scroller.scrollTop; r = Math.floor(r - paddingTop(e)); var i = n && null != n.bottom ? n.bottom : r + e.wrapper.clientHeight, o = lineAtHeight(t, r), a = lineAtHeight(t, i); if (n && n.ensure) { var s = n.ensure.from.line, l = n.ensure.to.line; s < o ? ((o = s), (a = lineAtHeight( t, heightAtLine(getLine(t, s)) + e.wrapper.clientHeight ))) : Math.min(l, t.lastLine()) >= a && ((o = lineAtHeight( t, heightAtLine(getLine(t, l)) - e.wrapper.clientHeight )), (a = l)); } return { from: o, to: Math.max(a, o + 1) }; } function alignHorizontally(e) { var t = e.display, n = t.view; if (t.alignWidgets || (t.gutters.firstChild && e.options.fixedGutter)) { for ( var r = compensateForHScroll(t) - t.scroller.scrollLeft + e.doc.scrollLeft, i = t.gutters.offsetWidth, o = r + 'px', a = 0; a < n.length; a++ ) if (!n[a].hidden) { e.options.fixedGutter && (n[a].gutter && (n[a].gutter.style.left = o), n[a] .gutterBackground && (n[a].gutterBackground.style.left = o)); var s = n[a].alignable; if (s) for (var l = 0; l < s.length; l++) s[l].style.left = o; } e.options.fixedGutter && (t.gutters.style.left = r + i + 'px'); } } function maybeUpdateLineNumberWidth(e) { if (!e.options.lineNumbers) return !1; var t = e.doc, n = lineNumberFor(e.options, t.first + t.size - 1), r = e.display; if (n.length != r.lineNumChars) { var i = r.measure.appendChild( elt( 'div', [elt('div', n)], 'CodeMirror-linenumber CodeMirror-gutter-elt' ) ), o = i.firstChild.offsetWidth, a = i.offsetWidth - o; return (r.lineGutter.style.width = ''), (r.lineNumInnerWidth = Math.max(o, r.lineGutter.offsetWidth - a) + 1), (r.lineNumWidth = r.lineNumInnerWidth + a), (r.lineNumChars = r.lineNumInnerWidth ? n.length : -1), (r.lineGutter.style.width = r.lineNumWidth + 'px'), updateGutterSpace(e), !0; } return !1; } function maybeScrollWindow(e, t) { if (!signalDOMEvent(e, 'scrollCursorIntoView')) { var n = e.display, r = n.sizer.getBoundingClientRect(), i = null; if ( (t.top + r.top < 0 ? (i = !0) : t.bottom + r.top > (window.innerHeight || document.documentElement.clientHeight) && (i = !1), null != i && !h) ) { var o = elt( 'div', '​', null, 'position: absolute;\n top: ' + (t.top - n.viewOffset - paddingTop(e.display)) + 'px;\n height: ' + (t.bottom - t.top + scrollGap(e) + n.barHeight) + 'px;\n left: ' + t.left + 'px; width: ' + Math.max(2, t.right - t.left) + 'px;' ); e.display.lineSpace.appendChild(o), o.scrollIntoView( i ), e.display.lineSpace.removeChild(o); } } } function scrollPosIntoView(e, t, n, r) { null == r && (r = 0); for (var i, o = 0; o < 5; o++) { var a = !1, s = cursorCoords(e, t), l = n && n != t ? cursorCoords(e, n) : s; i = { left: Math.min(s.left, l.left), top: Math.min(s.top, l.top) - r, right: Math.max(s.left, l.left), bottom: Math.max(s.bottom, l.bottom) + r }; var c = calculateScrollPos(e, i), u = e.doc.scrollTop, d = e.doc.scrollLeft; if ( (null != c.scrollTop && (updateScrollTop(e, c.scrollTop), Math.abs(e.doc.scrollTop - u) > 1 && (a = !0)), null != c.scrollLeft && (setScrollLeft(e, c.scrollLeft), Math.abs(e.doc.scrollLeft - d) > 1 && (a = !0)), !a) ) break; } return i; } function scrollIntoView(e, t) { var n = calculateScrollPos(e, t); null != n.scrollTop && updateScrollTop( e, n.scrollTop ), null != n.scrollLeft && setScrollLeft(e, n.scrollLeft); } function calculateScrollPos(e, t) { var n = e.display, r = textHeight(e.display); t.top < 0 && (t.top = 0); var i = e.curOp && null != e.curOp.scrollTop ? e.curOp.scrollTop : n.scroller.scrollTop, o = displayHeight(e), a = {}; t.bottom - t.top > o && (t.bottom = t.top + o); var s = e.doc.height + paddingVert(n), l = t.top < r, c = t.bottom > s - r; if (t.top < i) a.scrollTop = l ? 0 : t.top; else if (t.bottom > i + o) { var u = Math.min(t.top, (c ? s : t.bottom) - o); u != i && (a.scrollTop = u); } var d = e.curOp && null != e.curOp.scrollLeft ? e.curOp.scrollLeft : n.scroller.scrollLeft, p = displayWidth(e) - (e.options.fixedGutter ? n.gutters.offsetWidth : 0), f = t.right - t.left > p; return f && (t.right = t.left + p), t.left < 10 ? (a.scrollLeft = 0) : t.left < d ? (a.scrollLeft = Math.max(0, t.left - (f ? 0 : 10))) : t.right > p + d - 3 && (a.scrollLeft = t.right + (f ? 0 : 10) - p), a; } function addToScrollTop(e, t) { null != t && (resolveScrollToPos(e), (e.curOp.scrollTop = (null == e.curOp.scrollTop ? e.doc.scrollTop : e.curOp.scrollTop) + t)); } function ensureCursorVisible(e) { resolveScrollToPos(e); var t = e.getCursor(), n = t, r = t; e.options.lineWrapping || ((n = t.ch ? Pos(t.line, t.ch - 1) : t), (r = Pos( t.line, t.ch + 1 ))), (e.curOp.scrollToPos = { from: n, to: r, margin: e.options.cursorScrollMargin }); } function scrollToCoords(e, t, n) { (null == t && null == n) || resolveScrollToPos( e ), null != t && (e.curOp.scrollLeft = t), null != n && (e.curOp.scrollTop = n); } function scrollToRange(e, t) { resolveScrollToPos(e), (e.curOp.scrollToPos = t); } function resolveScrollToPos(e) { var t = e.curOp.scrollToPos; if (t) { e.curOp.scrollToPos = null; scrollToCoordsRange( e, estimateCoords(e, t.from), estimateCoords(e, t.to), t.margin ); } } function scrollToCoordsRange(e, t, n, r) { var i = calculateScrollPos(e, { left: Math.min(t.left, n.left), top: Math.min(t.top, n.top) - r, right: Math.max(t.right, n.right), bottom: Math.max(t.bottom, n.bottom) + r }); scrollToCoords(e, i.scrollLeft, i.scrollTop); } function updateScrollTop(e, t) { Math.abs(e.doc.scrollTop - t) < 2 || (n || updateDisplaySimple(e, { top: t }), setScrollTop(e, t, !0), n && updateDisplaySimple(e), startWorker(e, 100)); } function setScrollTop(e, t, n) { (t = Math.min( e.display.scroller.scrollHeight - e.display.scroller.clientHeight, t )), (e.display.scroller.scrollTop != t || n) && ((e.doc.scrollTop = t), e.display.scrollbars.setScrollTop(t), e.display.scroller.scrollTop != t && (e.display.scroller.scrollTop = t)); } function setScrollLeft(e, t, n, r) { (t = Math.min( t, e.display.scroller.scrollWidth - e.display.scroller.clientWidth )), ((n ? t == e.doc.scrollLeft : Math.abs(e.doc.scrollLeft - t) < 2) && !r) || ((e.doc.scrollLeft = t), alignHorizontally(e), e.display.scroller.scrollLeft != t && (e.display.scroller.scrollLeft = t), e.display.scrollbars.setScrollLeft(t)); } function measureForScrollbars(e) { var t = e.display, n = t.gutters.offsetWidth, r = Math.round(e.doc.height + paddingVert(e.display)); return { clientHeight: t.scroller.clientHeight, viewHeight: t.wrapper.clientHeight, scrollWidth: t.scroller.scrollWidth, clientWidth: t.scroller.clientWidth, viewWidth: t.wrapper.clientWidth, barLeft: e.options.fixedGutter ? n : 0, docHeight: r, scrollHeight: r + scrollGap(e) + t.barHeight, nativeBarWidth: t.nativeBarWidth, gutterWidth: n }; } function updateScrollbars(e, t) { t || (t = measureForScrollbars(e)); var n = e.display.barWidth, r = e.display.barHeight; updateScrollbarsInner(e, t); for ( var i = 0; (i < 4 && n != e.display.barWidth) || r != e.display.barHeight; i++ ) n != e.display.barWidth && e.options.lineWrapping && updateHeightsInViewport(e), updateScrollbarsInner(e, measureForScrollbars(e)), (n = e.display.barWidth), (r = e.display.barHeight); } function updateScrollbarsInner(e, t) { var n = e.display, r = n.scrollbars.update(t); (n.sizer.style.paddingRight = (n.barWidth = r.right) + 'px'), (n.sizer.style.paddingBottom = (n.barHeight = r.bottom) + 'px'), (n.heightForcer.style.borderBottom = r.bottom + 'px solid transparent'), r.right && r.bottom ? ((n.scrollbarFiller.style.display = 'block'), (n.scrollbarFiller.style.height = r.bottom + 'px'), (n.scrollbarFiller.style.width = r.right + 'px')) : (n.scrollbarFiller.style.display = ''), r.bottom && e.options.coverGutterNextToScrollbar && e.options.fixedGutter ? ((n.gutterFiller.style.display = 'block'), (n.gutterFiller.style.height = r.bottom + 'px'), (n.gutterFiller.style.width = t.gutterWidth + 'px')) : (n.gutterFiller.style.display = ''); } function initScrollbars(e) { e.display.scrollbars && (e.display.scrollbars.clear(), e.display.scrollbars.addClass && L( e.display.wrapper, e.display.scrollbars.addClass )), (e.display.scrollbars = new le[e.options.scrollbarStyle]( function(t) { e.display.wrapper.insertBefore( t, e.display.scrollbarFiller ), G(t, 'mousedown', function() { e.state.focused && setTimeout(function() { return e.display.input.focus(); }, 0); }), t.setAttribute('cm-not-content', 'true'); }, function(t, n) { 'horizontal' == n ? setScrollLeft(e, t) : updateScrollTop(e, t); }, e )), e.display.scrollbars.addClass && addClass(e.display.wrapper, e.display.scrollbars.addClass); } function startOperation(e) { (e.curOp = { cm: e, viewChanged: !1, startHeight: e.doc.height, forceUpdate: !1, updateInput: null, typing: !1, changeObjs: null, cursorActivityHandlers: null, cursorActivityCalled: 0, selectionChanged: !1, updateMaxLine: !1, scrollLeft: null, scrollTop: null, scrollToPos: null, focus: !1, id: ++ce }), pushOperation(e.curOp); } function endOperation(e) { finishOperation(e.curOp, function(e) { for (var t = 0; t < e.ops.length; t++) e.ops[t].cm.curOp = null; endOperations(e); }); } function endOperations(e) { for (var t = e.ops, n = 0; n < t.length; n++) endOperation_R1(t[n]); for (var r = 0; r < t.length; r++) endOperation_W1(t[r]); for (var i = 0; i < t.length; i++) endOperation_R2(t[i]); for (var o = 0; o < t.length; o++) endOperation_W2(t[o]); for (var a = 0; a < t.length; a++) endOperation_finish(t[a]); } function endOperation_R1(e) { var t = e.cm, n = t.display; maybeClipScrollbars( t ), e.updateMaxLine && findMaxLine(t), (e.mustUpdate = e.viewChanged || e.forceUpdate || null != e.scrollTop || (e.scrollToPos && (e.scrollToPos.from.line < n.viewFrom || e.scrollToPos.to.line >= n.viewTo)) || (n.maxLineChanged && t.options.lineWrapping)), (e.update = e.mustUpdate && new ue(t, e.mustUpdate && { top: e.scrollTop, ensure: e.scrollToPos }, e.forceUpdate)); } function endOperation_W1(e) { e.updatedDisplay = e.mustUpdate && updateDisplayIfNeeded(e.cm, e.update); } function endOperation_R2(e) { var t = e.cm, n = t.display; e.updatedDisplay && updateHeightsInViewport( t ), (e.barMeasure = measureForScrollbars(t)), n.maxLineChanged && !t.options.lineWrapping && ((e.adjustWidthTo = measureChar(t, n.maxLine, n.maxLine.text.length).left + 3), (t.display.sizerWidth = e.adjustWidthTo), (e.barMeasure.scrollWidth = Math.max(n.scroller.clientWidth, n.sizer.offsetLeft + e.adjustWidthTo + scrollGap(t) + t.display.barWidth)), (e.maxScrollLeft = Math.max(0, n.sizer.offsetLeft + e.adjustWidthTo - displayWidth(t)))), (e.updatedDisplay || e.selectionChanged) && (e.preparedSelection = n.input.prepareSelection(e.focus)); } function endOperation_W2(e) { var t = e.cm; null != e.adjustWidthTo && ((t.display.sizer.style.minWidth = e.adjustWidthTo + 'px'), e.maxScrollLeft < t.doc.scrollLeft && setScrollLeft( t, Math.min(t.display.scroller.scrollLeft, e.maxScrollLeft), !0 ), (t.display.maxLineChanged = !1)); var n = e.focus && e.focus == activeElt() && (!document.hasFocus || document.hasFocus()); e.preparedSelection && t.display.input.showSelection( e.preparedSelection, n ), (e.updatedDisplay || e.startHeight != t.doc.height) && updateScrollbars(t, e.barMeasure), e.updatedDisplay && setDocumentHeight(t, e.barMeasure), e.selectionChanged && restartBlink(t), t.state.focused && e.updateInput && t.display.input.reset(e.typing), n && ensureFocus(e.cm); } function endOperation_finish(e) { var t = e.cm, n = t.display, r = t.doc; if ( (e.updatedDisplay && postUpdateDisplay(t, e.update), null == n.wheelStartX || (null == e.scrollTop && null == e.scrollLeft && !e.scrollToPos) || (n.wheelStartX = n.wheelStartY = null), null != e.scrollTop && setScrollTop(t, e.scrollTop, e.forceScroll), null != e.scrollLeft && setScrollLeft(t, e.scrollLeft, !0, !0), e.scrollToPos) ) { maybeScrollWindow( t, scrollPosIntoView( t, clipPos(r, e.scrollToPos.from), clipPos(r, e.scrollToPos.to), e.scrollToPos.margin ) ); } var i = e.maybeHiddenMarkers, o = e.maybeUnhiddenMarkers; if (i) for (var a = 0; a < i.length; ++a) i[a].lines.length || signal(i[a], 'hide'); if (o) for (var s = 0; s < o.length; ++s) o[s].lines.length && signal(o[s], 'unhide'); n.wrapper.offsetHeight && (r.scrollTop = t.display.scroller.scrollTop), e.changeObjs && signal(t, 'changes', t, e.changeObjs), e.update && e.update.finish(); } function runInOp(e, t) { if (e.curOp) return t(); startOperation(e); try { return t(); } finally { endOperation(e); } } function operation(e, t) { return function() { if (e.curOp) return t.apply(e, arguments); startOperation(e); try { return t.apply(e, arguments); } finally { endOperation(e); } }; } function methodOp(e) { return function() { if (this.curOp) return e.apply(this, arguments); startOperation(this); try { return e.apply(this, arguments); } finally { endOperation(this); } }; } function docMethodOp(e) { return function() { var t = this.cm; if (!t || t.curOp) return e.apply(this, arguments); startOperation(t); try { return e.apply(this, arguments); } finally { endOperation(t); } }; } function regChange(e, t, n, r) { null == t && (t = e.doc .first), null == n && (n = e.doc.first + e.doc.size), r || (r = 0); var i = e.display; if ( (r && n < i.viewTo && (null == i.updateLineNumbers || i.updateLineNumbers > t) && (i.updateLineNumbers = t), (e.curOp.viewChanged = !0), t >= i.viewTo) ) z && visualLineNo(e.doc, t) < i.viewTo && resetView(e); else if (n <= i.viewFrom) z && visualLineEndNo(e.doc, n + r) > i.viewFrom ? resetView(e) : ((i.viewFrom += r), (i.viewTo += r)); else if (t <= i.viewFrom && n >= i.viewTo) resetView(e); else if (t <= i.viewFrom) { var o = viewCuttingPoint(e, n, n + r, 1); o ? ((i.view = i.view.slice(o.index)), (i.viewFrom = o.lineN), (i.viewTo += r)) : resetView(e); } else if (n >= i.viewTo) { var a = viewCuttingPoint(e, t, t, -1); a ? ((i.view = i.view.slice(0, a.index)), (i.viewTo = a.lineN)) : resetView(e); } else { var s = viewCuttingPoint(e, t, t, -1), l = viewCuttingPoint(e, n, n + r, 1); s && l ? ((i.view = i.view .slice(0, s.index) .concat(buildViewArray(e, s.lineN, l.lineN)) .concat(i.view.slice(l.index))), (i.viewTo += r)) : resetView(e); } var c = i.externalMeasured; c && (n < c.lineN ? (c.lineN += r) : t < c.lineN + c.size && (i.externalMeasured = null)); } function regLineChange(e, t, n) { e.curOp.viewChanged = !0; var r = e.display, i = e.display.externalMeasured; if ( (i && t >= i.lineN && t < i.lineN + i.size && (r.externalMeasured = null), !(t < r.viewFrom || t >= r.viewTo)) ) { var o = r.view[findViewIndex(e, t)]; if (null != o.node) { var a = o.changes || (o.changes = []); -1 == indexOf(a, n) && a.push(n); } } } function resetView(e) { (e.display.viewFrom = e.display.viewTo = e.doc.first), (e.display.view = []), (e.display.viewOffset = 0); } function viewCuttingPoint(e, t, n, r) { var i, o = findViewIndex(e, t), a = e.display.view; if (!z || n == e.doc.first + e.doc.size) return { index: o, lineN: n }; for (var s = e.display.viewFrom, l = 0; l < o; l++) s += a[l].size; if (s != t) { if (r > 0) { if (o == a.length - 1) return null; (i = s + a[o].size - t), o++; } else i = s - t; (t += i), (n += i); } for (; visualLineNo(e.doc, n) != n; ) { if (o == (r < 0 ? 0 : a.length - 1)) return null; (n += r * a[o - (r < 0 ? 1 : 0)].size), (o += r); } return { index: o, lineN: n }; } function adjustView(e, t, n) { var r = e.display; 0 == r.view.length || t >= r.viewTo || n <= r.viewFrom ? ((r.view = buildViewArray(e, t, n)), (r.viewFrom = t)) : (r.viewFrom > t ? (r.view = buildViewArray(e, t, r.viewFrom).concat(r.view)) : r.viewFrom < t && (r.view = r.view.slice( findViewIndex(e, t) )), (r.viewFrom = t), r.viewTo < n ? (r.view = r.view.concat(buildViewArray(e, r.viewTo, n))) : r.viewTo > n && (r.view = r.view.slice( 0, findViewIndex(e, n) ))), (r.viewTo = n); } function countDirtyView(e) { for (var t = e.display.view, n = 0, r = 0; r < t.length; r++) { var i = t[r]; i.hidden || (i.node && !i.changes) || ++n; } return n; } function startWorker(e, t) { e.doc.mode.startState && e.doc.frontier < e.display.viewTo && e.state.highlight.set(t, bind(highlightWorker, e)); } function highlightWorker(e) { var t = e.doc; if ( (t.frontier < t.first && (t.frontier = t.first), !(t.frontier >= e.display.viewTo)) ) { var n = +new Date() + e.options.workTime, r = copyState(t.mode, getStateBefore(e, t.frontier)), i = []; t.iter( t.frontier, Math.min(t.first + t.size, e.display.viewTo + 500), function(o) { if (t.frontier >= e.display.viewFrom) { var a = o.styles, s = o.text.length > e.options.maxHighlightLength, l = highlightLine(e, o, s ? copyState(t.mode, r) : r, !0); o.styles = l.styles; var c = o.styleClasses, u = l.classes; u ? (o.styleClasses = u) : c && (o.styleClasses = null); for ( var d = !a || a.length != o.styles.length || (c != u && (!c || !u || c.bgClass != u.bgClass || c.textClass != u.textClass)), p = 0; !d && p < a.length; ++p ) d = a[p] != o.styles[p]; d && i.push(t.frontier), (o.stateAfter = s ? r : copyState(t.mode, r)); } else o.text.length <= e.options.maxHighlightLength && processLine(e, o.text, r), (o.stateAfter = t.frontier % 5 == 0 ? copyState(t.mode, r) : null); if ((++t.frontier, +new Date() > n)) return startWorker(e, e.options.workDelay), !0; } ), i.length && runInOp(e, function() { for (var t = 0; t < i.length; t++) regLineChange(e, i[t], 'text'); }); } } function maybeClipScrollbars(e) { var t = e.display; !t.scrollbarsClipped && t.scroller.offsetWidth && ((t.nativeBarWidth = t.scroller.offsetWidth - t.scroller.clientWidth), (t.heightForcer.style.height = scrollGap(e) + 'px'), (t.sizer.style.marginBottom = -t.nativeBarWidth + 'px'), (t.sizer.style.borderRightWidth = scrollGap(e) + 'px'), (t.scrollbarsClipped = !0)); } function selectionSnapshot(e) { if (e.hasFocus()) return null; var t = activeElt(); if (!t || !contains(e.display.lineDiv, t)) return null; var n = { activeElt: t }; if (window.getSelection) { var r = window.getSelection(); r.anchorNode && r.extend && contains(e.display.lineDiv, r.anchorNode) && ((n.anchorNode = r.anchorNode), (n.anchorOffset = r.anchorOffset), (n.focusNode = r.focusNode), (n.focusOffset = r.focusOffset)); } return n; } function restoreSelection(e) { if ( e && e.activeElt && e.activeElt != activeElt() && (e.activeElt.focus(), e.anchorNode && contains(document.body, e.anchorNode) && contains(document.body, e.focusNode)) ) { var t = window.getSelection(), n = document.createRange(); n.setEnd(e.anchorNode, e.anchorOffset), n.collapse( !1 ), t.removeAllRanges(), t.addRange(n), t.extend( e.focusNode, e.focusOffset ); } } function updateDisplayIfNeeded(e, t) { var n = e.display, r = e.doc; if (t.editorIsHidden) return resetView(e), !1; if ( !t.force && t.visible.from >= n.viewFrom && t.visible.to <= n.viewTo && (null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo) && n.renderedView == n.view && 0 == countDirtyView(e) ) return !1; maybeUpdateLineNumberWidth(e) && (resetView(e), (t.dims = getDimensions(e))); var i = r.first + r.size, o = Math.max(t.visible.from - e.options.viewportMargin, r.first), a = Math.min(i, t.visible.to + e.options.viewportMargin); n.viewFrom < o && o - n.viewFrom < 20 && (o = Math.max( r.first, n.viewFrom )), n.viewTo > a && n.viewTo - a < 20 && (a = Math.min(i, n.viewTo)), z && ((o = visualLineNo(e.doc, o)), (a = visualLineEndNo(e.doc, a))); var s = o != n.viewFrom || a != n.viewTo || n.lastWrapHeight != t.wrapperHeight || n.lastWrapWidth != t.wrapperWidth; adjustView( e, o, a ), (n.viewOffset = heightAtLine(getLine(e.doc, n.viewFrom))), (e.display.mover.style.top = n.viewOffset + 'px'); var l = countDirtyView(e); if ( !s && 0 == l && !t.force && n.renderedView == n.view && (null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo) ) return !1; var c = selectionSnapshot(e); return l > 4 && (n.lineDiv.style.display = 'none'), patchDisplay(e, n.updateLineNumbers, t.dims), l > 4 && (n.lineDiv.style.display = ''), (n.renderedView = n.view), restoreSelection(c), removeChildren(n.cursorDiv), removeChildren(n.selectionDiv), (n.gutters.style.height = n.sizer.style.minHeight = 0), s && ((n.lastWrapHeight = t.wrapperHeight), (n.lastWrapWidth = t.wrapperWidth), startWorker(e, 400)), (n.updateLineNumbers = null), !0; } function postUpdateDisplay(e, t) { for ( var n = t.viewport, r = !0; ((r && e.options.lineWrapping && t.oldDisplayWidth != displayWidth(e)) || (n && null != n.top && (n = { top: Math.min( e.doc.height + paddingVert(e.display) - displayHeight(e), n.top ) }), (t.visible = visibleLines(e.display, e.doc, n)), !(t.visible .from >= e.display.viewFrom && t.visible.to <= e.display.viewTo))) && updateDisplayIfNeeded(e, t); r = !1 ) { updateHeightsInViewport(e); var i = measureForScrollbars(e); updateSelection(e), updateScrollbars(e, i), setDocumentHeight(e, i); } t.signal( e, 'update', e ), (e.display.viewFrom == e.display.reportedViewFrom && e.display.viewTo == e.display.reportedViewTo) || (t.signal(e, 'viewportChange', e, e.display.viewFrom, e.display.viewTo), (e.display.reportedViewFrom = e.display.viewFrom), (e.display.reportedViewTo = e.display.viewTo)); } function updateDisplaySimple(e, t) { var n = new ue(e, t); if (updateDisplayIfNeeded(e, n)) { updateHeightsInViewport(e), postUpdateDisplay(e, n); var r = measureForScrollbars(e); updateSelection(e), updateScrollbars(e, r), setDocumentHeight( e, r ), n.finish(); } } function patchDisplay(e, t, n) { function rm(t) { var n = t.nextSibling; return l && y && e.display.currentWheelTarget == t ? (t.style.display = 'none') : t.parentNode.removeChild(t), n; } for ( var r = e.display, i = e.options.lineNumbers, o = r.lineDiv, a = o.firstChild, s = r.view, c = r.viewFrom, u = 0; u < s.length; u++ ) { var d = s[u]; if (d.hidden); else if (d.node && d.node.parentNode == o) { for (; a != d.node; ) a = rm(a); var p = i && null != t && t <= c && d.lineNumber; d.changes && (indexOf(d.changes, 'gutter') > -1 && (p = !1), updateLineForChanges(e, d, c, n)), p && (removeChildren(d.lineNumber), d.lineNumber.appendChild( document.createTextNode(lineNumberFor(e.options, c)) )), (a = d.node.nextSibling); } else { var f = buildLineElement(e, d, c, n); o.insertBefore(f, a); } c += d.size; } for (; a; ) a = rm(a); } function updateGutterSpace(e) { var t = e.display.gutters.offsetWidth; e.display.sizer.style.marginLeft = t + 'px'; } function setDocumentHeight(e, t) { (e.display.sizer.style.minHeight = t.docHeight + 'px'), (e.display.heightForcer.style.top = t.docHeight + 'px'), (e.display.gutters.style.height = t.docHeight + e.display.barHeight + scrollGap(e) + 'px'); } function updateGutters(e) { var t = e.display.gutters, n = e.options.gutters; removeChildren(t); for (var r = 0; r < n.length; ++r) { var i = n[r], o = t.appendChild(elt('div', null, 'CodeMirror-gutter ' + i)); 'CodeMirror-linenumbers' == i && ((e.display.lineGutter = o), (o.style.width = (e.display.lineNumWidth || 1) + 'px')); } (t.style.display = r ? '' : 'none'), updateGutterSpace(e); } function setGuttersForLineNumbers(e) { var t = indexOf(e.gutters, 'CodeMirror-linenumbers'); -1 == t && e.lineNumbers ? (e.gutters = e.gutters.concat(['CodeMirror-linenumbers'])) : t > -1 && !e.lineNumbers && ((e.gutters = e.gutters.slice(0)), e.gutters.splice(t, 1)); } function wheelEventDelta(e) { var t = e.wheelDeltaX, n = e.wheelDeltaY; return null == t && e.detail && e.axis == e.HORIZONTAL_AXIS && (t = e.detail), null == n && e.detail && e.axis == e.VERTICAL_AXIS ? (n = e.detail) : null == n && (n = e.wheelDelta), { x: t, y: n }; } function wheelEventPixels(e) { var t = wheelEventDelta(e); return (t.x *= pe), (t.y *= pe), t; } function onScrollWheel(e, t) { var r = wheelEventDelta(t), i = r.x, o = r.y, a = e.display, s = a.scroller, c = s.scrollWidth > s.clientWidth, u = s.scrollHeight > s.clientHeight; if ((i && c) || (o && u)) { if (o && y && l) e: for (var p = t.target, f = a.view; p != s; p = p.parentNode) for (var h = 0; h < f.length; h++) if (f[h].node == p) { e.display.currentWheelTarget = p; break e; } if (i && !n && !d && null != pe) return o && u && updateScrollTop( e, Math.max(0, s.scrollTop + o * pe) ), setScrollLeft(e, Math.max(0, s.scrollLeft + i * pe)), (!o || (o && u)) && e_preventDefault(t), void (a.wheelStartX = null); if (o && null != pe) { var g = o * pe, m = e.doc.scrollTop, v = m + a.wrapper.clientHeight; g < 0 ? (m = Math.max(0, m + g - 50)) : (v = Math.min( e.doc.height, v + g + 50 )), updateDisplaySimple(e, { top: m, bottom: v }); } de < 20 && (null == a.wheelStartX ? ((a.wheelStartX = s.scrollLeft), (a.wheelStartY = s.scrollTop), (a.wheelDX = i), (a.wheelDY = o), setTimeout( function() { if (null != a.wheelStartX) { var e = s.scrollLeft - a.wheelStartX, t = s.scrollTop - a.wheelStartY, n = (t && a.wheelDY && t / a.wheelDY) || (e && a.wheelDX && e / a.wheelDX); (a.wheelStartX = a.wheelStartY = null), n && ((pe = (pe * de + n) / (de + 1)), ++de); } }, 200 )) : ((a.wheelDX += i), (a.wheelDY += o))); } } function normalizeSelection(e, t) { var n = e[t]; e.sort(function(e, t) { return cmp(e.from(), t.from()); }), (t = indexOf(e, n)); for (var r = 1; r < e.length; r++) { var i = e[r], o = e[r - 1]; if (cmp(o.to(), i.from()) >= 0) { var a = minPos(o.from(), i.from()), s = maxPos(o.to(), i.to()), l = o.empty() ? i.from() == i.head : o.from() == o.head; r <= t && --t, e.splice(--r, 2, new he(l ? s : a, l ? a : s)); } } return new fe(e, t); } function simpleSelection(e, t) { return new fe([new he(e, t || e)], 0); } function changeEnd(e) { return e.text ? Pos( e.from.line + e.text.length - 1, lst(e.text).length + (1 == e.text.length ? e.from.ch : 0) ) : e.to; } function adjustForChange(e, t) { if (cmp(e, t.from) < 0) return e; if (cmp(e, t.to) <= 0) return changeEnd(t); var n = e.line + t.text.length - (t.to.line - t.from.line) - 1, r = e.ch; return e.line == t.to.line && (r += changeEnd(t).ch - t.to.ch), Pos(n, r); } function computeSelAfterChange(e, t) { for (var n = [], r = 0; r < e.sel.ranges.length; r++) { var i = e.sel.ranges[r]; n.push( new he(adjustForChange(i.anchor, t), adjustForChange(i.head, t)) ); } return normalizeSelection(n, e.sel.primIndex); } function offsetPos(e, t, n) { return e.line == t.line ? Pos(n.line, e.ch - t.ch + n.ch) : Pos(n.line + (e.line - t.line), e.ch); } function computeReplacedSel(e, t, n) { for (var r = [], i = Pos(e.first, 0), o = i, a = 0; a < t.length; a++) { var s = t[a], l = offsetPos(s.from, i, o), c = offsetPos(changeEnd(s), i, o); if (((i = s.to), (o = c), 'around' == n)) { var u = e.sel.ranges[a], d = cmp(u.head, u.anchor) < 0; r[a] = new he(d ? c : l, d ? l : c); } else r[a] = new he(l, l); } return new fe(r, e.sel.primIndex); } function loadMode(e) { (e.doc.mode = getMode(e.options, e.doc.modeOption)), resetModeState(e); } function resetModeState(e) { e.doc.iter(function(e) { e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null); }), (e.doc.frontier = e.doc.first), startWorker(e, 100), e.state.modeGen++, e.curOp && regChange(e); } function isWholeLineUpdate(e, t) { return ( 0 == t.from.ch && 0 == t.to.ch && '' == lst(t.text) && (!e.cm || e.cm.options.wholeLineUpdateBefore) ); } function updateDoc(e, t, n, r) { function spansFor(e) { return n ? n[e] : null; } function update(e, n, i) { updateLine(e, n, i, r), signalLater(e, 'change', e, t); } function linesFor(e, t) { for ( var n = [], i = e; i < t; ++i ) n.push(new Q(a[i], spansFor(i), r)); return n; } var i = t.from, o = t.to, a = t.text, s = getLine(e, i.line), l = getLine(e, o.line), c = lst(a), u = spansFor(a.length - 1), d = o.line - i.line; if (t.full) e.insert(0, linesFor(0, a.length)), e.remove( a.length, e.size - a.length ); else if (isWholeLineUpdate(e, t)) { var p = linesFor(0, a.length - 1); update(l, l.text, u), d && e.remove(i.line, d), p.length && e.insert(i.line, p); } else if (s == l) if (1 == a.length) update(s, s.text.slice(0, i.ch) + c + s.text.slice(o.ch), u); else { var f = linesFor(1, a.length - 1); f.push(new Q(c + s.text.slice(o.ch), u, r)), update( s, s.text.slice(0, i.ch) + a[0], spansFor(0) ), e.insert(i.line + 1, f); } else if (1 == a.length) update( s, s.text.slice(0, i.ch) + a[0] + l.text.slice(o.ch), spansFor(0) ), e.remove(i.line + 1, d); else { update(s, s.text.slice(0, i.ch) + a[0], spansFor(0)), update( l, c + l.text.slice(o.ch), u ); var h = linesFor(1, a.length - 1); d > 1 && e.remove(i.line + 1, d - 1), e.insert(i.line + 1, h); } signalLater(e, 'change', e, t); } function linkedDocs(e, t, n) { function propagate(e, r, i) { if (e.linked) for (var o = 0; o < e.linked.length; ++o) { var a = e.linked[o]; if (a.doc != r) { var s = i && a.sharedHist; (n && !s) || (t(a.doc, s), propagate(a.doc, e, s)); } } } propagate(e, null, !0); } function attachDoc(e, t) { if (t.cm) throw new Error('This document is already in use.'); (e.doc = t), (t.cm = e), estimateLineHeights(e), loadMode(e), setDirectionClass(e), e.options.lineWrapping || findMaxLine(e), (e.options.mode = t.modeOption), regChange(e); } function setDirectionClass(e) { ('rtl' == e.doc.direction ? addClass : L)(e.display.lineDiv, 'CodeMirror-rtl'); } function directionChanged(e) { runInOp(e, function() { setDirectionClass(e), regChange(e); }); } function History(e) { (this.done = []), (this.undone = []), (this.undoDepth = 1 / 0), (this.lastModTime = this.lastSelTime = 0), (this.lastOp = this.lastSelOp = null), (this.lastOrigin = this.lastSelOrigin = null), (this.generation = this.maxGeneration = e || 1); } function historyChangeFromChange(e, t) { var n = { from: copyPos(t.from), to: changeEnd(t), text: getBetween(e, t.from, t.to) }; return attachLocalSpans(e, n, t.from.line, t.to.line + 1), linkedDocs( e, function(e) { return attachLocalSpans(e, n, t.from.line, t.to.line + 1); }, !0 ), n; } function clearSelectionEvents(e) { for (; e.length; ) { if (!lst(e).ranges) break; e.pop(); } } function lastChangeEvent(e, t) { return t ? (clearSelectionEvents(e.done), lst(e.done)) : e.done.length && !lst(e.done).ranges ? lst(e.done) : e.done.length > 1 && !e.done[e.done.length - 2].ranges ? (e.done.pop(), lst(e.done)) : void 0; } function addChangeToHistory(e, t, n, r) { var i = e.history; i.undone.length = 0; var o, a, s = +new Date(); if ( (i.lastOp == r || (i.lastOrigin == t.origin && t.origin && (('+' == t.origin.charAt(0) && e.cm && i.lastModTime > s - e.cm.options.historyEventDelay) || '*' == t.origin.charAt(0)))) && (o = lastChangeEvent(i, i.lastOp == r)) ) (a = lst(o.changes)), 0 == cmp(t.from, t.to) && 0 == cmp(t.from, a.to) ? (a.to = changeEnd(t)) : o.changes.push(historyChangeFromChange(e, t)); else { var l = lst(i.done); for ( (l && l.ranges) || pushSelectionToHistory(e.sel, i.done), (o = { changes: [historyChangeFromChange(e, t)], generation: i.generation }), i.done.push(o); i.done.length > i.undoDepth; ) i.done.shift(), i.done[0].ranges || i.done.shift(); } i.done.push( n ), (i.generation = ++i.maxGeneration), (i.lastModTime = i.lastSelTime = s), (i.lastOp = i.lastSelOp = r), (i.lastOrigin = i.lastSelOrigin = t.origin), a || signal(e, 'historyAdded'); } function selectionEventCanBeMerged(e, t, n, r) { var i = t.charAt(0); return ( '*' == i || ('+' == i && n.ranges.length == r.ranges.length && n.somethingSelected() == r.somethingSelected() && new Date() - e.history.lastSelTime <= (e.cm ? e.cm.options.historyEventDelay : 500)) ); } function addSelectionToHistory(e, t, n, r) { var i = e.history, o = r && r.origin; n == i.lastSelOp || (o && i.lastSelOrigin == o && ((i.lastModTime == i.lastSelTime && i.lastOrigin == o) || selectionEventCanBeMerged(e, o, lst(i.done), t))) ? (i.done[i.done.length - 1] = t) : pushSelectionToHistory( t, i.done ), (i.lastSelTime = +new Date()), (i.lastSelOrigin = o), (i.lastSelOp = n), r && !1 !== r.clearRedo && clearSelectionEvents(i.undone); } function pushSelectionToHistory(e, t) { var n = lst(t); (n && n.ranges && n.equals(e)) || t.push(e); } function attachLocalSpans(e, t, n, r) { var i = t['spans_' + e.id], o = 0; e.iter(Math.max(e.first, n), Math.min(e.first + e.size, r), function( n ) { n.markedSpans && ((i || (i = t['spans_' + e.id] = {}))[o] = n.markedSpans), ++o; }); } function removeClearedSpans(e) { if (!e) return null; for ( var t, n = 0; n < e.length; ++n ) e[n].marker.explicitlyCleared ? t || (t = e.slice(0, n)) : t && t.push(e[n]); return t ? (t.length ? t : null) : e; } function getOldSpans(e, t) { var n = t['spans_' + e.id]; if (!n) return null; for ( var r = [], i = 0; i < t.text.length; ++i ) r.push(removeClearedSpans(n[i])); return r; } function mergeOldSpans(e, t) { var n = getOldSpans(e, t), r = stretchSpansOverChange(e, t); if (!n) return r; if (!r) return n; for (var i = 0; i < n.length; ++i) { var o = n[i], a = r[i]; if (o && a) e: for (var s = 0; s < a.length; ++s) { for (var l = a[s], c = 0; c < o.length; ++c) if (o[c].marker == l.marker) continue e; o.push(l); } else a && (n[i] = a); } return n; } function copyHistoryArray(e, t, n) { for (var r = [], i = 0; i < e.length; ++i) { var o = e[i]; if (o.ranges) r.push(n ? fe.prototype.deepCopy.call(o) : o); else { var a = o.changes, s = []; r.push({ changes: s }); for (var l = 0; l < a.length; ++l) { var c = a[l], u = void 0; if ((s.push({ from: c.from, to: c.to, text: c.text }), t)) for (var d in c) (u = d.match(/^spans_(\d+)$/)) && indexOf(t, Number(u[1])) > -1 && ((lst(s)[d] = c[d]), delete c[d]); } } } return r; } function extendRange(e, t, n, r) { if ((e.cm && e.cm.display.shift) || e.extend) { var i = t.anchor; if (r) { var o = cmp(n, i) < 0; o != cmp(r, i) < 0 ? ((i = n), (n = r)) : o != cmp(n, r) < 0 && (n = r); } return new he(i, n); } return new he(r || n, n); } function extendSelection(e, t, n, r) { setSelection(e, new fe([extendRange(e, e.sel.primary(), t, n)], 0), r); } function extendSelections(e, t, n) { for ( var r = [], i = 0; i < e.sel.ranges.length; i++ ) r[i] = extendRange(e, e.sel.ranges[i], t[i], null); setSelection(e, normalizeSelection(r, e.sel.primIndex), n); } function replaceOneSelection(e, t, n, r) { var i = e.sel.ranges.slice(0); (i[t] = n), setSelection(e, normalizeSelection(i, e.sel.primIndex), r); } function setSimpleSelection(e, t, n, r) { setSelection(e, simpleSelection(t, n), r); } function filterSelectionChange(e, t, n) { var r = { ranges: t.ranges, update: function(t) { var n = this; this.ranges = []; for (var r = 0; r < t.length; r++) n.ranges[r] = new he( clipPos(e, t[r].anchor), clipPos(e, t[r].head) ); }, origin: n && n.origin }; return signal( e, 'beforeSelectionChange', e, r ), e.cm && signal(e.cm, 'beforeSelectionChange', e.cm, r), r.ranges != t.ranges ? normalizeSelection(r.ranges, r.ranges.length - 1) : t; } function setSelectionReplaceHistory(e, t, n) { var r = e.history.done, i = lst(r); i && i.ranges ? ((r[r.length - 1] = t), setSelectionNoUndo(e, t, n)) : setSelection(e, t, n); } function setSelection(e, t, n) { setSelectionNoUndo( e, t, n ), addSelectionToHistory(e, e.sel, e.cm ? e.cm.curOp.id : NaN, n); } function setSelectionNoUndo(e, t, n) { (hasHandler(e, 'beforeSelectionChange') || (e.cm && hasHandler(e.cm, 'beforeSelectionChange'))) && (t = filterSelectionChange( e, t, n )), setSelectionInner(e, skipAtomicInSelection(e, t, (n && n.bias) || (cmp(t.primary().head, e.sel.primary().head) < 0 ? -1 : 1), !0)), (n && !1 === n.scroll) || !e.cm || ensureCursorVisible(e.cm); } function setSelectionInner(e, t) { t.equals(e.sel) || ((e.sel = t), e.cm && ((e.cm.curOp.updateInput = e.cm.curOp.selectionChanged = !0), signalCursorActivity( e.cm )), signalLater(e, 'cursorActivity', e)); } function reCheckSelection(e) { setSelectionInner(e, skipAtomicInSelection(e, e.sel, null, !1)); } function skipAtomicInSelection(e, t, n, r) { for (var i, o = 0; o < t.ranges.length; o++) { var a = t.ranges[o], s = t.ranges.length == e.sel.ranges.length && e.sel.ranges[o], l = skipAtomic(e, a.anchor, s && s.anchor, n, r), c = skipAtomic(e, a.head, s && s.head, n, r); (i || l != a.anchor || c != a.head) && (i || (i = t.ranges.slice(0, o)), (i[o] = new he(l, c))); } return i ? normalizeSelection(i, t.primIndex) : t; } function skipAtomicInner(e, t, n, r, i) { var o = getLine(e, t.line); if (o.markedSpans) for (var a = 0; a < o.markedSpans.length; ++a) { var s = o.markedSpans[a], l = s.marker; if ( (null == s.from || (l.inclusiveLeft ? s.from <= t.ch : s.from < t.ch)) && (null == s.to || (l.inclusiveRight ? s.to >= t.ch : s.to > t.ch)) ) { if (i && (signal(l, 'beforeCursorEnter'), l.explicitlyCleared)) { if (o.markedSpans) { --a; continue; } break; } if (!l.atomic) continue; if (n) { var c = l.find(r < 0 ? 1 : -1), u = void 0; if ( ((r < 0 ? l.inclusiveRight : l.inclusiveLeft) && (c = movePos( e, c, -r, c && c.line == t.line ? o : null )), c && c.line == t.line && (u = cmp(c, n)) && (r < 0 ? u < 0 : u > 0)) ) return skipAtomicInner(e, c, t, r, i); } var d = l.find(r < 0 ? -1 : 1); return (r < 0 ? l.inclusiveLeft : l.inclusiveRight) && (d = movePos(e, d, r, d.line == t.line ? o : null)), d ? skipAtomicInner(e, d, t, r, i) : null; } } return t; } function skipAtomic(e, t, n, r, i) { var o = r || 1, a = skipAtomicInner(e, t, n, o, i) || (!i && skipAtomicInner(e, t, n, o, !0)) || skipAtomicInner(e, t, n, -o, i) || (!i && skipAtomicInner(e, t, n, -o, !0)); return a || ((e.cantEdit = !0), Pos(e.first, 0)); } function movePos(e, t, n, r) { return n < 0 && 0 == t.ch ? t.line > e.first ? clipPos(e, Pos(t.line - 1)) : null : n > 0 && t.ch == (r || getLine(e, t.line)).text.length ? t.line < e.first + e.size - 1 ? Pos(t.line + 1, 0) : null : new Pos(t.line, t.ch + n); } function selectAll(e) { e.setSelection(Pos(e.firstLine(), 0), Pos(e.lastLine()), D); } function filterChange(e, t, n) { var r = { canceled: !1, from: t.from, to: t.to, text: t.text, origin: t.origin, cancel: function() { return (r.canceled = !0); } }; return n && (r.update = function(t, n, i, o) { t && (r.from = clipPos(e, t)), n && (r.to = clipPos(e, n)), i && (r.text = i), void 0 !== o && (r.origin = o); }), signal(e, 'beforeChange', e, r), e.cm && signal(e.cm, 'beforeChange', e.cm, r), r.canceled ? null : { from: r.from, to: r.to, text: r.text, origin: r.origin }; } function makeChange(e, t, n) { if (e.cm) { if (!e.cm.curOp) return operation(e.cm, makeChange)(e, t, n); if (e.cm.state.suppressEdits) return; } if ( !(hasHandler(e, 'beforeChange') || (e.cm && hasHandler(e.cm, 'beforeChange'))) || (t = filterChange(e, t, !0)) ) { var r = B && !n && removeReadOnlyRanges(e, t.from, t.to); if (r) for (var i = r.length - 1; i >= 0; --i) makeChangeInner(e, { from: r[i].from, to: r[i].to, text: i ? [''] : t.text }); else makeChangeInner(e, t); } } function makeChangeInner(e, t) { if (1 != t.text.length || '' != t.text[0] || 0 != cmp(t.from, t.to)) { var n = computeSelAfterChange(e, t); addChangeToHistory( e, t, n, e.cm ? e.cm.curOp.id : NaN ), makeChangeSingleDoc(e, t, n, stretchSpansOverChange(e, t)); var r = []; linkedDocs(e, function(e, n) { n || -1 != indexOf(r, e.history) || (rebaseHist(e.history, t), r.push( e.history )), makeChangeSingleDoc(e, t, null, stretchSpansOverChange(e, t)); }); } } function makeChangeFromHistory(e, t, n) { if (!e.cm || !e.cm.state.suppressEdits || n) { for ( var r, i = e.history, o = e.sel, a = 'undo' == t ? i.done : i.undone, s = 'undo' == t ? i.undone : i.done, l = 0; l < a.length && ((r = a[l]), n ? !r.ranges || r.equals(e.sel) : r.ranges); l++ ); if (l != a.length) { for ( i.lastOrigin = i.lastSelOrigin = null; (r = a.pop()), r.ranges; ) { if ((pushSelectionToHistory(r, s), n && !r.equals(e.sel))) return void setSelection(e, r, { clearRedo: !1 }); o = r; } var c = []; pushSelectionToHistory(o, s), s.push({ changes: c, generation: i.generation }), (i.generation = r.generation || ++i.maxGeneration); for ( var u = hasHandler(e, 'beforeChange') || (e.cm && hasHandler(e.cm, 'beforeChange')), d = r.changes.length - 1; d >= 0; --d ) { var p = (function(n) { var i = r.changes[n]; if (((i.origin = t), u && !filterChange(e, i, !1))) return (a.length = 0), {}; c.push(historyChangeFromChange(e, i)); var o = n ? computeSelAfterChange(e, i) : lst(a); makeChangeSingleDoc(e, i, o, mergeOldSpans(e, i)), !n && e.cm && e.cm.scrollIntoView({ from: i.from, to: changeEnd(i) }); var s = []; linkedDocs(e, function(e, t) { t || -1 != indexOf(s, e.history) || (rebaseHist(e.history, i), s.push( e.history )), makeChangeSingleDoc(e, i, null, mergeOldSpans(e, i)); }); })(d); if (p) return p.v; } } } } function shiftDoc(e, t) { if ( 0 != t && ((e.first += t), (e.sel = new fe( map(e.sel.ranges, function(e) { return new he( Pos(e.anchor.line + t, e.anchor.ch), Pos(e.head.line + t, e.head.ch) ); }), e.sel.primIndex )), e.cm) ) { regChange(e.cm, e.first, e.first - t, t); for (var n = e.cm.display, r = n.viewFrom; r < n.viewTo; r++) regLineChange(e.cm, r, 'gutter'); } } function makeChangeSingleDoc(e, t, n, r) { if (e.cm && !e.cm.curOp) return operation(e.cm, makeChangeSingleDoc)(e, t, n, r); if (t.to.line < e.first) return void shiftDoc( e, t.text.length - 1 - (t.to.line - t.from.line) ); if (!(t.from.line > e.lastLine())) { if (t.from.line < e.first) { var i = t.text.length - 1 - (e.first - t.from.line); shiftDoc(e, i), (t = { from: Pos(e.first, 0), to: Pos(t.to.line + i, t.to.ch), text: [lst(t.text)], origin: t.origin }); } var o = e.lastLine(); t.to.line > o && (t = { from: t.from, to: Pos(o, getLine(e, o).text.length), text: [t.text[0]], origin: t.origin }), (t.removed = getBetween(e, t.from, t.to)), n || (n = computeSelAfterChange(e, t)), e.cm ? makeChangeSingleDocInEditor(e.cm, t, r) : updateDoc(e, t, r), setSelectionNoUndo(e, n, D); } } function makeChangeSingleDocInEditor(e, t, n) { var r = e.doc, i = e.display, o = t.from, a = t.to, s = !1, l = o.line; e.options.lineWrapping || ((l = lineNo(visualLine(getLine(r, o.line)))), r.iter( l, a.line + 1, function(e) { if (e == i.maxLine) return (s = !0), !0; } )), r.sel.contains(t.from, t.to) > -1 && signalCursorActivity(e), updateDoc(r, t, n, estimateHeight(e)), e .options.lineWrapping || (r.iter(l, o.line + t.text.length, function(e) { var t = lineLength(e); t > i.maxLineLength && ((i.maxLine = e), (i.maxLineLength = t), (i.maxLineChanged = !0), (s = !1)); }), s && (e.curOp.updateMaxLine = !0)), (r.frontier = Math.min(r.frontier, o.line)), startWorker(e, 400); var c = t.text.length - (a.line - o.line) - 1; t.full ? regChange(e) : o.line != a.line || 1 != t.text.length || isWholeLineUpdate(e.doc, t) ? regChange(e, o.line, a.line + 1, c) : regLineChange(e, o.line, 'text'); var u = hasHandler(e, 'changes'), d = hasHandler(e, 'change'); if (d || u) { var p = { from: o, to: a, text: t.text, removed: t.removed, origin: t.origin }; d && signalLater(e, 'change', e, p), u && (e.curOp.changeObjs || (e.curOp.changeObjs = [])).push(p); } e.display.selForContextMenu = null; } function replaceRange(e, t, n, r, i) { if ((r || (r = n), cmp(r, n) < 0)) { var o = r; (r = n), (n = o); } 'string' == typeof t && (t = e.splitLines( t )), makeChange(e, { from: n, to: r, text: t, origin: i }); } function rebaseHistSelSingle(e, t, n, r) { n < e.line ? (e.line += r) : t < e.line && ((e.line = t), (e.ch = 0)); } function rebaseHistArray(e, t, n, r) { for (var i = 0; i < e.length; ++i) { var o = e[i], a = !0; if (o.ranges) { o.copied || ((o = e[i] = o.deepCopy()), (o.copied = !0)); for (var s = 0; s < o.ranges.length; s++) rebaseHistSelSingle( o.ranges[s].anchor, t, n, r ), rebaseHistSelSingle(o.ranges[s].head, t, n, r); } else { for (var l = 0; l < o.changes.length; ++l) { var c = o.changes[l]; if (n < c.from.line) (c.from = Pos(c.from.line + r, c.from.ch)), (c.to = Pos( c.to.line + r, c.to.ch )); else if (t <= c.to.line) { a = !1; break; } } a || (e.splice(0, i + 1), (i = 0)); } } } function rebaseHist(e, t) { var n = t.from.line, r = t.to.line, i = t.text.length - (r - n) - 1; rebaseHistArray(e.done, n, r, i), rebaseHistArray(e.undone, n, r, i); } function changeLine(e, t, n, r) { var i = t, o = t; return 'number' == typeof t ? (o = getLine(e, clipLine(e, t))) : (i = lineNo( t )), null == i ? null : (r(o, i) && e.cm && regLineChange(e.cm, i, n), o); } function adjustScrollWhenAboveVisible(e, t, n) { heightAtLine(t) < ((e.curOp && e.curOp.scrollTop) || e.doc.scrollTop) && addToScrollTop(e, n); } function addLineWidget(e, t, n, r) { var i = new ve(e, n, r), o = e.cm; return o && i.noHScroll && (o.display.alignWidgets = !0), changeLine(e, t, 'widget', function(t) { var n = t.widgets || (t.widgets = []); if ( (null == i.insertAt ? n.push(i) : n.splice( Math.min(n.length - 1, Math.max(0, i.insertAt)), 0, i ), (i.line = t), o && !lineIsHidden(e, t)) ) { var r = heightAtLine(t) < e.scrollTop; updateLineHeight(t, t.height + widgetHeight(i)), r && addToScrollTop(o, i.height), (o.curOp.forceUpdate = !0); } return !0; }), signalLater( o, 'lineWidgetAdded', o, i, 'number' == typeof t ? t : lineNo(t) ), i; } function markText(e, t, n, r, i) { if (r && r.shared) return markTextShared(e, t, n, r, i); if (e.cm && !e.cm.curOp) return operation(e.cm, markText)(e, t, n, r, i); var o = new be(e, i), a = cmp(t, n); if ( (r && copyObj(r, o, !1), a > 0 || (0 == a && !1 !== o.clearWhenEmpty)) ) return o; if ( (o.replacedWith && ((o.collapsed = !0), (o.widgetNode = eltP( 'span', [o.replacedWith], 'CodeMirror-widget' )), r.handleMouseEvents || o.widgetNode.setAttribute( 'cm-ignore-events', 'true' ), r.insertLeft && (o.widgetNode.insertLeft = !0)), o.collapsed) ) { if ( conflictingCollapsedRange(e, t.line, t, n, o) || (t.line != n.line && conflictingCollapsedRange(e, n.line, t, n, o)) ) throw new Error( 'Inserting collapsed marker partially overlapping an existing one' ); seeCollapsedSpans(); } o.addToHistory && addChangeToHistory( e, { from: t, to: n, origin: 'markText' }, e.sel, NaN ); var s, l = t.line, c = e.cm; if ( (e.iter(l, n.line + 1, function(e) { c && o.collapsed && !c.options.lineWrapping && visualLine(e) == c.display.maxLine && (s = !0), o.collapsed && l != t.line && updateLineHeight(e, 0), addMarkedSpan(e, new MarkedSpan(o, l == t.line ? t.ch : null, l == n.line ? n.ch : null)), ++l; }), o.collapsed && e.iter(t.line, n.line + 1, function(t) { lineIsHidden(e, t) && updateLineHeight(t, 0); }), o.clearOnEnter && G(o, 'beforeCursorEnter', function() { return o.clear(); }), o.readOnly && (seeReadOnlySpans(), (e.history.done.length || e.history.undone.length) && e.clearHistory()), o.collapsed && ((o.id = ++ye), (o.atomic = !0)), c) ) { if ((s && (c.curOp.updateMaxLine = !0), o.collapsed)) regChange(c, t.line, n.line + 1); else if ( o.className || o.title || o.startStyle || o.endStyle || o.css ) for (var u = t.line; u <= n.line; u++) regLineChange(c, u, 'text'); o.atomic && reCheckSelection(c.doc), signalLater( c, 'markerAdded', c, o ); } return o; } function markTextShared(e, t, n, r, i) { (r = copyObj(r)), (r.shared = !1); var o = [markText(e, t, n, r, i)], a = o[0], s = r.widgetNode; return linkedDocs(e, function(e) { s && (r.widgetNode = s.cloneNode( !0 )), o.push(markText(e, clipPos(e, t), clipPos(e, n), r, i)); for ( var l = 0; l < e.linked.length; ++l ) if (e.linked[l].isParent) return; a = lst(o); }), new xe(o, a); } function findSharedMarkers(e) { return e.findMarks( Pos(e.first, 0), e.clipPos(Pos(e.lastLine())), function(e) { return e.parent; } ); } function copySharedMarkers(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n], i = r.find(), o = e.clipPos(i.from), a = e.clipPos(i.to); if (cmp(o, a)) { var s = markText(e, o, a, r.primary, r.primary.type); r.markers.push(s), (s.parent = r); } } } function detachSharedMarkers(e) { for (var t = 0; t < e.length; t++) !(function(t) { var n = e[t], r = [n.primary.doc]; linkedDocs(n.primary.doc, function(e) { return r.push(e); }); for (var i = 0; i < n.markers.length; i++) { var o = n.markers[i]; -1 == indexOf(r, o.doc) && ((o.parent = null), n.markers.splice(i--, 1)); } })(t); } function onDrop(e) { var t = this; if ( (clearDragCursor(t), !signalDOMEvent(t, e) && !eventInWidget(t.display, e)) ) { e_preventDefault(e), a && (Se = +new Date()); var n = posFromMouse(t, e, !0), r = e.dataTransfer.files; if (n && !t.isReadOnly()) if (r && r.length && window.FileReader && window.File) for (var i = r.length, o = Array(i), s = 0, l = 0; l < i; ++l) !(function(e, r) { if ( !t.options.allowDropFileTypes || -1 != indexOf(t.options.allowDropFileTypes, e.type) ) { var a = new FileReader(); (a.onload = operation(t, function() { var e = a.result; if ( (/[\x00-\x08\x0e-\x1f]{2}/.test(e) && (e = ''), (o[ r ] = e), ++s == i) ) { n = clipPos(t.doc, n); var l = { from: n, to: n, text: t.doc.splitLines(o.join(t.doc.lineSeparator())), origin: 'paste' }; makeChange(t.doc, l), setSelectionReplaceHistory( t.doc, simpleSelection(n, changeEnd(l)) ); } })), a.readAsText(e); } })(r[l], l); else { if (t.state.draggingText && t.doc.sel.contains(n) > -1) return t.state.draggingText(e), void setTimeout(function() { return t.display.input.focus(); }, 20); try { var c = e.dataTransfer.getData('Text'); if (c) { var u; if ( (t.state.draggingText && !t.state.draggingText.copy && (u = t.listSelections()), setSelectionNoUndo( t.doc, simpleSelection(n, n) ), u) ) for (var d = 0; d < u.length; ++d) replaceRange(t.doc, '', u[d].anchor, u[d].head, 'drag'); t.replaceSelection( c, 'around', 'paste' ), t.display.input.focus(); } } catch (e) {} } } } function onDragStart(e, t) { if (a && (!e.state.draggingText || +new Date() - Se < 100)) return void e_stop(t); if ( !signalDOMEvent(e, t) && !eventInWidget(e.display, t) && (t.dataTransfer.setData( 'Text', e.getSelection() ), (t.dataTransfer.effectAllowed = 'copyMove'), t.dataTransfer .setDragImage && !p) ) { var n = elt('img', null, null, 'position: fixed; left: 0; top: 0;'); (n.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='), d && ((n.width = n.height = 1), e.display.wrapper.appendChild( n ), (n._top = n.offsetTop)), t.dataTransfer.setDragImage( n, 0, 0 ), d && n.parentNode.removeChild(n); } } function onDragOver(e, t) { var n = posFromMouse(e, t); if (n) { var r = document.createDocumentFragment(); drawSelectionCursor(e, n, r), e.display.dragCursor || ((e.display.dragCursor = elt( 'div', null, 'CodeMirror-cursors CodeMirror-dragcursors' )), e.display.lineSpace.insertBefore( e.display.dragCursor, e.display.cursorDiv )), removeChildrenAndAdd(e.display.dragCursor, r); } } function clearDragCursor(e) { e.display.dragCursor && (e.display.lineSpace.removeChild( e.display.dragCursor ), (e.display.dragCursor = null)); } function forEachCodeMirror(e) { if (document.body.getElementsByClassName) for ( var t = document.body.getElementsByClassName('CodeMirror'), n = 0; n < t.length; n++ ) { var r = t[n].CodeMirror; r && e(r); } } function ensureGlobalHandlers() { ke || (registerGlobalHandlers(), (ke = !0)); } function registerGlobalHandlers() { var e; G(window, 'resize', function() { null == e && (e = setTimeout(function() { (e = null), forEachCodeMirror(onResize); }, 100)); }), G(window, 'blur', function() { return forEachCodeMirror(onBlur); }); } function onResize(e) { var t = e.display; (t.lastWrapHeight == t.wrapper.clientHeight && t.lastWrapWidth == t.wrapper.clientWidth) || ((t.cachedCharWidth = t.cachedTextHeight = t.cachedPaddingH = null), (t.scrollbarsClipped = !1), e.setSize()); } function normalizeKeyName(e) { var t = e.split(/-(?!$)/); e = t[t.length - 1]; for (var n, r, i, o, a = 0; a < t.length - 1; a++) { var s = t[a]; if (/^(cmd|meta|m)$/i.test(s)) o = !0; else if (/^a(lt)?$/i.test(s)) n = !0; else if (/^(c|ctrl|control)$/i.test(s)) r = !0; else { if (!/^s(hift)?$/i.test(s)) throw new Error('Unrecognized modifier name: ' + s); i = !0; } } return n && (e = 'Alt-' + e), r && (e = 'Ctrl-' + e), o && (e = 'Cmd-' + e), i && (e = 'Shift-' + e), e; } function normalizeKeyMap(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 = map(n.split(' '), normalizeKeyName), o = 0; o < i.length; o++ ) { var a = void 0, s = void 0; o == i.length - 1 ? ((s = i.join(' ')), (a = r)) : ((s = i.slice(0, o + 1).join(' ')), (a = '...')); var l = t[s]; if (l) { if (l != a) throw new Error('Inconsistent bindings for ' + s); } else t[s] = a; } delete e[n]; } for (var c in t) e[c] = t[c]; return e; } function lookupKey(e, t, n, r) { t = getKeyMap(t); var i = t.call ? t.call(e, r) : t[e]; if (!1 === i) 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 lookupKey(e, t.fallthrough, n, r); for (var o = 0; o < t.fallthrough.length; o++) { var a = lookupKey(e, t.fallthrough[o], n, r); if (a) return a; } } } function isModifierKey(e) { var t = 'string' == typeof e ? e : Le[e.keyCode]; return 'Ctrl' == t || 'Alt' == t || 'Shift' == t || 'Mod' == t; } function keyName(e, t) { if (d && 34 == e.keyCode && e.char) return !1; var n = Le[e.keyCode], r = n; return ( null != r && !e.altGraphKey && (e.altKey && 'Alt' != n && (r = 'Alt-' + r), (S ? e.metaKey : e.ctrlKey) && 'Ctrl' != n && (r = 'Ctrl-' + r), (S ? e.ctrlKey : e.metaKey) && 'Cmd' != n && (r = 'Cmd-' + r), !t && e.shiftKey && 'Shift' != n && (r = 'Shift-' + r), r) ); } function getKeyMap(e) { return 'string' == typeof e ? Pe[e] : e; } function deleteNearSelection(e, t) { for (var n = e.doc.sel.ranges, r = [], i = 0; i < n.length; i++) { for (var o = t(n[i]); r.length && cmp(o.from, lst(r).to) <= 0; ) { var a = r.pop(); if (cmp(a.from, o.from) < 0) { o.from = a.from; break; } } r.push(o); } runInOp(e, function() { for ( var t = r.length - 1; t >= 0; t-- ) replaceRange(e.doc, '', r[t].from, r[t].to, '+delete'); ensureCursorVisible(e); }); } function lineStart(e, t) { var n = getLine(e.doc, t), r = visualLine(n); return r != n && (t = lineNo(r)), endOfLine(!0, e, r, t, 1); } function lineEnd(e, t) { var n = getLine(e.doc, t), r = visualLineEnd(n); return r != n && (t = lineNo(r)), endOfLine(!0, e, n, t, -1); } function lineStartSmart(e, t) { var n = lineStart(e, t.line), r = getLine(e.doc, n.line), i = getOrder(r, e.doc.direction); if (!i || 0 == i[0].level) { var o = Math.max(0, r.text.search(/\S/)), a = t.line == n.line && t.ch <= o && t.ch; return Pos(n.line, a ? 0 : o, n.sticky); } return n; } function doHandleBinding(e, t, n) { if ('string' == typeof t && !(t = De[t])) return !1; e.display.input.ensurePolled(); var r = e.display.shift, i = !1; try { e.isReadOnly() && (e.state.suppressEdits = !0), n && (e.display.shift = !1), (i = t(e) != A); } finally { (e.display.shift = r), (e.state.suppressEdits = !1); } return i; } function lookupKeyForEditor(e, t, n) { for (var r = 0; r < e.state.keyMaps.length; r++) { var i = lookupKey(t, e.state.keyMaps[r], n, e); if (i) return i; } return ( (e.options.extraKeys && lookupKey(t, e.options.extraKeys, n, e)) || lookupKey(t, e.options.keyMap, n, e) ); } function dispatchKey(e, t, n, r) { var i = e.state.keySeq; if (i) { if (isModifierKey(t)) return 'handled'; He.set(50, function() { e.state.keySeq == i && ((e.state.keySeq = null), e.display.input.reset()); }), (t = i + ' ' + t); } var o = lookupKeyForEditor(e, t, r); return 'multi' == o && (e.state.keySeq = t), 'handled' == o && signalLater(e, 'keyHandled', e, t, n), ('handled' != o && 'multi' != o) || (e_preventDefault(n), restartBlink(e)), i && !o && /\'$/.test(t) ? (e_preventDefault(n), !0) : !!o; } function handleKeyBinding(e, t) { var n = keyName(t, !0); return ( !!n && (t.shiftKey && !e.state.keySeq ? dispatchKey(e, 'Shift-' + n, t, function(t) { return doHandleBinding(e, t, !0); }) || dispatchKey(e, n, t, function(t) { if ('string' == typeof t ? /^go[A-Z]/.test(t) : t.motion) return doHandleBinding(e, t); }) : dispatchKey(e, n, t, function(t) { return doHandleBinding(e, t); })) ); } function handleCharBinding(e, t, n) { return dispatchKey(e, "'" + n + "'", t, function(t) { return doHandleBinding(e, t, !0); }); } function onKeyDown(e) { var t = this; if (((t.curOp.focus = activeElt()), !signalDOMEvent(t, e))) { a && s < 11 && 27 == e.keyCode && (e.returnValue = !1); var n = e.keyCode; t.display.shift = 16 == n || e.shiftKey; var r = handleKeyBinding(t, e); d && ((We = r ? n : null), !r && 88 == n && !$ && (y ? e.metaKey : e.ctrlKey) && t.replaceSelection('', null, 'cut')), 18 != n || /\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className) || showCrossHair(t); } } function showCrossHair(e) { function up(e) { (18 != e.keyCode && e.altKey) || (L(t, 'CodeMirror-crosshair'), off(document, 'keyup', up), off( document, 'mouseover', up )); } var t = e.display.lineDiv; addClass( t, 'CodeMirror-crosshair' ), G(document, 'keyup', up), G(document, 'mouseover', up); } function onKeyUp(e) { 16 == e.keyCode && (this.doc.sel.shift = !1), signalDOMEvent(this, e); } function onKeyPress(e) { var t = this; if ( !(eventInWidget(t.display, e) || signalDOMEvent(t, e) || (e.ctrlKey && !e.altKey) || (y && e.metaKey)) ) { var n = e.keyCode, r = e.charCode; if (d && n == We) return (We = null), void e_preventDefault(e); if (!d || (e.which && !(e.which < 10)) || !handleKeyBinding(t, e)) { var i = String.fromCharCode(null == r ? n : r); '\b' != i && (handleCharBinding(t, e, i) || t.display.input.onKeyPress(e)); } } } function onMouseDown(e) { var t = this, n = t.display; if ( !(signalDOMEvent(t, e) || (n.activeTouch && n.input.supportsTouch())) ) { if ( (n.input.ensurePolled(), (n.shift = e.shiftKey), eventInWidget( n, e )) ) return void (l || ((n.scroller.draggable = !1), setTimeout(function() { return (n.scroller.draggable = !0); }, 100))); if (!clickInGutter(t, e)) { var r = posFromMouse(t, e); switch ((window.focus(), e_button(e))) { case 1: t.state.selectingText ? t.state.selectingText(e) : r ? leftButtonDown(t, e, r) : e_target(e) == n.scroller && e_preventDefault(e); break; case 2: l && (t.state.lastMiddleDown = +new Date()), r && extendSelection(t.doc, r), setTimeout(function() { return n.input.focus(); }, 20), e_preventDefault(e); break; case 3: k ? onContextMenu(t, e) : delayBlurEvent(t); } } } } function leftButtonDown(e, t, n) { a ? setTimeout(bind(ensureFocus, e), 0) : (e.curOp.focus = activeElt()); var r, i = +new Date(); Ae && Ae.time > i - 400 && 0 == cmp(Ae.pos, n) ? (r = 'triple') : Ne && Ne.time > i - 400 && 0 == cmp(Ne.pos, n) ? ((r = 'double'), (Ae = { time: i, pos: n })) : ((r = 'single'), (Ne = { time: i, pos: n })); var o, s = e.doc.sel, l = y ? t.metaKey : t.ctrlKey; e.options.dragDrop && _ && !e.isReadOnly() && 'single' == r && (o = s.contains(n)) > -1 && (cmp((o = s.ranges[o]).from(), n) < 0 || n.xRel > 0) && (cmp(o.to(), n) > 0 || n.xRel < 0) ? leftButtonStartDrag(e, t, n, l) : leftButtonSelect(e, t, n, r, l); } function leftButtonStartDrag(e, t, n, r) { var i = e.display, o = !1, c = operation(e, function(t) { l && (i.scroller.draggable = !1), (e.state.draggingText = !1), off(document, 'mouseup', c), off(document, 'mousemove', u), off(i.scroller, 'dragstart', d), off(i.scroller, 'drop', c), o || (e_preventDefault(t), r || extendSelection(e.doc, n), l || (a && 9 == s) ? setTimeout(function() { document.body.focus(), i.input.focus(); }, 20) : i.input.focus()); }), u = function(e) { o = o || Math.abs(t.clientX - e.clientX) + Math.abs(t.clientY - e.clientY) >= 10; }, d = function() { return (o = !0); }; l && (i.scroller.draggable = !0), (e.state.draggingText = c), (c.copy = y ? t.altKey : t.ctrlKey), i.scroller.dragDrop && i.scroller.dragDrop(), G(document, 'mouseup', c), G(document, 'mousemove', u), G(i.scroller, 'dragstart', d), G(i.scroller, 'drop', c), delayBlurEvent(e), setTimeout(function() { return i.input.focus(); }, 20); } function leftButtonSelect(e, t, n, r, i) { function extendTo(t) { if (0 != cmp(f, t)) if (((f = t), 'rect' == r)) { for ( var i = [], o = e.options.tabSize, u = countColumn(getLine(a, n.line).text, n.ch, o), d = countColumn(getLine(a, t.line).text, t.ch, o), p = Math.min(u, d), h = Math.max(u, d), g = Math.min(n.line, t.line), m = Math.min(e.lastLine(), Math.max(n.line, t.line)); g <= m; g++ ) { var v = getLine(a, g).text, y = findColumn(v, p, o); p == h ? i.push(new he(Pos(g, y), Pos(g, y))) : v.length > y && i.push(new he(Pos(g, y), Pos(g, findColumn(v, h, o)))); } i.length || i.push(new he(n, n)), setSelection( a, normalizeSelection(c.ranges.slice(0, l).concat(i), l), { origin: '*mouse', scroll: !1 } ), e.scrollIntoView(t); } else { var b = s, x = b.anchor, C = t; if ('single' != r) { var w; (w = 'double' == r ? e.findWordAt(t) : new he( Pos(t.line, 0), clipPos(a, Pos(t.line + 1, 0)) )), cmp(w.anchor, x) > 0 ? ((C = w.head), (x = minPos(b.from(), w.anchor))) : ((C = w.anchor), (x = maxPos(b.to(), w.head))); } var S = c.ranges.slice(0); (S[l] = new he(clipPos(a, x), C)), setSelection( a, normalizeSelection(S, l), H ); } } function extend(t) { var n = ++g, i = posFromMouse(e, t, !0, 'rect' == r); if (i) if (0 != cmp(i, f)) { (e.curOp.focus = activeElt()), extendTo(i); var s = visibleLines(o, a); (i.line >= s.to || i.line < s.from) && setTimeout( operation(e, function() { g == n && extend(t); }), 150 ); } else { var l = t.clientY < h.top ? -20 : t.clientY > h.bottom ? 20 : 0; l && setTimeout( operation(e, function() { g == n && ((o.scroller.scrollTop += l), extend(t)); }), 50 ); } } function done(t) { (e.state.selectingText = !1), (g = 1 / 0), e_preventDefault(t), o.input.focus(), off(document, 'mousemove', m), off(document, 'mouseup', v), (a.history.lastSelOrigin = null); } var o = e.display, a = e.doc; e_preventDefault(t); var s, l, c = a.sel, u = c.ranges; if ( (i && !t.shiftKey ? ((l = a.sel.contains(n)), (s = l > -1 ? u[l] : new he(n, n))) : ((s = a.sel.primary()), (l = a.sel.primIndex)), b ? t.shiftKey && t.metaKey : t.altKey) ) (r = 'rect'), i || (s = new he(n, n)), (n = posFromMouse( e, t, !0, !0 )), (l = -1); else if ('double' == r) { var d = e.findWordAt(n); s = e.display.shift || a.extend ? extendRange(a, s, d.anchor, d.head) : d; } else if ('triple' == r) { var p = new he(Pos(n.line, 0), clipPos(a, Pos(n.line + 1, 0))); s = e.display.shift || a.extend ? extendRange(a, s, p.anchor, p.head) : p; } else s = extendRange(a, s, n); i ? -1 == l ? ((l = u.length), setSelection( a, normalizeSelection(u.concat([s]), l), { scroll: !1, origin: '*mouse' } )) : u.length > 1 && u[l].empty() && 'single' == r && !t.shiftKey ? (setSelection( a, normalizeSelection( u.slice(0, l).concat(u.slice(l + 1)), 0 ), { scroll: !1, origin: '*mouse' } ), (c = a.sel)) : replaceOneSelection(a, l, s, H) : ((l = 0), setSelection(a, new fe([s], 0), H), (c = a.sel)); var f = n, h = o.wrapper.getBoundingClientRect(), g = 0, m = operation(e, function(e) { e_button(e) ? extend(e) : done(e); }), v = operation(e, done); (e.state.selectingText = v), G(document, 'mousemove', m), G(document, 'mouseup', v); } function gutterEvent(e, t, n, r) { var i, o; try { (i = t.clientX), (o = t.clientY); } catch (t) { return !1; } if (i >= Math.floor(e.display.gutters.getBoundingClientRect().right)) return !1; r && e_preventDefault(t); var a = e.display, s = a.lineDiv.getBoundingClientRect(); if (o > s.bottom || !hasHandler(e, n)) return e_defaultPrevented(t); o -= s.top - a.viewOffset; for (var l = 0; l < e.options.gutters.length; ++l) { var c = a.gutters.childNodes[l]; if (c && c.getBoundingClientRect().right >= i) { return signal( e, n, e, lineAtHeight(e.doc, o), e.options.gutters[l], t ), e_defaultPrevented(t); } } } function clickInGutter(e, t) { return gutterEvent(e, t, 'gutterClick', !0); } function onContextMenu(e, t) { eventInWidget(e.display, t) || contextMenuInGutter(e, t) || signalDOMEvent(e, t, 'contextmenu') || e.display.input.onContextMenu(t); } function contextMenuInGutter(e, t) { return ( !!hasHandler(e, 'gutterContextMenu') && gutterEvent(e, t, 'gutterContextMenu', !1) ); } function themeChanged(e) { (e.display.wrapper.className = e.display.wrapper.className.replace(/\s*cm-s-\S+/g, '') + e.options.theme.replace(/(^|\s)\s*/g, ' cm-s-')), clearCaches(e); } function guttersChanged(e) { updateGutters(e), regChange(e), alignHorizontally(e); } function dragDropChanged(e, t, n) { if (!t != !(n && n != Ee)) { var r = e.display.dragFunctions, i = t ? G : off; i(e.display.scroller, 'dragstart', r.start), i( e.display.scroller, 'dragenter', r.enter ), i(e.display.scroller, 'dragover', r.over), i( e.display.scroller, 'dragleave', r.leave ), i(e.display.scroller, 'drop', r.drop); } } function wrappingChanged(e) { e.options.lineWrapping ? (addClass( e.display.wrapper, 'CodeMirror-wrap' ), (e.display.sizer.style.minWidth = ''), (e.display.sizerWidth = null)) : (L(e.display.wrapper, 'CodeMirror-wrap'), findMaxLine( e )), estimateLineHeights(e), regChange(e), clearCaches(e), setTimeout(function() { return updateScrollbars(e); }, 100); } function CodeMirror$1(e, t) { var n = this; if (!(this instanceof CodeMirror$1)) return new CodeMirror$1(e, t); (this.options = t = t ? copyObj(t) : {}), copyObj(Ie, t, !1), setGuttersForLineNumbers(t); var r = t.value; 'string' == typeof r && (r = new we( r, t.mode, null, t.lineSeparator, t.direction )), (this.doc = r); var i = new CodeMirror$1.inputStyles[t.inputStyle](this), o = (this.display = new Display(e, r, i)); (o.wrapper.CodeMirror = this), updateGutters(this), themeChanged(this), t.lineWrapping && (this.display.wrapper.className += ' CodeMirror-wrap'), initScrollbars(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 T(), keySeq: null, specialChars: null }), t.autofocus && !v && o.input.focus(), a && s < 11 && setTimeout(function() { return n.display.input.reset(!0); }, 20), registerEventHandlers( this ), ensureGlobalHandlers(), startOperation(this), (this.curOp.forceUpdate = !0), attachDoc(this, r), (t.autofocus && !v) || this.hasFocus() ? setTimeout(bind(onFocus, this), 20) : onBlur(this); for (var c in Fe) Fe.hasOwnProperty(c) && Fe[c](n, t[c], Ee); maybeUpdateLineNumberWidth(this), t.finishInit && t.finishInit(this); for (var u = 0; u < Be.length; ++u) Be[u](n); endOperation( this ), l && t.lineWrapping && 'optimizelegibility' == getComputedStyle(o.lineDiv).textRendering && (o.lineDiv.style.textRendering = 'auto'); } function registerEventHandlers(e) { function finishTouch() { t.activeTouch && ((n = setTimeout(function() { return (t.activeTouch = null); }, 1e3)), (r = t.activeTouch), (r.end = +new Date())); } function isMouseLikeTouchEvent(e) { if (1 != e.touches.length) return !1; var t = e.touches[0]; return t.radiusX <= 1 && t.radiusY <= 1; } function farAway(e, t) { if (null == t.left) return !0; var n = t.left - e.left, r = t.top - e.top; return n * n + r * r > 400; } var t = e.display; G(t.scroller, 'mousedown', operation(e, onMouseDown)), a && s < 11 ? G( t.scroller, 'dblclick', operation(e, function(t) { if (!signalDOMEvent(e, t)) { var n = posFromMouse(e, t); if ( n && !clickInGutter(e, t) && !eventInWidget(e.display, t) ) { e_preventDefault(t); var r = e.findWordAt(n); extendSelection(e.doc, r.anchor, r.head); } } }) ) : G(t.scroller, 'dblclick', function(t) { return signalDOMEvent(e, t) || e_preventDefault(t); }), k || G(t.scroller, 'contextmenu', function(t) { return onContextMenu(e, t); }); var n, r = { end: 0 }; G(t.scroller, 'touchstart', function(i) { if (!signalDOMEvent(e, i) && !isMouseLikeTouchEvent(i)) { t.input.ensurePolled(), clearTimeout(n); var o = +new Date(); (t.activeTouch = { start: o, moved: !1, prev: o - r.end <= 300 ? r : null }), 1 == i.touches.length && ((t.activeTouch.left = i.touches[0].pageX), (t.activeTouch.top = i.touches[0].pageY)); } }), G(t.scroller, 'touchmove', function() { t.activeTouch && (t.activeTouch.moved = !0); }), G(t.scroller, 'touchend', function(n) { var r = t.activeTouch; if ( r && !eventInWidget(t, n) && null != r.left && !r.moved && new Date() - r.start < 300 ) { var i, o = e.coordsChar(t.activeTouch, 'page'); (i = !r.prev || farAway(r, r.prev) ? new he(o, o) : !r.prev.prev || farAway(r, r.prev.prev) ? e.findWordAt(o) : new he( Pos(o.line, 0), clipPos(e.doc, Pos(o.line + 1, 0)) )), e.setSelection( i.anchor, i.head ), e.focus(), e_preventDefault(n); } finishTouch(); }), G( t.scroller, 'touchcancel', finishTouch ), G(t.scroller, 'scroll', function() { t.scroller.clientHeight && (updateScrollTop(e, t.scroller.scrollTop), setScrollLeft( e, t.scroller.scrollLeft, !0 ), signal(e, 'scroll', e)); }), G(t.scroller, 'mousewheel', function(t) { return onScrollWheel(e, t); }), G(t.scroller, 'DOMMouseScroll', function(t) { return onScrollWheel(e, t); }), G(t.wrapper, 'scroll', function() { return (t.wrapper.scrollTop = t.wrapper.scrollLeft = 0); }), (t.dragFunctions = { enter: function(t) { signalDOMEvent(e, t) || e_stop(t); }, over: function(t) { signalDOMEvent(e, t) || (onDragOver(e, t), e_stop(t)); }, start: function(t) { return onDragStart(e, t); }, drop: operation(e, onDrop), leave: function(t) { signalDOMEvent(e, t) || clearDragCursor(e); } }); var i = t.input.getField(); G(i, 'keyup', function(t) { return onKeyUp.call(e, t); }), G( i, 'keydown', operation(e, onKeyDown) ), G(i, 'keypress', operation(e, onKeyPress)), G(i, 'focus', function(t) { return onFocus(e, t); }), G(i, 'blur', function(t) { return onBlur(e, t); }); } function indentLine(e, t, n, r) { var i, o = e.doc; null == n && (n = 'add'), 'smart' == n && (o.mode.indent ? (i = getStateBefore(e, t)) : (n = 'prev')); var a = e.options.tabSize, s = getLine(o, t), l = countColumn(s.text, null, a); s.stateAfter && (s.stateAfter = null); var c, u = s.text.match(/^\s*/)[0]; if (r || /\S/.test(s.text)) { if ( 'smart' == n && ((c = o.mode.indent(i, s.text.slice(u.length), s.text)) == A || c > 150) ) { if (!r) return; n = 'prev'; } } else (c = 0), (n = 'not'); 'prev' == n ? (c = t > o.first ? countColumn(getLine(o, t - 1).text, null, a) : 0) : 'add' == n ? (c = l + e.options.indentUnit) : 'subtract' == n ? (c = l - e.options.indentUnit) : 'number' == typeof n && (c = l + n), (c = Math.max(0, c)); var d = '', p = 0; if (e.options.indentWithTabs) for (var f = Math.floor(c / a); f; --f) (p += a), (d += '\t'); if ((p < c && (d += spaceStr(c - p)), d != u)) return replaceRange( o, d, Pos(t, 0), Pos(t, u.length), '+input' ), (s.stateAfter = null), !0; for (var h = 0; h < o.sel.ranges.length; h++) { var g = o.sel.ranges[h]; if (g.head.line == t && g.head.ch < u.length) { var m = Pos(t, u.length); replaceOneSelection(o, h, new he(m, m)); break; } } } function setLastCopied(e) { ze = e; } function applyTextInput(e, t, n, r, i) { var o = e.doc; (e.display.shift = !1), r || (r = o.sel); var a = e.state.pasteIncoming || 'paste' == i, s = U(t), l = null; if (a && r.ranges.length > 1) if (ze && ze.text.join('\n') == t) { if (r.ranges.length % ze.text.length == 0) { l = []; for (var c = 0; c < ze.text.length; c++) l.push(o.splitLines(ze.text[c])); } } else s.length == r.ranges.length && (l = map(s, function(e) { return [e]; })); for (var u, d = r.ranges.length - 1; d >= 0; d--) { var p = r.ranges[d], f = p.from(), h = p.to(); p.empty() && (n && n > 0 ? (f = Pos(f.line, f.ch - n)) : e.state.overwrite && !a ? (h = Pos( h.line, Math.min( getLine(o, h.line).text.length, h.ch + lst(s).length ) )) : ze && ze.lineWise && ze.text.join('\n') == t && (f = h = Pos(f.line, 0))), (u = e.curOp.updateInput); var g = { from: f, to: h, text: l ? l[d % l.length] : s, origin: i || (a ? 'paste' : e.state.cutIncoming ? 'cut' : '+input') }; makeChange(e.doc, g), signalLater(e, 'inputRead', e, g); } t && !a && triggerElectric( e, t ), ensureCursorVisible(e), (e.curOp.updateInput = u), (e.curOp.typing = !0), (e.state.pasteIncoming = e.state.cutIncoming = !1); } function handlePaste(e, t) { var n = e.clipboardData && e.clipboardData.getData('Text'); if (n) return e.preventDefault(), t.isReadOnly() || t.options.disableInput || runInOp(t, function() { return applyTextInput(t, n, 0, null, 'paste'); }), !0; } function triggerElectric(e, t) { if (e.options.electricChars && e.options.smartIndent) for (var n = e.doc.sel, r = n.ranges.length - 1; r >= 0; r--) { var i = n.ranges[r]; if ( !(i.head.ch > 100 || (r && n.ranges[r - 1].head.line == i.head.line)) ) { var o = e.getModeAt(i.head), a = !1; if (o.electricChars) { for (var s = 0; s < o.electricChars.length; s++) if (t.indexOf(o.electricChars.charAt(s)) > -1) { a = indentLine(e, i.head.line, 'smart'); break; } } else o.electricInput && o.electricInput.test( getLine(e.doc, i.head.line).text.slice(0, i.head.ch) ) && (a = indentLine(e, i.head.line, 'smart')); a && signalLater(e, 'electricInput', e, i.head.line); } } } function copyableRanges(e) { for (var t = [], n = [], r = 0; r < e.doc.sel.ranges.length; r++) { var i = e.doc.sel.ranges[r].head.line, o = { anchor: Pos(i, 0), head: Pos(i + 1, 0) }; n.push(o), t.push(e.getRange(o.anchor, o.head)); } return { text: t, ranges: n }; } function disableBrowserMagic(e, t) { e.setAttribute( 'autocorrect', 'off' ), e.setAttribute('autocapitalize', 'off'), e.setAttribute('spellcheck', !!t); } function hiddenTextarea() { var e = elt( 'textarea', null, null, 'position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none' ), t = elt( 'div', [e], null, 'overflow: hidden; position: relative; width: 3px; height: 0px;' ); return l ? (e.style.width = '1000px') : e.setAttribute( 'wrap', 'off' ), g && (e.style.border = '1px solid black'), disableBrowserMagic(e), t; } function findPosH(e, t, n, r, i) { function findNextLine() { var r = t.line + n; return ( !(r < e.first || r >= e.first + e.size) && ((t = new Pos(r, t.ch, t.sticky)), (s = getLine(e, r))) ); } function moveOnce(r) { var o; if ( null == (o = i ? moveVisually(e.cm, s, t, n) : moveLogically(s, t, n)) ) { if (r || !findNextLine()) return !1; t = endOfLine(i, e.cm, s, t.line, n); } else t = o; return !0; } var o = t, a = n, s = getLine(e, t.line); if ('char' == r) moveOnce(); else if ('column' == r) moveOnce(!0); else if ('word' == r || 'group' == r) for ( var l = null, c = 'group' == r, u = e.cm && e.cm.getHelper(t, 'wordChars'), d = !0; !(n < 0) || moveOnce(!d); d = !1 ) { var p = s.text.charAt(t.ch) || '\n', f = isWordChar(p, u) ? 'w' : c && '\n' == p ? 'n' : !c || /\s/.test(p) ? null : 'p'; if ((!c || d || f || (f = 's'), l && l != f)) { n < 0 && ((n = 1), moveOnce(), (t.sticky = 'after')); break; } if ((f && (l = f), n > 0 && !moveOnce(!d))) break; } var h = skipAtomic(e, t, o, a, !0); return equalCursorPos(o, h) && (h.hitSide = !0), h; } function findPosV(e, t, n, r) { var i, o = e.doc, a = t.left; if ('page' == r) { var s = Math.min( e.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight ), l = Math.max(s - 0.5 * textHeight(e.display), 3); i = (n > 0 ? t.bottom : t.top) + n * l; } else 'line' == r && (i = n > 0 ? t.bottom + 3 : t.top - 3); for (var c; (c = coordsChar(e, a, i)), c.outside; ) { if (n < 0 ? i <= 0 : i >= o.height) { c.hitSide = !0; break; } i += 5 * n; } return c; } function posToDOM(e, t) { var n = findViewForLine(e, t.line); if (!n || n.hidden) return null; var r = getLine(e.doc, t.line), i = mapFromLineView(n, r, t.line), o = getOrder(r, e.doc.direction), a = 'left'; if (o) { a = getBidiPartAt(o, t.ch) % 2 ? 'right' : 'left'; } var s = nodeAndOffsetInLineMap(i.map, t.ch, a); return (s.offset = 'right' == s.collapse ? s.end : s.start), s; } function isInGutter(e) { for ( var t = e; t; t = t.parentNode ) if (/CodeMirror-gutter-wrapper/.test(t.className)) return !0; return !1; } function badPos(e, t) { return t && (e.bad = !0), e; } function domTextBetween(e, t, n, r, i) { function recognizeMarker(e) { return function(t) { return t.id == e; }; } function close() { a && ((o += s), (a = !1)); } function addText(e) { e && (close(), (o += e)); } function walk(t) { if (1 == t.nodeType) { var n = t.getAttribute('cm-text'); if (null != n) return void addText(n || t.textContent.replace(/\u200b/g, '')); var o, l = t.getAttribute('cm-marker'); if (l) { var c = e.findMarks( Pos(r, 0), Pos(i + 1, 0), recognizeMarker(+l) ); return void (c.length && (o = c[0].find()) && addText(getBetween(e.doc, o.from, o.to).join(s))); } if ('false' == t.getAttribute('contenteditable')) return; var u = /^(pre|div|p)$/i.test(t.nodeName); u && close(); for (var d = 0; d < t.childNodes.length; d++) walk(t.childNodes[d]); u && (a = !0); } else 3 == t.nodeType && addText(t.nodeValue); } for ( var o = '', a = !1, s = e.doc.lineSeparator(); walk(t), t != n; ) t = t.nextSibling; return o; } function domToPos(e, t, n) { var r; if (t == e.display.lineDiv) { if (!(r = e.display.lineDiv.childNodes[n])) return badPos(e.clipPos(Pos(e.display.viewTo - 1)), !0); (t = null), (n = 0); } else for (r = t; ; r = r.parentNode) { if (!r || r == e.display.lineDiv) return null; if (r.parentNode && r.parentNode == e.display.lineDiv) break; } for (var i = 0; i < e.display.view.length; i++) { var o = e.display.view[i]; if (o.node == r) return locateNodeInLineView(o, t, n); } } function locateNodeInLineView(e, t, n) { function find(t, n, r) { for ( var i = -1; i < (c ? c.length : 0); i++ ) for (var o = i < 0 ? l.map : c[i], a = 0; a < o.length; a += 3) { var s = o[a + 2]; if (s == t || s == n) { var u = lineNo(i < 0 ? e.line : e.rest[i]), d = o[a] + r; return (r < 0 || s != t) && (d = o[a + (r ? 1 : 0)]), Pos(u, d); } } } var r = e.text.firstChild, i = !1; if (!t || !contains(r, t)) return badPos(Pos(lineNo(e.line), 0), !0); if (t == r && ((i = !0), (t = r.childNodes[n]), (n = 0), !t)) { var o = e.rest ? lst(e.rest) : e.line; return badPos(Pos(lineNo(o), o.text.length), i); } var a = 3 == t.nodeType ? t : null, s = t; for ( a || 1 != t.childNodes.length || 3 != t.firstChild.nodeType || ((a = t.firstChild), n && (n = a.nodeValue.length)); s.parentNode != r; ) s = s.parentNode; var l = e.measure, c = l.maps, u = find(a, s, n); if (u) return badPos(u, i); for ( var d = s.nextSibling, p = a ? a.nodeValue.length - n : 0; d; d = d.nextSibling ) { if ((u = find(d, d.firstChild, 0))) return badPos(Pos(u.line, u.ch - p), i); p += d.textContent.length; } for (var f = s.previousSibling, h = n; f; f = f.previousSibling) { if ((u = find(f, f.firstChild, -1))) return badPos(Pos(u.line, u.ch + h), i); h += f.textContent.length; } } function fromTextArea(e, t) { function save() { e.value = a.getValue(); } if ( ((t = t ? copyObj(t) : {}), (t.value = e.value), !t.tabindex && e.tabIndex && (t.tabindex = e.tabIndex), !t.placeholder && e.placeholder && (t.placeholder = e.placeholder), null == t.autofocus) ) { var n = activeElt(); t.autofocus = n == e || (null != e.getAttribute('autofocus') && n == document.body); } var r; if (e.form && (G(e.form, 'submit', save), !t.leaveSubmitMethodAlone)) { var i = e.form; r = i.submit; try { var o = (i.submit = function() { save(), (i.submit = r), i.submit(), (i.submit = o); }); } catch (e) {} } (t.finishInit = function(t) { (t.save = save), (t.getTextArea = function() { return e; }), (t.toTextArea = function() { (t.toTextArea = isNaN), save(), e.parentNode.removeChild( t.getWrapperElement() ), (e.style.display = ''), e.form && (off(e.form, 'submit', save), 'function' == typeof e.form.submit && (e.form.submit = r)); }); }), (e.style.display = 'none'); var a = CodeMirror$1(function(t) { return e.parentNode.insertBefore(t, e.nextSibling); }, t); return a; } var e = navigator.userAgent, t = navigator.platform, n = /gecko\/\d/i.test(e), r = /MSIE \d/.test(e), i = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e), o = /Edge\/(\d+)/.exec(e), a = r || i || o, s = a && (r ? document.documentMode || 6 : +(o || i)[1]), l = !o && /WebKit\//.test(e), c = l && /Qt\/\d+\.\d+/.test(e), u = !o && /Chrome\//.test(e), d = /Opera\//.test(e), p = /Apple Computer/.test(navigator.vendor), f = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e), h = /PhantomJS/.test(e), g = !o && /AppleWebKit/.test(e) && /Mobile\/\w+/.test(e), m = /Android/.test(e), v = g || m || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e), y = g || /Mac/.test(t), b = /\bCrOS\b/.test(e), x = /win/i.test(t), C = d && e.match(/Version\/(\d*\.\d*)/); C && (C = Number(C[1])), C && C >= 15 && ((d = !1), (l = !0)); var w, S = y && (c || (d && (null == C || C < 12.11))), k = n || (a && s >= 9), L = function(e, t) { var n = e.className, r = classTest(t).exec(n); if (r) { var i = n.slice(r.index + r[0].length); e.className = n.slice(0, r.index) + (i ? r[1] + i : ''); } }; w = document.createRange ? function(e, t, n, r) { var i = document.createRange(); return i.setEnd(r || e, n), i.setStart(e, t), i; } : function(e, t, n) { var r = document.body.createTextRange(); try { r.moveToElementText(e.parentNode); } catch (e) { return r; } return r.collapse(!0), r.moveEnd('character', n), r.moveStart( 'character', t ), r; }; var M = function(e) { e.select(); }; g ? (M = function(e) { (e.selectionStart = 0), (e.selectionEnd = e.value.length); }) : a && (M = function(e) { try { e.select(); } catch (e) {} }); var T = function() { this.id = null; }; T.prototype.set = function(e, t) { clearTimeout(this.id), (this.id = setTimeout(t, e)); }; var O, P, N = 30, A = { toString: function() { return 'CodeMirror.Pass'; } }, D = { scroll: !1 }, H = { origin: '*mouse' }, W = { origin: '+move' }, E = [''], I = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/, F = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/, B = !1, z = !1, R = null, V = (function() { function charType(n) { return n <= 247 ? e.charAt(n) : 1424 <= n && n <= 1524 ? 'R' : 1536 <= n && n <= 1785 ? t.charAt(n - 1536) : 1774 <= n && n <= 2220 ? 'r' : 8192 <= n && n <= 8203 ? 'w' : 8204 == n ? 'b' : 'L'; } function BidiSpan(e, t, n) { (this.level = e), (this.from = t), (this.to = n); } var e = 'bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN', t = 'nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111', n = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/, r = /[stwN]/, i = /[LRr]/, o = /[Lb1n]/, a = /[1n]/; return function(e, t) { var s = 'ltr' == t ? 'L' : 'R'; if (0 == e.length || ('ltr' == t && !n.test(e))) return !1; for (var l = e.length, c = [], u = 0; u < l; ++u) c.push(charType(e.charCodeAt(u))); for (var d = 0, p = s; d < l; ++d) { var f = c[d]; 'm' == f ? (c[d] = p) : (p = f); } for (var h = 0, g = s; h < l; ++h) { var m = c[h]; '1' == m && 'r' == g ? (c[h] = 'n') : i.test(m) && ((g = m), 'r' == m && (c[h] = 'R')); } for (var v = 1, y = c[0]; v < l - 1; ++v) { var b = c[v]; '+' == b && '1' == y && '1' == c[v + 1] ? (c[v] = '1') : ',' != b || y != c[v + 1] || ('1' != y && 'n' != y) || (c[v] = y), (y = b); } for (var x = 0; x < l; ++x) { var C = c[x]; if (',' == C) c[x] = 'N'; else if ('%' == C) { var w = void 0; for (w = x + 1; w < l && '%' == c[w]; ++w); for ( var S = (x && '!' == c[x - 1]) || (w < l && '1' == c[w]) ? '1' : 'N', k = x; k < w; ++k ) c[k] = S; x = w - 1; } } for (var L = 0, M = s; L < l; ++L) { var T = c[L]; 'L' == M && '1' == T ? (c[L] = 'L') : i.test(T) && (M = T); } for (var O = 0; O < l; ++O) if (r.test(c[O])) { var P = void 0; for (P = O + 1; P < l && r.test(c[P]); ++P); for ( var N = 'L' == (O ? c[O - 1] : s), A = 'L' == (P < l ? c[P] : s), D = N == A ? (N ? 'L' : 'R') : s, H = O; H < P; ++H ) c[H] = D; O = P - 1; } for (var W, E = [], I = 0; I < l; ) if (o.test(c[I])) { var F = I; for (++I; I < l && o.test(c[I]); ++I); E.push(new BidiSpan(0, F, I)); } else { var B = I, z = E.length; for (++I; I < l && 'L' != c[I]; ++I); for (var R = B; R < I; ) if (a.test(c[R])) { B < R && E.splice(z, 0, new BidiSpan(1, B, R)); var V = R; for (++R; R < I && a.test(c[R]); ++R); E.splice(z, 0, new BidiSpan(2, V, R)), (B = R); } else ++R; B < I && E.splice(z, 0, new BidiSpan(1, B, I)); } return 1 == E[0].level && (W = e.match(/^\s+/)) && ((E[0].from = W[0].length), E.unshift( new BidiSpan(0, 0, W[0].length) )), 1 == lst(E).level && (W = e.match(/\s+$/)) && ((lst(E).to -= W[0].length), E.push( new BidiSpan(0, l - W[0].length, l) )), 'rtl' == t ? E.reverse() : E; }; })(), j = [], G = function(e, t, n) { if (e.addEventListener) e.addEventListener(t, n, !1); else if (e.attachEvent) e.attachEvent('on' + t, n); else { var r = e._handlers || (e._handlers = {}); r[t] = (r[t] || j).concat(n); } }, _ = (function() { if (a && s < 9) return !1; var e = elt('div'); return 'draggable' in e || 'dragDrop' in e; })(), U = 3 != '\n\nb'.split(/\n/).length ? function(e) { for (var t = 0, n = [], r = e.length; t <= r; ) { var i = e.indexOf('\n', t); -1 == i && (i = e.length); var o = e.slice(t, '\r' == e.charAt(i - 1) ? i - 1 : i), a = o.indexOf('\r'); -1 != a ? (n.push(o.slice(0, a)), (t += a + 1)) : (n.push(o), (t = i + 1)); } return n; } : function(e) { return e.split(/\r\n?|\n/); }, K = window.getSelection ? function(e) { try { return e.selectionStart != e.selectionEnd; } catch (e) { return !1; } } : function(e) { var t; try { t = e.ownerDocument.selection.createRange(); } catch (e) {} return ( !(!t || t.parentElement() != e) && 0 != t.compareEndPoints('StartToEnd', t) ); }, $ = (function() { var e = elt('div'); return ( 'oncopy' in e || (e.setAttribute('oncopy', 'return;'), 'function' == typeof e.oncopy) ); })(), q = null, X = {}, Y = {}, Z = {}, J = function(e, t) { (this.pos = this.start = 0), (this.string = e), (this.tabSize = t || 8), (this.lastColumnPos = this.lastColumnValue = 0), (this.lineStart = 0); }; (J.prototype.eol = function() { return this.pos >= this.string.length; }), (J.prototype.sol = function() { return this.pos == this.lineStart; }), (J.prototype.peek = function() { return this.string.charAt(this.pos) || void 0; }), (J.prototype.next = function() { if (this.pos < this.string.length) return this.string.charAt(this.pos++); }), (J.prototype.eat = function(e) { var t = this.string.charAt(this.pos); if ('string' == typeof e ? t == e : t && (e.test ? e.test(t) : e(t))) return ++this.pos, t; }), (J.prototype.eatWhile = function(e) { for (var t = this.pos; this.eat(e); ); return this.pos > t; }), (J.prototype.eatSpace = function() { for ( var e = this, t = this.pos; /[\s\u00a0]/.test(this.string.charAt(this.pos)); ) ++e.pos; return this.pos > t; }), (J.prototype.skipToEnd = function() { this.pos = this.string.length; }), (J.prototype.skipTo = function(e) { var t = this.string.indexOf(e, this.pos); if (t > -1) return (this.pos = t), !0; }), (J.prototype.backUp = function(e) { this.pos -= e; }), (J.prototype.column = function() { return this.lastColumnPos < this.start && ((this.lastColumnValue = countColumn( this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue )), (this.lastColumnPos = this.start)), this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); }), (J.prototype.indentation = function() { return ( countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) ); }), (J.prototype.match = function(e, t, n) { if ('string' != typeof e) { var r = this.string.slice(this.pos).match(e); return r && r.index > 0 ? null : (r && !1 !== t && (this.pos += r[0].length), r); } var i = function(e) { return n ? e.toLowerCase() : e; }; if (i(this.string.substr(this.pos, e.length)) == i(e)) return !1 !== t && (this.pos += e.length), !0; }), (J.prototype.current = function() { return this.string.slice(this.start, this.pos); }), (J.prototype.hideFirstChars = function(e, t) { this.lineStart += e; try { return t(); } finally { this.lineStart -= e; } }); var Q = function(e, t, n) { (this.text = e), attachMarkedSpans(this, t), (this.height = n ? n(this) : 1); }; (Q.prototype.lineNo = function() { return lineNo(this); }), eventMixin(Q); var ee, te = {}, ne = {}, re = null, ie = null, oe = { left: 0, right: 0, top: 0, bottom: 0 }, ae = function(e, t, n) { this.cm = n; var r = (this.vert = elt( 'div', [elt('div', null, null, 'min-width: 1px')], 'CodeMirror-vscrollbar' )), i = (this.horiz = elt( 'div', [elt('div', null, null, 'height: 100%; min-height: 1px')], 'CodeMirror-hscrollbar' )); e(r), e(i), G(r, 'scroll', function() { r.clientHeight && t(r.scrollTop, 'vertical'); }), G(i, 'scroll', function() { i.clientWidth && t(i.scrollLeft, 'horizontal'); }), (this.checkedZeroWidth = !1), a && s < 8 && (this.horiz.style.minHeight = this.vert.style.minWidth = '18px'); }; (ae.prototype.update = function(e) { var t = e.scrollWidth > e.clientWidth + 1, n = e.scrollHeight > e.clientHeight + 1, r = e.nativeBarWidth; if (n) { (this.vert.style.display = 'block'), (this.vert.style.bottom = t ? r + 'px' : '0'); var i = e.viewHeight - (t ? r : 0); this.vert.firstChild.style.height = Math.max(0, e.scrollHeight - e.clientHeight + i) + 'px'; } else (this.vert.style.display = ''), (this.vert.firstChild.style.height = '0'); if (t) { (this.horiz.style.display = 'block'), (this.horiz.style.right = n ? r + 'px' : '0'), (this.horiz.style.left = e.barLeft + 'px'); var o = e.viewWidth - e.barLeft - (n ? r : 0); this.horiz.firstChild.style.width = Math.max(0, e.scrollWidth - e.clientWidth + o) + 'px'; } else (this.horiz.style.display = ''), (this.horiz.firstChild.style.width = '0'); return !this.checkedZeroWidth && e.clientHeight > 0 && (0 == r && this.zeroWidthHack(), (this.checkedZeroWidth = !0)), { right: n ? r : 0, bottom: t ? r : 0 }; }), (ae.prototype.setScrollLeft = function(e) { this.horiz.scrollLeft != e && (this.horiz.scrollLeft = e), this .disableHoriz && this.enableZeroWidthBar(this.horiz, this.disableHoriz, 'horiz'); }), (ae.prototype.setScrollTop = function(e) { this.vert.scrollTop != e && (this.vert.scrollTop = e), this .disableVert && this.enableZeroWidthBar(this.vert, this.disableVert, 'vert'); }), (ae.prototype.zeroWidthHack = function() { var e = y && !f ? '12px' : '18px'; (this.horiz.style.height = this.vert.style.width = e), (this.horiz.style.pointerEvents = this.vert.style.pointerEvents = 'none'), (this.disableHoriz = new T()), (this.disableVert = new T()); }), (ae.prototype.enableZeroWidthBar = function(e, t, n) { function maybeDisable() { var r = e.getBoundingClientRect(); ('vert' == n ? document.elementFromPoint(r.right - 1, (r.top + r.bottom) / 2) : document.elementFromPoint( (r.right + r.left) / 2, r.bottom - 1 )) != e ? (e.style.pointerEvents = 'none') : t.set(1e3, maybeDisable); } (e.style.pointerEvents = 'auto'), t.set(1e3, maybeDisable); }), (ae.prototype.clear = function() { var e = this.horiz.parentNode; e.removeChild(this.horiz), e.removeChild(this.vert); }); var se = function() {}; (se.prototype.update = function() { return { bottom: 0, right: 0 }; }), (se.prototype.setScrollLeft = function() {}), (se.prototype.setScrollTop = function() {}), (se.prototype.clear = function() {}); var le = { native: ae, null: se }, ce = 0, ue = function(e, t, n) { var r = e.display; (this.viewport = t), (this.visible = visibleLines( r, e.doc, t )), (this.editorIsHidden = !r.wrapper .offsetWidth), (this.wrapperHeight = r.wrapper.clientHeight), (this.wrapperWidth = r.wrapper.clientWidth), (this.oldDisplayWidth = displayWidth( e )), (this.force = n), (this.dims = getDimensions( e )), (this.events = []); }; (ue.prototype.signal = function(e, t) { hasHandler(e, t) && this.events.push(arguments); }), (ue.prototype.finish = function() { for (var e = this, t = 0; t < this.events.length; t++) signal.apply(null, e.events[t]); }); var de = 0, pe = null; a ? (pe = -0.53) : n ? (pe = 15) : u ? (pe = -0.7) : p && (pe = -1 / 3); var fe = function(e, t) { (this.ranges = e), (this.primIndex = t); }; (fe.prototype.primary = function() { return this.ranges[this.primIndex]; }), (fe.prototype.equals = function(e) { var t = this; if (e == this) return !0; if ( e.primIndex != this.primIndex || e.ranges.length != this.ranges.length ) return !1; for (var n = 0; n < this.ranges.length; n++) { var r = t.ranges[n], i = e.ranges[n]; if ( !equalCursorPos(r.anchor, i.anchor) || !equalCursorPos(r.head, i.head) ) return !1; } return !0; }), (fe.prototype.deepCopy = function() { for (var e = this, t = [], n = 0; n < this.ranges.length; n++) t[n] = new he(copyPos(e.ranges[n].anchor), copyPos(e.ranges[n].head)); return new fe(t, this.primIndex); }), (fe.prototype.somethingSelected = function() { for (var e = this, t = 0; t < this.ranges.length; t++) if (!e.ranges[t].empty()) return !0; return !1; }), (fe.prototype.contains = function(e, t) { var n = this; t || (t = e); for (var r = 0; r < this.ranges.length; r++) { var i = n.ranges[r]; if (cmp(t, i.from()) >= 0 && cmp(e, i.to()) <= 0) return r; } return -1; }); var he = function(e, t) { (this.anchor = e), (this.head = t); }; (he.prototype.from = function() { return minPos(this.anchor, this.head); }), (he.prototype.to = function() { return maxPos(this.anchor, this.head); }), (he.prototype.empty = function() { return ( this.head.line == this.anchor.line && this.head.ch == this.anchor.ch ); }); var ge = function(e) { var t = this; (this.lines = e), (this.parent = null); for (var n = 0, r = 0; r < e.length; ++r) (e[r].parent = t), (n += e[r].height); this.height = n; }; (ge.prototype.chunkSize = function() { return this.lines.length; }), (ge.prototype.removeInner = function(e, t) { for (var n = this, r = e, i = e + t; r < i; ++r) { var o = n.lines[r]; (n.height -= o.height), cleanUpLine(o), signalLater(o, 'delete'); } this.lines.splice(e, t); }), (ge.prototype.collapse = function(e) { e.push.apply(e, this.lines); }), (ge.prototype.insertInner = function(e, t, n) { var r = this; (this.height += n), (this.lines = this.lines .slice(0, e) .concat(t) .concat(this.lines.slice(e))); for (var i = 0; i < t.length; ++i) t[i].parent = r; }), (ge.prototype.iterN = function(e, t, n) { for (var r = this, i = e + t; e < i; ++e) if (n(r.lines[e])) return !0; }); var me = function(e) { var t = this; this.children = e; for (var n = 0, r = 0, i = 0; i < e.length; ++i) { var o = e[i]; (n += o.chunkSize()), (r += o.height), (o.parent = t); } (this.size = n), (this.height = r), (this.parent = null); }; (me.prototype.chunkSize = function() { return this.size; }), (me.prototype.removeInner = function(e, t) { var n = this; this.size -= t; for (var r = 0; r < this.children.length; ++r) { var i = n.children[r], o = i.chunkSize(); if (e < o) { var a = Math.min(t, o - e), s = i.height; if ( (i.removeInner(e, a), (n.height -= s - i.height), o == a && (n.children.splice(r--, 1), (i.parent = null)), 0 == (t -= a)) ) break; e = 0; } else e -= o; } if ( this.size - t < 25 && (this.children.length > 1 || !(this.children[0] instanceof ge)) ) { var l = []; this.collapse(l), (this.children = [ new ge(l) ]), (this.children[0].parent = this); } }), (me.prototype.collapse = function(e) { for (var t = this, n = 0; n < this.children.length; ++n) t.children[n].collapse(e); }), (me.prototype.insertInner = function(e, t, n) { var r = this; (this.size += t.length), (this.height += n); for (var i = 0; i < this.children.length; ++i) { var o = r.children[i], a = o.chunkSize(); if (e <= a) { if ((o.insertInner(e, t, n), o.lines && o.lines.length > 50)) { for ( var s = o.lines.length % 25 + 25, l = s; l < o.lines.length; ) { var c = new ge(o.lines.slice(l, (l += 25))); (o.height -= c.height), r.children.splice( ++i, 0, c ), (c.parent = r); } (o.lines = o.lines.slice(0, s)), r.maybeSpill(); } break; } e -= a; } }), (me.prototype.maybeSpill = function() { if (!(this.children.length <= 10)) { var e = this; do { var t = e.children.splice(e.children.length - 5, 5), n = new me(t); if (e.parent) { (e.size -= n.size), (e.height -= n.height); var r = indexOf(e.parent.children, e); e.parent.children.splice(r + 1, 0, n); } else { var i = new me(e.children); (i.parent = e), (e.children = [i, n]), (e = i); } n.parent = e.parent; } while (e.children.length > 10); e.parent.maybeSpill(); } }), (me.prototype.iterN = function(e, t, n) { for (var r = this, i = 0; i < this.children.length; ++i) { var o = r.children[i], a = o.chunkSize(); if (e < a) { var s = Math.min(t, a - e); if (o.iterN(e, s, n)) return !0; if (0 == (t -= s)) break; e = 0; } else e -= a; } }); var ve = function(e, t, n) { var r = this; if (n) for (var i in n) n.hasOwnProperty(i) && (r[i] = n[i]); (this.doc = e), (this.node = t); }; (ve.prototype.clear = function() { var e = this, t = this.doc.cm, n = this.line.widgets, r = this.line, i = lineNo(r); if (null != i && n) { for (var o = 0; o < n.length; ++o) n[o] == e && n.splice(o--, 1); n.length || (r.widgets = null); var a = widgetHeight(this); updateLineHeight(r, Math.max(0, r.height - a)), t && (runInOp(t, function() { adjustScrollWhenAboveVisible( t, r, -a ), regLineChange(t, i, 'widget'); }), signalLater(t, 'lineWidgetCleared', t, this, i)); } }), (ve.prototype.changed = function() { var e = this, t = this.height, n = this.doc.cm, r = this.line; this.height = null; var i = widgetHeight(this) - t; i && (updateLineHeight(r, r.height + i), n && runInOp(n, function() { (n.curOp.forceUpdate = !0), adjustScrollWhenAboveVisible(n, r, i), signalLater(n, 'lineWidgetChanged', n, e, lineNo(r)); })); }), eventMixin(ve); var ye = 0, be = function(e, t) { (this.lines = []), (this.type = t), (this.doc = e), (this.id = ++ye); }; (be.prototype.clear = function() { var e = this; if (!this.explicitlyCleared) { var t = this.doc.cm, n = t && !t.curOp; if ((n && startOperation(t), hasHandler(this, 'clear'))) { var r = this.find(); r && signalLater(this, 'clear', r.from, r.to); } for (var i = null, o = null, a = 0; a < this.lines.length; ++a) { var s = e.lines[a], l = getMarkedSpanFor(s.markedSpans, e); t && !e.collapsed ? regLineChange(t, lineNo(s), 'text') : t && (null != l.to && (o = lineNo(s)), null != l.from && (i = lineNo(s))), (s.markedSpans = removeMarkedSpan( s.markedSpans, l )), null == l.from && e.collapsed && !lineIsHidden(e.doc, s) && t && updateLineHeight(s, textHeight(t.display)); } if (t && this.collapsed && !t.options.lineWrapping) for (var c = 0; c < this.lines.length; ++c) { var u = visualLine(e.lines[c]), d = lineLength(u); d > t.display.maxLineLength && ((t.display.maxLine = u), (t.display.maxLineLength = d), (t.display.maxLineChanged = !0)); } null != i && t && this.collapsed && regChange( t, i, o + 1 ), (this.lines.length = 0), (this.explicitlyCleared = !0), this .atomic && this.doc.cantEdit && ((this.doc.cantEdit = !1), t && reCheckSelection(t.doc)), t && signalLater(t, 'markerCleared', t, this, i, o), n && endOperation(t), this.parent && this.parent.clear(); } }), (be.prototype.find = function(e, t) { var n = this; null == e && 'bookmark' == this.type && (e = 1); for (var r, i, o = 0; o < this.lines.length; ++o) { var a = n.lines[o], s = getMarkedSpanFor(a.markedSpans, n); if (null != s.from && ((r = Pos(t ? a : lineNo(a), s.from)), -1 == e)) return r; if (null != s.to && ((i = Pos(t ? a : lineNo(a), s.to)), 1 == e)) return i; } return r && { from: r, to: i }; }), (be.prototype.changed = function() { var e = this, t = this.find(-1, !0), n = this, r = this.doc.cm; t && r && runInOp(r, function() { var i = t.line, o = lineNo(t.line), a = findViewForLine(r, o); if ( (a && (clearLineMeasurementCacheFor( a ), (r.curOp.selectionChanged = r.curOp.forceUpdate = !0)), (r.curOp.updateMaxLine = !0), !lineIsHidden( n.doc, i ) && null != n.height) ) { var s = n.height; n.height = null; var l = widgetHeight(n) - s; l && updateLineHeight(i, i.height + l); } signalLater(r, 'markerChanged', r, e); }); }), (be.prototype.attachLine = function(e) { if (!this.lines.length && this.doc.cm) { var t = this.doc.cm.curOp; (t.maybeHiddenMarkers && -1 != indexOf(t.maybeHiddenMarkers, this)) || (t.maybeUnhiddenMarkers || (t.maybeUnhiddenMarkers = [])) .push(this); } this.lines.push(e); }), (be.prototype.detachLine = function(e) { if ( (this.lines.splice(indexOf(this.lines, e), 1), !this.lines.length && this.doc.cm) ) { var t = this.doc.cm.curOp; (t.maybeHiddenMarkers || (t.maybeHiddenMarkers = [])).push(this); } }), eventMixin(be); var xe = function(e, t) { var n = this; (this.markers = e), (this.primary = t); for (var r = 0; r < e.length; ++r) e[r].parent = n; }; (xe.prototype.clear = function() { var e = this; if (!this.explicitlyCleared) { this.explicitlyCleared = !0; for (var t = 0; t < this.markers.length; ++t) e.markers[t].clear(); signalLater(this, 'clear'); } }), (xe.prototype.find = function(e, t) { return this.primary.find(e, t); }), eventMixin(xe); var Ce = 0, we = function(e, t, n, r, i) { if (!(this instanceof we)) return new we(e, t, n, r, i); null == n && (n = 0), me.call(this, [ new ge([new Q('', null)]) ]), (this.first = n), (this.scrollTop = this.scrollLeft = 0), (this.cantEdit = !1), (this.cleanGeneration = 1), (this.frontier = n); var o = Pos(n, 0); (this.sel = simpleSelection(o)), (this.history = new History( null )), (this.id = ++Ce), (this.modeOption = t), (this.lineSep = r), (this.direction = 'rtl' == i ? 'rtl' : 'ltr'), (this.extend = !1), 'string' == typeof e && (e = this.splitLines(e)), updateDoc(this, { from: o, to: o, text: e }), setSelection(this, simpleSelection(o), D); }; (we.prototype = createObj(me.prototype, { constructor: we, iter: function(e, t, n) { n ? this.iterN(e - this.first, t - e, n) : this.iterN(this.first, this.first + this.size, e); }, insert: function(e, t) { for (var n = 0, r = 0; r < t.length; ++r) n += t[r].height; this.insertInner(e - this.first, t, n); }, remove: function(e, t) { this.removeInner(e - this.first, t); }, getValue: function(e) { var t = getLines(this, this.first, this.first + this.size); return !1 === e ? t : t.join(e || this.lineSeparator()); }, setValue: docMethodOp(function(e) { var t = Pos(this.first, 0), n = this.first + this.size - 1; makeChange( this, { from: t, to: Pos(n, getLine(this, n).text.length), text: this.splitLines(e), origin: 'setValue', full: !0 }, !0 ), this.cm && scrollToCoords(this.cm, 0, 0), setSelection(this, simpleSelection(t), D); }), replaceRange: function(e, t, n, r) { (t = clipPos(this, t)), (n = n ? clipPos(this, n) : t), replaceRange( this, e, t, n, r ); }, getRange: function(e, t, n) { var r = getBetween(this, clipPos(this, e), clipPos(this, t)); return !1 === n ? r : r.join(n || this.lineSeparator()); }, getLine: function(e) { var t = this.getLineHandle(e); return t && t.text; }, getLineHandle: function(e) { if (isLine(this, e)) return getLine(this, e); }, getLineNumber: function(e) { return lineNo(e); }, getLineHandleVisualStart: function(e) { return 'number' == typeof e && (e = getLine(this, e)), visualLine(e); }, lineCount: function() { return this.size; }, firstLine: function() { return this.first; }, lastLine: function() { return this.first + this.size - 1; }, clipPos: function(e) { return clipPos(this, e); }, getCursor: function(e) { var t = this.sel.primary(); return null == e || 'head' == e ? t.head : 'anchor' == e ? t.anchor : 'end' == e || 'to' == e || !1 === e ? t.to() : t.from(); }, listSelections: function() { return this.sel.ranges; }, somethingSelected: function() { return this.sel.somethingSelected(); }, setCursor: docMethodOp(function(e, t, n) { setSimpleSelection( this, clipPos(this, 'number' == typeof e ? Pos(e, t || 0) : e), null, n ); }), setSelection: docMethodOp(function(e, t, n) { setSimpleSelection(this, clipPos(this, e), clipPos(this, t || e), n); }), extendSelection: docMethodOp(function(e, t, n) { extendSelection(this, clipPos(this, e), t && clipPos(this, t), n); }), extendSelections: docMethodOp(function(e, t) { extendSelections(this, clipPosArray(this, e), t); }), extendSelectionsBy: docMethodOp(function(e, t) { extendSelections( this, clipPosArray(this, map(this.sel.ranges, e)), t ); }), setSelections: docMethodOp(function(e, t, n) { var r = this; if (e.length) { for (var i = [], o = 0; o < e.length; o++) i[o] = new he(clipPos(r, e[o].anchor), clipPos(r, e[o].head)); null == t && (t = Math.min(e.length - 1, this.sel.primIndex)), setSelection( this, normalizeSelection(i, t), n ); } }), addSelection: docMethodOp(function(e, t, n) { var r = this.sel.ranges.slice(0); r.push( new he(clipPos(this, e), clipPos(this, t || e)) ), setSelection(this, normalizeSelection(r, r.length - 1), n); }), getSelection: function(e) { for (var t, n = this, r = this.sel.ranges, i = 0; i < r.length; i++) { var o = getBetween(n, r[i].from(), r[i].to()); t = t ? t.concat(o) : o; } return !1 === e ? t : t.join(e || this.lineSeparator()); }, getSelections: function(e) { for ( var t = this, n = [], r = this.sel.ranges, i = 0; i < r.length; i++ ) { var o = getBetween(t, r[i].from(), r[i].to()); !1 !== e && (o = o.join(e || t.lineSeparator())), (n[i] = o); } return n; }, replaceSelection: function(e, t, n) { for (var r = [], i = 0; i < this.sel.ranges.length; i++) r[i] = e; this.replaceSelections(r, t, n || '+input'); }, replaceSelections: docMethodOp(function(e, t, n) { for ( var r = this, i = [], o = this.sel, a = 0; a < o.ranges.length; a++ ) { var s = o.ranges[a]; i[a] = { from: s.from(), to: s.to(), text: r.splitLines(e[a]), origin: n }; } for ( var l = t && 'end' != t && computeReplacedSel(this, i, t), c = i.length - 1; c >= 0; c-- ) makeChange(r, i[c]); l ? setSelectionReplaceHistory(this, l) : this.cm && ensureCursorVisible(this.cm); }), undo: docMethodOp(function() { makeChangeFromHistory(this, 'undo'); }), redo: docMethodOp(function() { makeChangeFromHistory(this, 'redo'); }), undoSelection: docMethodOp(function() { makeChangeFromHistory(this, 'undo', !0); }), redoSelection: docMethodOp(function() { makeChangeFromHistory(this, 'redo', !0); }), setExtending: function(e) { this.extend = e; }, getExtending: function() { return this.extend; }, historySize: function() { for ( var e = this.history, t = 0, n = 0, r = 0; r < e.done.length; r++ ) e.done[r].ranges || ++t; for (var i = 0; i < e.undone.length; i++) e.undone[i].ranges || ++n; return { undo: t, redo: n }; }, clearHistory: function() { this.history = new History(this.history.maxGeneration); }, markClean: function() { this.cleanGeneration = this.changeGeneration(!0); }, changeGeneration: function(e) { return e && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null), this .history.generation; }, isClean: function(e) { return this.history.generation == (e || this.cleanGeneration); }, getHistory: function() { return { done: copyHistoryArray(this.history.done), undone: copyHistoryArray(this.history.undone) }; }, setHistory: function(e) { var t = (this.history = new History(this.history.maxGeneration)); (t.done = copyHistoryArray( e.done.slice(0), null, !0 )), (t.undone = copyHistoryArray(e.undone.slice(0), null, !0)); }, setGutterMarker: docMethodOp(function(e, t, n) { return changeLine(this, e, 'gutter', function(e) { var r = e.gutterMarkers || (e.gutterMarkers = {}); return (r[t] = n), !n && isEmpty(r) && (e.gutterMarkers = null), !0; }); }), clearGutter: docMethodOp(function(e) { var t = this; this.iter(function(n) { n.gutterMarkers && n.gutterMarkers[e] && changeLine(t, n, 'gutter', function() { return (n.gutterMarkers[ e ] = null), isEmpty(n.gutterMarkers) && (n.gutterMarkers = null), !0; }); }); }), lineInfo: function(e) { var t; if ('number' == typeof e) { if (!isLine(this, e)) return null; if (((t = e), !(e = getLine(this, e)))) return null; } else if (null == (t = lineNo(e))) return null; return { line: t, handle: e, text: e.text, gutterMarkers: e.gutterMarkers, textClass: e.textClass, bgClass: e.bgClass, wrapClass: e.wrapClass, widgets: e.widgets }; }, addLineClass: docMethodOp(function(e, t, n) { return changeLine( this, e, 'gutter' == t ? 'gutter' : 'class', function(e) { var r = 'text' == t ? 'textClass' : 'background' == t ? 'bgClass' : 'gutter' == t ? 'gutterClass' : 'wrapClass'; if (e[r]) { if (classTest(n).test(e[r])) return !1; e[r] += ' ' + n; } else e[r] = n; return !0; } ); }), removeLineClass: docMethodOp(function(e, t, n) { return changeLine( this, e, 'gutter' == t ? 'gutter' : 'class', function(e) { var r = 'text' == t ? 'textClass' : 'background' == t ? 'bgClass' : 'gutter' == t ? 'gutterClass' : 'wrapClass', i = e[r]; if (!i) return !1; if (null == n) e[r] = null; else { var o = i.match(classTest(n)); if (!o) return !1; var a = o.index + o[0].length; e[r] = i.slice(0, o.index) + (o.index && a != i.length ? ' ' : '') + i.slice(a) || null; } return !0; } ); }), addLineWidget: docMethodOp(function(e, t, n) { return addLineWidget(this, e, t, n); }), removeLineWidget: function(e) { e.clear(); }, markText: function(e, t, n) { return markText( this, clipPos(this, e), clipPos(this, t), n, (n && n.type) || 'range' ); }, setBookmark: function(e, t) { var n = { replacedWith: t && (null == t.nodeType ? t.widget : t), insertLeft: t && t.insertLeft, clearWhenEmpty: !1, shared: t && t.shared, handleMouseEvents: t && t.handleMouseEvents }; return (e = clipPos(this, e)), markText(this, e, e, n, 'bookmark'); }, findMarksAt: function(e) { e = clipPos(this, e); var t = [], n = getLine(this, e.line).markedSpans; if (n) for (var r = 0; r < n.length; ++r) { var i = n[r]; (null == i.from || i.from <= e.ch) && (null == i.to || i.to >= e.ch) && t.push(i.marker.parent || i.marker); } return t; }, findMarks: function(e, t, n) { (e = clipPos(this, e)), (t = clipPos(this, t)); var r = [], i = e.line; return this.iter(e.line, t.line + 1, function(o) { var a = o.markedSpans; if (a) for (var s = 0; s < a.length; s++) { var l = a[s]; (null != l.to && i == e.line && e.ch >= l.to) || (null == l.from && i != e.line) || (null != l.from && i == t.line && l.from >= t.ch) || (n && !n(l.marker)) || r.push(l.marker.parent || l.marker); } ++i; }), r; }, getAllMarks: function() { var e = []; return this.iter(function(t) { var n = t.markedSpans; if (n) for (var r = 0; r < n.length; ++r) null != n[r].from && e.push(n[r].marker); }), e; }, posFromIndex: function(e) { var t, n = this.first, r = this.lineSeparator().length; return this.iter(function(i) { var o = i.text.length + r; if (o > e) return (t = e), !0; (e -= o), ++n; }), clipPos(this, Pos(n, t)); }, indexFromPos: function(e) { e = clipPos(this, e); var t = e.ch; if (e.line < this.first || e.ch < 0) return 0; var n = this.lineSeparator().length; return this.iter(this.first, e.line, function(e) { t += e.text.length + n; }), t; }, copy: function(e) { var t = new we( getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction ); return (t.scrollTop = this.scrollTop), (t.scrollLeft = this.scrollLeft), (t.sel = this.sel), (t.extend = !1), e && ((t.history.undoDepth = this.history.undoDepth), t.setHistory( this.getHistory() )), t; }, linkedDoc: function(e) { e || (e = {}); var t = this.first, n = this.first + this.size; null != e.from && e.from > t && (t = e.from), null != e.to && e.to < n && (n = e.to); var r = new we( getLines(this, t, n), e.mode || this.modeOption, t, this.lineSep, this.direction ); return e.sharedHist && (r.history = this.history), (this.linked || (this.linked = [])) .push({ doc: r, sharedHist: e.sharedHist }), (r.linked = [ { doc: this, isParent: !0, sharedHist: e.sharedHist } ]), copySharedMarkers(r, findSharedMarkers(this)), r; }, unlinkDoc: function(e) { var t = this; if ((e instanceof CodeMirror$1 && (e = e.doc), this.linked)) for (var n = 0; n < this.linked.length; ++n) { var r = t.linked[n]; if (r.doc == e) { t.linked.splice(n, 1), e.unlinkDoc(t), detachSharedMarkers( findSharedMarkers(t) ); break; } } if (e.history == this.history) { var i = [e.id]; linkedDocs( e, function(e) { return i.push(e.id); }, !0 ), (e.history = new History( null )), (e.history.done = copyHistoryArray( this.history.done, i )), (e.history.undone = copyHistoryArray(this.history.undone, i)); } }, iterLinkedDocs: function(e) { linkedDocs(this, e); }, getMode: function() { return this.mode; }, getEditor: function() { return this.cm; }, splitLines: function(e) { return this.lineSep ? e.split(this.lineSep) : U(e); }, lineSeparator: function() { return this.lineSep || '\n'; }, setDirection: docMethodOp(function(e) { 'rtl' != e && (e = 'ltr'), e != this.direction && ((this.direction = e), this.iter(function(e) { return (e.order = null); }), this.cm && directionChanged(this.cm)); }) })), (we.prototype.eachLine = we.prototype.iter); for ( var Se = 0, ke = !1, Le = { 3: 'Enter', 8: 'Backspace', 9: 'Tab', 13: 'Enter', 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 19: 'Pause', 20: 'CapsLock', 27: 'Esc', 32: 'Space', 33: 'PageUp', 34: 'PageDown', 35: 'End', 36: 'Home', 37: 'Left', 38: 'Up', 39: 'Right', 40: 'Down', 44: 'PrintScrn', 45: 'Insert', 46: 'Delete', 59: ';', 61: '=', 91: 'Mod', 92: 'Mod', 93: 'Mod', 106: '*', 107: '=', 109: '-', 110: '.', 111: '/', 127: 'Delete', 173: '-', 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', 219: '[', 220: '\\', 221: ']', 222: "'", 63232: 'Up', 63233: 'Down', 63234: 'Left', 63235: 'Right', 63272: 'Delete', 63273: 'Home', 63275: 'End', 63276: 'PageUp', 63277: 'PageDown', 63302: 'Insert' }, Me = 0; Me < 10; Me++ ) Le[Me + 48] = Le[Me + 96] = String(Me); for (var Te = 65; Te <= 90; Te++) Le[Te] = String.fromCharCode(Te); for (var Oe = 1; Oe <= 12; Oe++) Le[Oe + 111] = Le[Oe + 63235] = 'F' + Oe; var Pe = {}; (Pe.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' }), (Pe.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' }), (Pe.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' }), (Pe.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'] }), (Pe.default = y ? Pe.macDefault : Pe.pcDefault); var Ne, Ae, De = { selectAll: selectAll, singleSelection: function(e) { return e.setSelection( e.getCursor('anchor'), e.getCursor('head'), D ); }, killLine: function(e) { return deleteNearSelection(e, function(t) { if (t.empty()) { var n = getLine(e.doc, t.head.line).text.length; return t.head.ch == n && t.head.line < e.lastLine() ? { from: t.head, to: Pos(t.head.line + 1, 0) } : { from: t.head, to: Pos(t.head.line, n) }; } return { from: t.from(), to: t.to() }; }); }, deleteLine: function(e) { return deleteNearSelection(e, function(t) { return { from: Pos(t.from().line, 0), to: clipPos(e.doc, Pos(t.to().line + 1, 0)) }; }); }, delLineLeft: function(e) { return deleteNearSelection(e, function(e) { return { from: Pos(e.from().line, 0), to: e.from() }; }); }, delWrappedLineLeft: function(e) { return deleteNearSelection(e, function(t) { var n = e.charCoords(t.head, 'div').top + 5; return { from: e.coordsChar({ left: 0, top: n }, 'div'), to: t.from() }; }); }, delWrappedLineRight: function(e) { return deleteNearSelection(e, function(t) { var n = e.charCoords(t.head, 'div').top + 5, r = e.coordsChar( { left: e.display.lineDiv.offsetWidth + 100, top: n }, 'div' ); return { from: t.from(), to: r }; }); }, undo: function(e) { return e.undo(); }, redo: function(e) { return e.redo(); }, undoSelection: function(e) { return e.undoSelection(); }, redoSelection: function(e) { return e.redoSelection(); }, goDocStart: function(e) { return e.extendSelection(Pos(e.firstLine(), 0)); }, goDocEnd: function(e) { return e.extendSelection(Pos(e.lastLine())); }, goLineStart: function(e) { return e.extendSelectionsBy( function(t) { return lineStart(e, t.head.line); }, { origin: '+move', bias: 1 } ); }, goLineStartSmart: function(e) { return e.extendSelectionsBy( function(t) { return lineStartSmart(e, t.head); }, { origin: '+move', bias: 1 } ); }, goLineEnd: function(e) { return e.extendSelectionsBy( function(t) { return lineEnd(e, t.head.line); }, { origin: '+move', bias: -1 } ); }, goLineRight: function(e) { return e.extendSelectionsBy(function(t) { var n = e.charCoords(t.head, 'div').top + 5; return e.coordsChar( { left: e.display.lineDiv.offsetWidth + 100, top: n }, 'div' ); }, W); }, goLineLeft: function(e) { return e.extendSelectionsBy(function(t) { var n = e.charCoords(t.head, 'div').top + 5; return e.coordsChar({ left: 0, top: n }, 'div'); }, W); }, goLineLeftSmart: function(e) { return e.extendSelectionsBy(function(t) { var n = e.charCoords(t.head, 'div').top + 5, r = e.coordsChar({ left: 0, top: n }, 'div'); return r.ch < e.getLine(r.line).search(/\S/) ? lineStartSmart(e, t.head) : r; }, W); }, goLineUp: function(e) { return e.moveV(-1, 'line'); }, goLineDown: function(e) { return e.moveV(1, 'line'); }, goPageUp: function(e) { return e.moveV(-1, 'page'); }, goPageDown: function(e) { return e.moveV(1, 'page'); }, goCharLeft: function(e) { return e.moveH(-1, 'char'); }, goCharRight: function(e) { return e.moveH(1, 'char'); }, goColumnLeft: function(e) { return e.moveH(-1, 'column'); }, goColumnRight: function(e) { return e.moveH(1, 'column'); }, goWordLeft: function(e) { return e.moveH(-1, 'word'); }, goGroupRight: function(e) { return e.moveH(1, 'group'); }, goGroupLeft: function(e) { return e.moveH(-1, 'group'); }, goWordRight: function(e) { return e.moveH(1, 'word'); }, delCharBefore: function(e) { return e.deleteH(-1, 'char'); }, delCharAfter: function(e) { return e.deleteH(1, 'char'); }, delWordBefore: function(e) { return e.deleteH(-1, 'word'); }, delWordAfter: function(e) { return e.deleteH(1, 'word'); }, delGroupBefore: function(e) { return e.deleteH(-1, 'group'); }, delGroupAfter: function(e) { return e.deleteH(1, 'group'); }, indentAuto: function(e) { return e.indentSelection('smart'); }, indentMore: function(e) { return e.indentSelection('add'); }, indentLess: function(e) { return e.indentSelection('subtract'); }, insertTab: function(e) { return e.replaceSelection('\t'); }, insertSoftTab: function(e) { for ( var t = [], n = e.listSelections(), r = e.options.tabSize, i = 0; i < n.length; i++ ) { var o = n[i].from(), a = countColumn(e.getLine(o.line), o.ch, r); t.push(spaceStr(r - a % r)); } e.replaceSelections(t); }, defaultTab: function(e) { e.somethingSelected() ? e.indentSelection('add') : e.execCommand('insertTab'); }, transposeChars: function(e) { return runInOp(e, function() { for ( var t = e.listSelections(), n = [], r = 0; r < t.length; r++ ) if (t[r].empty()) { var i = t[r].head, o = getLine(e.doc, i.line).text; if (o) if ( (i.ch == o.length && (i = new Pos(i.line, i.ch - 1)), i.ch > 0) ) (i = new Pos(i.line, i.ch + 1)), e.replaceRange( o.charAt(i.ch - 1) + o.charAt(i.ch - 2), Pos(i.line, i.ch - 2), i, '+transpose' ); else if (i.line > e.doc.first) { var a = getLine(e.doc, i.line - 1).text; a && ((i = new Pos(i.line, 1)), e.replaceRange( o.charAt(0) + e.doc.lineSeparator() + a.charAt(a.length - 1), Pos(i.line - 1, a.length - 1), i, '+transpose' )); } n.push(new he(i, i)); } e.setSelections(n); }); }, newlineAndIndent: function(e) { return runInOp(e, function() { for ( var t = e.listSelections(), n = t.length - 1; n >= 0; n-- ) e.replaceRange(e.doc.lineSeparator(), t[n].anchor, t[n].head, '+input'); t = e.listSelections(); for ( var r = 0; r < t.length; r++ ) e.indentLine(t[r].from().line, null, !0); ensureCursorVisible(e); }); }, openLine: function(e) { return e.replaceSelection('\n', 'start'); }, toggleOverwrite: function(e) { return e.toggleOverwrite(); } }, He = new T(), We = null, Ee = { toString: function() { return 'CodeMirror.Init'; } }, Ie = {}, Fe = {}; (CodeMirror$1.defaults = Ie), (CodeMirror$1.optionHandlers = Fe); var Be = []; CodeMirror$1.defineInitHook = function(e) { return Be.push(e); }; var ze = null, Re = function(e) { (this.cm = e), (this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null), (this.polling = new T()), (this.composing = null), (this.gracePeriod = !1), (this.readDOMTimeout = null); }; (Re.prototype.init = function(e) { function onCopyCut(e) { if (!signalDOMEvent(r, e)) { if (r.somethingSelected()) setLastCopied({ lineWise: !1, text: r.getSelections() }), 'cut' == e.type && r.replaceSelection('', null, 'cut'); else { if (!r.options.lineWiseCopyCut) return; var t = copyableRanges(r); setLastCopied({ lineWise: !0, text: t.text }), 'cut' == e.type && r.operation(function() { r.setSelections( t.ranges, 0, D ), r.replaceSelection('', null, 'cut'); }); } if (e.clipboardData) { e.clipboardData.clearData(); var o = ze.text.join('\n'); if ( (e.clipboardData.setData('Text', o), e.clipboardData.getData( 'Text' ) == o) ) return void e.preventDefault(); } var a = hiddenTextarea(), s = a.firstChild; r.display.lineSpace.insertBefore( a, r.display.lineSpace.firstChild ), (s.value = ze.text.join('\n')); var l = document.activeElement; M(s), setTimeout(function() { r.display.lineSpace.removeChild( a ), l.focus(), l == i && n.showPrimarySelection(); }, 50); } } var t = this, n = this, r = n.cm, i = (n.div = e.lineDiv); disableBrowserMagic(i, r.options.spellcheck), G(i, 'paste', function( e ) { signalDOMEvent(r, e) || handlePaste(e, r) || (s <= 11 && setTimeout( operation(r, function() { return t.updateFromDOM(); }), 20 )); }), G(i, 'compositionstart', function(e) { t.composing = { data: e.data, done: !1 }; }), G(i, 'compositionupdate', function(e) { t.composing || (t.composing = { data: e.data, done: !1 }); }), G(i, 'compositionend', function(e) { t.composing && (e.data != t.composing.data && t.readFromDOMSoon(), (t.composing.done = !0)); }), G(i, 'touchstart', function() { return n.forceCompositionEnd(); }), G(i, 'input', function() { t.composing || t.readFromDOMSoon(); }), G(i, 'copy', onCopyCut), G(i, 'cut', onCopyCut); }), (Re.prototype.prepareSelection = function() { var e = prepareSelection(this.cm, !1); return (e.focus = this.cm.state.focused), e; }), (Re.prototype.showSelection = function(e, t) { e && this.cm.display.view.length && ((e.focus || t) && this.showPrimarySelection(), this.showMultipleSelections(e)); }), (Re.prototype.showPrimarySelection = function() { var e = window.getSelection(), t = this.cm, r = t.doc.sel.primary(), i = r.from(), o = r.to(); if ( t.display.viewTo == t.display.viewFrom || i.line >= t.display.viewTo || o.line < t.display.viewFrom ) return void e.removeAllRanges(); var a = domToPos(t, e.anchorNode, e.anchorOffset), s = domToPos(t, e.focusNode, e.focusOffset); if ( !a || a.bad || !s || s.bad || 0 != cmp(minPos(a, s), i) || 0 != cmp(maxPos(a, s), o) ) { var l = t.display.view, c = (i.line >= t.display.viewFrom && posToDOM(t, i)) || { node: l[0].measure.map[2], offset: 0 }, u = o.line < t.display.viewTo && posToDOM(t, o); if (!u) { var d = l[l.length - 1].measure, p = d.maps ? d.maps[d.maps.length - 1] : d.map; u = { node: p[p.length - 1], offset: p[p.length - 2] - p[p.length - 3] }; } if (!c || !u) return void e.removeAllRanges(); var f, h = e.rangeCount && e.getRangeAt(0); try { f = w(c.node, c.offset, u.offset, u.node); } catch (e) {} f && (!n && t.state.focused ? (e.collapse(c.node, c.offset), f.collapsed || (e.removeAllRanges(), e.addRange(f))) : (e.removeAllRanges(), e.addRange(f)), h && null == e.anchorNode ? e.addRange(h) : n && this.startGracePeriod()), this.rememberSelection(); } }), (Re.prototype.startGracePeriod = function() { var e = this; clearTimeout( this.gracePeriod ), (this.gracePeriod = setTimeout(function() { (e.gracePeriod = !1), e.selectionChanged() && e.cm.operation(function() { return (e.cm.curOp.selectionChanged = !0); }); }, 20)); }), (Re.prototype.showMultipleSelections = function(e) { removeChildrenAndAdd( this.cm.display.cursorDiv, e.cursors ), removeChildrenAndAdd(this.cm.display.selectionDiv, e.selection); }), (Re.prototype.rememberSelection = function() { var e = window.getSelection(); (this.lastAnchorNode = e.anchorNode), (this.lastAnchorOffset = e.anchorOffset), (this.lastFocusNode = e.focusNode), (this.lastFocusOffset = e.focusOffset); }), (Re.prototype.selectionInEditor = function() { var e = window.getSelection(); if (!e.rangeCount) return !1; var t = e.getRangeAt(0).commonAncestorContainer; return contains(this.div, t); }), (Re.prototype.focus = function() { 'nocursor' != this.cm.options.readOnly && (this.selectionInEditor() || this.showSelection(this.prepareSelection(), !0), this.div.focus()); }), (Re.prototype.blur = function() { this.div.blur(); }), (Re.prototype.getField = function() { return this.div; }), (Re.prototype.supportsTouch = function() { return !0; }), (Re.prototype.receivedFocus = function() { function poll() { e.cm.state.focused && (e.pollSelection(), e.polling.set(e.cm.options.pollInterval, poll)); } var e = this; this.selectionInEditor() ? this.pollSelection() : runInOp(this.cm, function() { return (e.cm.curOp.selectionChanged = !0); }), this.polling.set(this.cm.options.pollInterval, poll); }), (Re.prototype.selectionChanged = function() { var e = window.getSelection(); return ( e.anchorNode != this.lastAnchorNode || e.anchorOffset != this.lastAnchorOffset || e.focusNode != this.lastFocusNode || e.focusOffset != this.lastFocusOffset ); }), (Re.prototype.pollSelection = function() { if ( null == this.readDOMTimeout && !this.gracePeriod && this.selectionChanged() ) { var e = window.getSelection(), t = this.cm; if ( m && u && this.cm.options.gutters.length && isInGutter(e.anchorNode) ) return this.cm.triggerOnKeyDown({ type: 'keydown', keyCode: 8, preventDefault: Math.abs }), this.blur(), void this.focus(); if (!this.composing) { this.rememberSelection(); var n = domToPos(t, e.anchorNode, e.anchorOffset), r = domToPos(t, e.focusNode, e.focusOffset); n && r && runInOp(t, function() { setSelection( t.doc, simpleSelection(n, r), D ), (n.bad || r.bad) && (t.curOp.selectionChanged = !0); }); } } }), (Re.prototype.pollContent = function() { null != this.readDOMTimeout && (clearTimeout(this.readDOMTimeout), (this.readDOMTimeout = null)); var e = this.cm, t = e.display, n = e.doc.sel.primary(), r = n.from(), i = n.to(); if ( (0 == r.ch && r.line > e.firstLine() && (r = Pos(r.line - 1, getLine(e.doc, r.line - 1).length)), i.ch == getLine(e.doc, i.line).text.length && i.line < e.lastLine() && (i = Pos(i.line + 1, 0)), r.line < t.viewFrom || i.line > t.viewTo - 1) ) return !1; var o, a, s; r.line == t.viewFrom || 0 == (o = findViewIndex(e, r.line)) ? ((a = lineNo(t.view[0].line)), (s = t.view[0].node)) : ((a = lineNo(t.view[o].line)), (s = t.view[o - 1].node.nextSibling)); var l, c, u = findViewIndex(e, i.line); if ( (u == t.view.length - 1 ? ((l = t.viewTo - 1), (c = t.lineDiv.lastChild)) : ((l = lineNo(t.view[u + 1].line) - 1), (c = t.view[u + 1].node.previousSibling)), !s) ) return !1; for ( var d = e.doc.splitLines(domTextBetween(e, s, c, a, l)), p = getBetween( e.doc, Pos(a, 0), Pos(l, getLine(e.doc, l).text.length) ); d.length > 1 && p.length > 1; ) if (lst(d) == lst(p)) d.pop(), p.pop(), l--; else { if (d[0] != p[0]) break; d.shift(), p.shift(), a++; } for ( var f = 0, h = 0, g = d[0], m = p[0], v = Math.min(g.length, m.length); f < v && g.charCodeAt(f) == m.charCodeAt(f); ) ++f; for ( var y = lst(d), b = lst(p), x = Math.min( y.length - (1 == d.length ? f : 0), b.length - (1 == p.length ? f : 0) ); h < x && y.charCodeAt(y.length - h - 1) == b.charCodeAt(b.length - h - 1); ) ++h; if (1 == d.length && 1 == p.length && a == r.line) for ( ; f && f > r.ch && y.charCodeAt(y.length - h - 1) == b.charCodeAt(b.length - h - 1); ) f--, h++; (d[d.length - 1] = y .slice(0, y.length - h) .replace(/^\u200b+/, '')), (d[0] = d[0] .slice(f) .replace(/\u200b+$/, '')); var C = Pos(a, f), w = Pos(l, p.length ? lst(p).length - h : 0); return d.length > 1 || d[0] || cmp(C, w) ? (replaceRange(e.doc, d, C, w, '+input'), !0) : void 0; }), (Re.prototype.ensurePolled = function() { this.forceCompositionEnd(); }), (Re.prototype.reset = function() { this.forceCompositionEnd(); }), (Re.prototype.forceCompositionEnd = function() { this.composing && (clearTimeout( this.readDOMTimeout ), (this.composing = null), this.updateFromDOM(), this.div.blur(), this.div.focus()); }), (Re.prototype.readFromDOMSoon = function() { var e = this; null == this.readDOMTimeout && (this.readDOMTimeout = setTimeout(function() { if (((e.readDOMTimeout = null), e.composing)) { if (!e.composing.done) return; e.composing = null; } e.updateFromDOM(); }, 80)); }), (Re.prototype.updateFromDOM = function() { var e = this; (!this.cm.isReadOnly() && this.pollContent()) || runInOp(this.cm, function() { return regChange(e.cm); }); }), (Re.prototype.setUneditable = function(e) { e.contentEditable = 'false'; }), (Re.prototype.onKeyPress = function(e) { 0 != e.charCode && (e.preventDefault(), this.cm.isReadOnly() || operation(this.cm, applyTextInput)( this.cm, String.fromCharCode(null == e.charCode ? e.keyCode : e.charCode), 0 )); }), (Re.prototype.readOnlyChanged = function(e) { this.div.contentEditable = String('nocursor' != e); }), (Re.prototype.onContextMenu = function() {}), (Re.prototype.resetPosition = function() {}), (Re.prototype.needsContentAttribute = !0); var Ve = function(e) { (this.cm = e), (this.prevInput = ''), (this.pollingFast = !1), (this.polling = new T()), (this.inaccurateSelection = !1), (this.hasSelection = !1), (this.composing = null); }; (Ve.prototype.init = function(e) { function prepareCopyCut(e) { if (!signalDOMEvent(r, e)) { if (r.somethingSelected()) setLastCopied({ lineWise: !1, text: r.getSelections() }), n.inaccurateSelection && ((n.prevInput = ''), (n.inaccurateSelection = !1), (o.value = ze.text.join( '\n' )), M(o)); else { if (!r.options.lineWiseCopyCut) return; var t = copyableRanges(r); setLastCopied({ lineWise: !0, text: t.text }), 'cut' == e.type ? r.setSelections(t.ranges, null, D) : ((n.prevInput = ''), (o.value = t.text.join('\n')), M(o)); } 'cut' == e.type && (r.state.cutIncoming = !0); } } var t = this, n = this, r = this.cm, i = (this.wrapper = hiddenTextarea()), o = (this.textarea = i.firstChild); e.wrapper.insertBefore(i, e.wrapper.firstChild), g && (o.style.width = '0px'), G(o, 'input', function() { a && s >= 9 && t.hasSelection && (t.hasSelection = null), n.poll(); }), G(o, 'paste', function(e) { signalDOMEvent(r, e) || handlePaste(e, r) || ((r.state.pasteIncoming = !0), n.fastPoll()); }), G(o, 'cut', prepareCopyCut), G( o, 'copy', prepareCopyCut ), G(e.scroller, 'paste', function(t) { eventInWidget(e, t) || signalDOMEvent(r, t) || ((r.state.pasteIncoming = !0), n.focus()); }), G(e.lineSpace, 'selectstart', function(t) { eventInWidget(e, t) || e_preventDefault(t); }), G(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' }) }); }), G(o, 'compositionend', function() { n.composing && (n.poll(), n.composing.range.clear(), (n.composing = null)); }); }), (Ve.prototype.prepareSelection = function() { var e = this.cm, t = e.display, n = e.doc, r = prepareSelection(e); if (e.options.moveInputWithCursor) { var i = cursorCoords(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; }), (Ve.prototype.showSelection = function(e) { var t = this.cm, n = t.display; removeChildrenAndAdd(n.cursorDiv, e.cursors), removeChildrenAndAdd( n.selectionDiv, e.selection ), null != e.teTop && ((this.wrapper.style.top = e.teTop + 'px'), (this.wrapper.style.left = e.teLeft + 'px')); }), (Ve.prototype.reset = function(e) { if (!this.contextMenuPending && !this.composing) { var t, n, r = this.cm, i = r.doc; if (r.somethingSelected()) { this.prevInput = ''; var o = i.sel.primary(); t = $ && (o.to().line - o.from().line > 100 || (n = r.getSelection()).length > 1e3); var l = t ? '-' : n || r.getSelection(); (this.textarea.value = l), r.state.focused && M(this.textarea), a && s >= 9 && (this.hasSelection = l); } else e || ((this.prevInput = this.textarea.value = ''), a && s >= 9 && (this.hasSelection = null)); this.inaccurateSelection = t; } }), (Ve.prototype.getField = function() { return this.textarea; }), (Ve.prototype.supportsTouch = function() { return !1; }), (Ve.prototype.focus = function() { if ( 'nocursor' != this.cm.options.readOnly && (!v || activeElt() != this.textarea) ) try { this.textarea.focus(); } catch (e) {} }), (Ve.prototype.blur = function() { this.textarea.blur(); }), (Ve.prototype.resetPosition = function() { this.wrapper.style.top = this.wrapper.style.left = 0; }), (Ve.prototype.receivedFocus = function() { this.slowPoll(); }), (Ve.prototype.slowPoll = function() { var e = this; this.pollingFast || this.polling.set(this.cm.options.pollInterval, function() { e.poll(), e.cm.state.focused && e.slowPoll(); }); }), (Ve.prototype.fastPoll = function() { function p() { t.poll() || e ? ((t.pollingFast = !1), t.slowPoll()) : ((e = !0), t.polling.set(60, p)); } var e = !1, t = this; (t.pollingFast = !0), t.polling.set(20, p); }), (Ve.prototype.poll = function() { var e = this, t = this.cm, n = this.textarea, r = this.prevInput; if ( this.contextMenuPending || !t.state.focused || (K(n) && !r && !this.composing) || t.isReadOnly() || t.options.disableInput || t.state.keySeq ) return !1; var i = n.value; if (i == r && !t.somethingSelected()) return !1; if ( (a && s >= 9 && this.hasSelection === i) || (y && /[\uf700-\uf7ff]/.test(i)) ) return t.display.input.reset(), !1; if (t.doc.sel == t.display.selForContextMenu) { var o = i.charCodeAt(0); if ((8203 != o || r || (r = '​'), 8666 == o)) return this.reset(), this.cm.execCommand('undo'); } for ( var l = 0, c = Math.min(r.length, i.length); l < c && r.charCodeAt(l) == i.charCodeAt(l); ) ++l; return runInOp(t, function() { applyTextInput( t, i.slice(l), r.length - l, null, e.composing ? '*compose' : null ), i.length > 1e3 || i.indexOf('\n') > -1 ? (n.value = e.prevInput = '') : (e.prevInput = i), e.composing && (e.composing.range.clear(), (e.composing.range = t.markText(e.composing.start, t.getCursor('to'), { className: 'CodeMirror-composing' }))); }), !0; }), (Ve.prototype.ensurePolled = function() { this.pollingFast && this.poll() && (this.pollingFast = !1); }), (Ve.prototype.onKeyPress = function() { a && s >= 9 && (this.hasSelection = null), this.fastPoll(); }), (Ve.prototype.onContextMenu = function(e) { function prepareSelectAllHack() { if (null != i.selectionStart) { var e = n.somethingSelected(), o = '​' + (e ? i.value : ''); (i.value = '⇚'), (i.value = o), (t.prevInput = e ? '' : '​'), (i.selectionStart = 1), (i.selectionEnd = o.length), (r.selForContextMenu = n.doc.sel); } } function rehide() { if ( ((t.contextMenuPending = !1), (t.wrapper.style.cssText = p), (i.style.cssText = u), a && s < 9 && r.scrollbars.setScrollTop((r.scroller.scrollTop = c)), null != i.selectionStart) ) { (!a || (a && s < 9)) && prepareSelectAllHack(); var e = 0, o = function() { r.selForContextMenu == n.doc.sel && 0 == i.selectionStart && i.selectionEnd > 0 && '​' == t.prevInput ? operation(n, selectAll)(n) : e++ < 10 ? (r.detectingSelectAll = setTimeout(o, 500)) : ((r.selForContextMenu = null), r.input.reset()); }; r.detectingSelectAll = setTimeout(o, 200); } } var t = this, n = t.cm, r = n.display, i = t.textarea, o = posFromMouse(n, e), c = r.scroller.scrollTop; if (o && !d) { n.options.resetSelectionOnContextMenu && -1 == n.doc.sel.contains(o) && operation(n, setSelection)(n.doc, simpleSelection(o), D); var u = i.style.cssText, p = t.wrapper.style.cssText; t.wrapper.style.cssText = 'position: absolute'; var f = t.wrapper.getBoundingClientRect(); i.style.cssText = 'position: absolute; width: 30px; height: 30px;\n top: ' + (e.clientY - f.top - 5) + 'px; left: ' + (e.clientX - f.left - 5) + 'px;\n z-index: 1000; background: ' + (a ? 'rgba(255, 255, 255, .05)' : 'transparent') + ';\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);'; var h; if ( (l && (h = window.scrollY), r.input.focus(), l && window.scrollTo( null, h ), r.input.reset(), n.somethingSelected() || (i.value = t.prevInput = ' '), (t.contextMenuPending = !0), (r.selForContextMenu = n.doc.sel), clearTimeout(r.detectingSelectAll), a && s >= 9 && prepareSelectAllHack(), k) ) { e_stop(e); var g = function() { off(window, 'mouseup', g), setTimeout(rehide, 20); }; G(window, 'mouseup', g); } else setTimeout(rehide, 50); } }), (Ve.prototype.readOnlyChanged = function(e) { e || this.reset(); }), (Ve.prototype.setUneditable = function() {}), (Ve.prototype.needsContentAttribute = !1), (function defineOptions(e) { function option(n, r, i, o) { (e.defaults[n] = r), i && (t[n] = o ? function(e, t, n) { n != Ee && i(e, t, n); } : i); } var t = e.optionHandlers; (e.defineOption = option), (e.Init = Ee), option( 'value', '', function(e, t) { return e.setValue(t); }, !0 ), option( 'mode', null, function(e, t) { (e.doc.modeOption = t), loadMode(e); }, !0 ), option('indentUnit', 2, loadMode, !0), option('indentWithTabs', !1), option('smartIndent', !0), option( 'tabSize', 4, function(e) { resetModeState(e), clearCaches(e), regChange(e); }, !0 ), option('lineSeparator', null, function(e, t) { if (((e.doc.lineSep = t), t)) { var n = [], r = e.doc.first; e.doc.iter(function(e) { for (var i = 0; ; ) { var o = e.text.indexOf(t, i); if (-1 == o) break; (i = o + t.length), n.push(Pos(r, o)); } r++; }); for (var i = n.length - 1; i >= 0; i--) replaceRange(e.doc, t, n[i], Pos(n[i].line, n[i].ch + t.length)); } }), option( 'specialChars', /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function(e, t, n) { (e.state.specialChars = new RegExp( t.source + (t.test('\t') ? '' : '|\t'), 'g' )), n != Ee && e.refresh(); } ), option( 'specialCharPlaceholder', defaultSpecialCharPlaceholder, function(e) { return e.refresh(); }, !0 ), option('electricChars', !0), option( 'inputStyle', v ? 'contenteditable' : 'textarea', function() { throw new Error( 'inputStyle can not (yet) be changed in a running editor' ); }, !0 ), option( 'spellcheck', !1, function(e, t) { return (e.getInputField().spellcheck = t); }, !0 ), option('rtlMoveVisually', !x), option('wholeLineUpdateBefore', !0), option( 'theme', 'default', function(e) { themeChanged(e), guttersChanged(e); }, !0 ), option('keyMap', 'default', function(e, t, n) { var r = getKeyMap(t), i = n != Ee && getKeyMap(n); i && i.detach && i.detach(e, r), r.attach && r.attach(e, i || null); }), option( 'extraKeys', null ), option('lineWrapping', !1, wrappingChanged, !0), option( 'gutters', [], function(e) { setGuttersForLineNumbers(e.options), guttersChanged(e); }, !0 ), option( 'fixedGutter', !0, function(e, t) { (e.display.gutters.style.left = t ? compensateForHScroll(e.display) + 'px' : '0'), e.refresh(); }, !0 ), option( 'coverGutterNextToScrollbar', !1, function(e) { return updateScrollbars(e); }, !0 ), option( 'scrollbarStyle', 'native', function(e) { initScrollbars(e), updateScrollbars( e ), e.display.scrollbars.setScrollTop( e.doc.scrollTop ), e.display.scrollbars.setScrollLeft(e.doc.scrollLeft); }, !0 ), option( 'lineNumbers', !1, function(e) { setGuttersForLineNumbers(e.options), guttersChanged(e); }, !0 ), option('firstLineNumber', 1, guttersChanged, !0), option( 'lineNumberFormatter', function(e) { return e; }, guttersChanged, !0 ), option('showCursorWhenSelecting', !1, updateSelection, !0), option('resetSelectionOnContextMenu', !0), option('lineWiseCopyCut', !0), option('readOnly', !1, function(e, t) { 'nocursor' == t ? (onBlur(e), e.display.input.blur(), (e.display.disabled = !0)) : (e.display.disabled = !1), e.display.input.readOnlyChanged(t); }), option( 'disableInput', !1, function(e, t) { t || e.display.input.reset(); }, !0 ), option('dragDrop', !0, dragDropChanged), option('allowDropFileTypes', null), option('cursorBlinkRate', 530), option('cursorScrollMargin', 0), option('cursorHeight', 1, updateSelection, !0), option('singleCursorHeightPerLine', !0, updateSelection, !0), option('workTime', 100), option('workDelay', 100), option('flattenSpans', !0, resetModeState, !0), option('addModeClass', !1, resetModeState, !0), option('pollInterval', 100), option('undoDepth', 200, function(e, t) { return (e.doc.history.undoDepth = t); }), option('historyEventDelay', 1250), option( 'viewportMargin', 10, function(e) { return e.refresh(); }, !0 ), option('maxHighlightLength', 1e4, resetModeState, !0), option('moveInputWithCursor', !0, function(e, t) { t || e.display.input.resetPosition(); }), option('tabindex', null, function(e, t) { return (e.display.input.getField().tabIndex = t || ''); }), option('autofocus', null), option( 'direction', 'ltr', function(e, t) { return e.doc.setDirection(t); }, !0 ); })(CodeMirror$1), (function(e) { var t = e.optionHandlers, n = (e.helpers = {}); (e.prototype = { constructor: e, focus: function() { window.focus(), this.display.input.focus(); }, setOption: function(e, n) { var r = this.options, i = r[e]; (r[e] == n && 'mode' != e) || ((r[e] = n), t.hasOwnProperty(e) && operation(this, t[e])(this, n, i), signal( this, 'optionChange', this, e )); }, getOption: function(e) { return this.options[e]; }, getDoc: function() { return this.doc; }, addKeyMap: function(e, t) { this.state.keyMaps[t ? 'push' : 'unshift'](getKeyMap(e)); }, removeKeyMap: function(e) { for (var t = this.state.keyMaps, n = 0; n < t.length; ++n) if (t[n] == e || t[n].name == e) return t.splice(n, 1), !0; }, addOverlay: methodOp(function(t, n) { var r = t.token ? t : e.getMode(this.options, t); if (r.startState) throw new Error('Overlays may not be stateful.'); insertSorted( this.state.overlays, { mode: r, modeSpec: t, opaque: n && n.opaque, priority: (n && n.priority) || 0 }, function(e) { return e.priority; } ), this.state.modeGen++, regChange(this); }), removeOverlay: methodOp(function(e) { for ( var t = this, n = this.state.overlays, r = 0; r < n.length; ++r ) { var i = n[r].modeSpec; if (i == e || ('string' == typeof e && i.name == e)) return n.splice(r, 1), t.state.modeGen++, void regChange(t); } }), indentLine: methodOp(function(e, t, n) { 'string' != typeof t && 'number' != typeof t && (t = null == t ? this.options.smartIndent ? 'smart' : 'prev' : t ? 'add' : 'subtract'), isLine(this.doc, e) && indentLine(this, e, t, n); }), indentSelection: methodOp(function(e) { for ( var t = this, n = this.doc.sel.ranges, r = -1, i = 0; i < n.length; i++ ) { var o = n[i]; if (o.empty()) o.head.line > r && (indentLine(t, o.head.line, e, !0), (r = o.head.line), i == t.doc.sel.primIndex && ensureCursorVisible(t)); else { var a = o.from(), s = o.to(), l = Math.max(r, a.line); r = Math.min(t.lastLine(), s.line - (s.ch ? 0 : 1)) + 1; for (var c = l; c < r; ++c) indentLine(t, c, e); var u = t.doc.sel.ranges; 0 == a.ch && n.length == u.length && u[i].from().ch > 0 && replaceOneSelection(t.doc, i, new he(a, u[i].to()), D); } } }), getTokenAt: function(e, t) { return takeToken(this, e, t); }, getLineTokens: function(e, t) { return takeToken(this, Pos(e), t, !0); }, getTokenTypeAt: function(e) { e = clipPos(this.doc, e); var t, n = getLineStyles(this, getLine(this.doc, e.line)), r = 0, i = (n.length - 1) / 2, o = e.ch; if (0 == o) t = n[2]; else for (;;) { var a = (r + i) >> 1; if ((a ? n[2 * a - 1] : 0) >= o) i = a; else { if (!(n[2 * a + 1] < o)) { t = n[2 * a + 2]; break; } r = a + 1; } } var s = t ? t.indexOf('overlay ') : -1; return s < 0 ? t : 0 == s ? null : t.slice(0, s - 1); }, getModeAt: function(t) { var n = this.doc.mode; return n.innerMode ? e.innerMode(n, this.getTokenAt(t).state).mode : n; }, getHelper: function(e, t) { return this.getHelpers(e, t)[0]; }, getHelpers: function(e, t) { var r = this, i = []; if (!n.hasOwnProperty(t)) return i; var o = n[t], a = this.getModeAt(e); if ('string' == typeof a[t]) o[a[t]] && i.push(o[a[t]]); else if (a[t]) for (var s = 0; s < a[t].length; s++) { var l = o[a[t][s]]; l && i.push(l); } else a.helperType && o[a.helperType] ? i.push(o[a.helperType]) : o[a.name] && i.push(o[a.name]); for (var c = 0; c < o._global.length; c++) { var u = o._global[c]; u.pred(a, r) && -1 == indexOf(i, u.val) && i.push(u.val); } return i; }, getStateAfter: function(e, t) { var n = this.doc; return (e = clipLine( n, null == e ? n.first + n.size - 1 : e )), getStateBefore(this, e + 1, t); }, cursorCoords: function(e, t) { var n, r = this.doc.sel.primary(); return (n = null == e ? r.head : 'object' == typeof e ? clipPos(this.doc, e) : e ? r.from() : r.to()), cursorCoords(this, n, t || 'page'); }, charCoords: function(e, t) { return charCoords(this, clipPos(this.doc, e), t || 'page'); }, coordsChar: function(e, t) { return (e = fromCoordSystem(this, e, t || 'page')), coordsChar( this, e.left, e.top ); }, lineAtHeight: function(e, t) { return (e = fromCoordSystem(this, { top: e, left: 0 }, t || 'page') .top), lineAtHeight(this.doc, e + this.display.viewOffset); }, heightAtLine: function(e, t, n) { var r, i = !1; if ('number' == typeof e) { var o = this.doc.first + this.doc.size - 1; e < this.doc.first ? (e = this.doc.first) : e > o && ((e = o), (i = !0)), (r = getLine(this.doc, e)); } else r = e; return ( intoCoordSystem(this, r, { top: 0, left: 0 }, t || 'page', n || i) .top + (i ? this.doc.height - heightAtLine(r) : 0) ); }, defaultTextHeight: function() { return textHeight(this.display); }, defaultCharWidth: function() { return charWidth(this.display); }, getViewport: function() { return { from: this.display.viewFrom, to: this.display.viewTo }; }, addWidget: function(e, t, n, r, i) { var o = this.display; e = cursorCoords(this, clipPos(this.doc, e)); var a = e.bottom, s = e.left; if ( ((t.style.position = 'absolute'), t.setAttribute( 'cm-ignore-events', 'true' ), this.display.input.setUneditable(t), o.sizer.appendChild( t ), 'over' == r) ) a = e.top; else if ('above' == r || 'near' == r) { var l = Math.max(o.wrapper.clientHeight, this.doc.height), c = Math.max(o.sizer.clientWidth, o.lineSpace.clientWidth); ('above' == r || e.bottom + t.offsetHeight > l) && e.top > t.offsetHeight ? (a = e.top - t.offsetHeight) : e.bottom + t.offsetHeight <= l && (a = e.bottom), s + t.offsetWidth > c && (s = c - t.offsetWidth); } (t.style.top = a + 'px'), (t.style.left = t.style.right = ''), 'right' == i ? ((s = o.sizer.clientWidth - t.offsetWidth), (t.style.right = '0px')) : ('left' == i ? (s = 0) : 'middle' == i && (s = (o.sizer.clientWidth - t.offsetWidth) / 2), (t.style.left = s + 'px')), n && scrollIntoView(this, { left: s, top: a, right: s + t.offsetWidth, bottom: a + t.offsetHeight }); }, triggerOnKeyDown: methodOp(onKeyDown), triggerOnKeyPress: methodOp(onKeyPress), triggerOnKeyUp: onKeyUp, execCommand: function(e) { if (De.hasOwnProperty(e)) return De[e].call(null, this); }, triggerElectric: methodOp(function(e) { triggerElectric(this, e); }), findPosH: function(e, t, n, r) { var i = this, o = 1; t < 0 && ((o = -1), (t = -t)); for ( var a = clipPos(this.doc, e), s = 0; s < t && ((a = findPosH(i.doc, a, o, n, r)), !a.hitSide); ++s ); return a; }, moveH: methodOp(function(e, t) { var n = this; this.extendSelectionsBy(function(r) { return n.display.shift || n.doc.extend || r.empty() ? findPosH(n.doc, r.head, e, t, n.options.rtlMoveVisually) : e < 0 ? r.from() : r.to(); }, W); }), deleteH: methodOp(function(e, t) { var n = this.doc.sel, r = this.doc; n.somethingSelected() ? r.replaceSelection('', null, '+delete') : deleteNearSelection(this, function(n) { var i = findPosH(r, n.head, e, t, !1); return e < 0 ? { from: i, to: n.head } : { from: n.head, to: i }; }); }), findPosV: function(e, t, n, r) { var i = this, o = 1, a = r; t < 0 && ((o = -1), (t = -t)); for (var s = clipPos(this.doc, e), l = 0; l < t; ++l) { var c = cursorCoords(i, s, 'div'); if ( (null == a ? (a = c.left) : (c.left = a), (s = findPosV( i, c, o, n )), s.hitSide) ) break; } return s; }, moveV: methodOp(function(e, t) { var n = this, r = this.doc, i = [], o = !this.display.shift && !r.extend && r.sel.somethingSelected(); if ( (r.extendSelectionsBy(function(a) { if (o) return e < 0 ? a.from() : a.to(); var s = cursorCoords(n, a.head, 'div'); null != a.goalColumn && (s.left = a.goalColumn), i.push(s.left); var l = findPosV(n, s, e, t); return 'page' == t && a == r.sel.primary() && addToScrollTop(n, charCoords(n, l, 'div').top - s.top), l; }, W), i.length) ) for (var a = 0; a < r.sel.ranges.length; a++) r.sel.ranges[a].goalColumn = i[a]; }), findWordAt: function(e) { var t = this.doc, n = getLine(t, e.line).text, r = e.ch, i = e.ch; if (n) { var o = this.getHelper(e, 'wordChars'); ('before' != e.sticky && i != n.length) || !r ? ++i : --r; for ( var a = n.charAt(r), s = isWordChar(a, o) ? function(e) { return isWordChar(e, o); } : /\s/.test(a) ? function(e) { return /\s/.test(e); } : function(e) { return !/\s/.test(e) && !isWordChar(e); }; r > 0 && s(n.charAt(r - 1)); ) --r; for (; i < n.length && s(n.charAt(i)); ) ++i; } return new he(Pos(e.line, r), Pos(e.line, i)); }, toggleOverwrite: function(e) { (null != e && e == this.state.overwrite) || ((this.state.overwrite = !this.state.overwrite) ? addClass(this.display.cursorDiv, 'CodeMirror-overwrite') : L(this.display.cursorDiv, 'CodeMirror-overwrite'), signal( this, 'overwriteToggle', this, this.state.overwrite )); }, hasFocus: function() { return this.display.input.getField() == activeElt(); }, isReadOnly: function() { return !(!this.options.readOnly && !this.doc.cantEdit); }, scrollTo: methodOp(function(e, t) { scrollToCoords(this, e, t); }), getScrollInfo: function() { var e = this.display.scroller; return { left: e.scrollLeft, top: e.scrollTop, height: e.scrollHeight - scrollGap(this) - this.display.barHeight, width: e.scrollWidth - scrollGap(this) - this.display.barWidth, clientHeight: displayHeight(this), clientWidth: displayWidth(this) }; }, scrollIntoView: methodOp(function(e, t) { null == e ? ((e = { from: this.doc.sel.primary().head, to: null }), null == t && (t = this.options.cursorScrollMargin)) : 'number' == typeof e ? (e = { from: Pos(e, 0), to: null }) : null == e.from && (e = { from: e, to: null }), e.to || (e.to = e.from), (e.margin = t || 0), null != e.from.line ? scrollToRange(this, e) : scrollToCoordsRange(this, e.from, e.to, e.margin); }), setSize: methodOp(function(e, t) { var n = this, r = function(e) { return 'number' == typeof e || /^\d+$/.test(String(e)) ? e + 'px' : e; }; null != e && (this.display.wrapper.style.width = r( e )), null != t && (this.display.wrapper.style.height = r(t)), this.options.lineWrapping && clearLineMeasurementCache(this); var i = this.display.viewFrom; this.doc.iter(i, this.display.viewTo, function(e) { if (e.widgets) for (var t = 0; t < e.widgets.length; t++) if (e.widgets[t].noHScroll) { regLineChange(n, i, 'widget'); break; } ++i; }), (this.curOp.forceUpdate = !0), signal(this, 'refresh', this); }), operation: function(e) { return runInOp(this, e); }, refresh: methodOp(function() { var e = this.display.cachedTextHeight; regChange( this ), (this.curOp.forceUpdate = !0), clearCaches(this), scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop), updateGutterSpace(this), (null == e || Math.abs(e - textHeight(this.display)) > 0.5) && estimateLineHeights(this), signal(this, 'refresh', this); }), swapDoc: methodOp(function(e) { var t = this.doc; return (t.cm = null), attachDoc(this, e), clearCaches(this), this.display.input.reset(), scrollToCoords(this, e.scrollLeft, e.scrollTop), (this.curOp.forceScroll = !0), signalLater(this, 'swapDoc', this, t), t; }), getInputField: function() { return this.display.input.getField(); }, getWrapperElement: function() { return this.display.wrapper; }, getScrollerElement: function() { return this.display.scroller; }, getGutterElement: function() { return this.display.gutters; } }), eventMixin(e), (e.registerHelper = function(t, r, i) { n.hasOwnProperty(t) || (n[t] = e[t] = { _global: [] }), (n[t][r] = i); }), (e.registerGlobalHelper = function(t, r, i, o) { e.registerHelper(t, r, o), n[t]._global.push({ pred: i, val: o }); }); })(CodeMirror$1); var je = 'iter insert remove copy getEditor constructor'.split(' '); for (var Ge in we.prototype) we.prototype.hasOwnProperty(Ge) && indexOf(je, Ge) < 0 && (CodeMirror$1.prototype[Ge] = (function(e) { return function() { return e.apply(this.doc, arguments); }; })(we.prototype[Ge])); return eventMixin( we ), (CodeMirror$1.inputStyles = { textarea: Ve, contenteditable: Re }), (CodeMirror$1.defineMode = function( e ) { CodeMirror$1.defaults.mode || 'null' == e || (CodeMirror$1.defaults.mode = e), defineMode.apply(this, arguments); }), (CodeMirror$1.defineMIME = defineMIME), CodeMirror$1.defineMode( 'null', function() { return { token: function(e) { return e.skipToEnd(); } }; } ), CodeMirror$1.defineMIME('text/plain', 'null'), (CodeMirror$1.defineExtension = function( e, t ) { CodeMirror$1.prototype[e] = t; }), (CodeMirror$1.defineDocExtension = function(e, t) { we.prototype[e] = t; }), (CodeMirror$1.fromTextArea = fromTextArea), (function addLegacyProps(e) { (e.off = off), (e.on = G), (e.wheelEventPixels = wheelEventPixels), (e.Doc = we), (e.splitLines = U), (e.countColumn = countColumn), (e.findColumn = findColumn), (e.isWordChar = isWordCharBasic), (e.Pass = A), (e.signal = signal), (e.Line = Q), (e.changeEnd = changeEnd), (e.scrollbarModel = le), (e.Pos = Pos), (e.cmpPos = cmp), (e.modes = X), (e.mimeModes = Y), (e.resolveMode = resolveMode), (e.getMode = getMode), (e.modeExtensions = Z), (e.extendMode = extendMode), (e.copyState = copyState), (e.startState = startState), (e.innerMode = innerMode), (e.commands = De), (e.keyMap = Pe), (e.keyName = keyName), (e.isModifierKey = isModifierKey), (e.lookupKey = lookupKey), (e.normalizeKeyMap = normalizeKeyMap), (e.StringStream = J), (e.SharedTextMarker = xe), (e.TextMarker = be), (e.LineWidget = ve), (e.e_preventDefault = e_preventDefault), (e.e_stopPropagation = e_stopPropagation), (e.e_stop = e_stop), (e.addClass = addClass), (e.contains = contains), (e.rmClass = L), (e.keyNames = Le); })(CodeMirror$1), (CodeMirror$1.version = '5.26.0'), CodeMirror$1; }); }, 1037: function(e, t, n) { !(function(e) { e(n(1036)); })(function(e) { 'use strict'; function expressionAllowed(e, t, n) { return ( /^(?:operator|sof|keyword c|case|new|export|default|[\[{}\(,;:]|=>)$/.test( t.lastType ) || ('quasi' == t.lastType && /\{\s*$/.test(e.string.slice(0, e.pos - (n || 0)))) ); } e.defineMode('javascript', function(t, n) { function readRegexp(e) { for (var t, n = !1, r = !1; null != (t = e.next()); ) { if (!n) { if ('/' == t && !r) return; '[' == t ? (r = !0) : r && ']' == t && (r = !1); } n = !n && '\\' == t; } } function ret(e, t, n) { return (r = e), (i = n), t; } function tokenBase(e, t) { var n = e.next(); if ('"' == n || "'" == n) return (t.tokenize = tokenString(n)), t.tokenize(e, t); if ('.' == n && e.match(/^\d+(?:[eE][+\-]?\d+)?/)) return ret('number', 'number'); if ('.' == n && e.match('..')) return ret('spread', 'meta'); if (/[\[\]{}\(\),;\:\.]/.test(n)) return ret(n); if ('=' == n && e.eat('>')) return ret('=>', 'operator'); if ('0' == n && e.eat(/x/i)) return e.eatWhile(/[\da-f]/i), ret('number', 'number'); if ('0' == n && e.eat(/o/i)) return e.eatWhile(/[0-7]/i), ret('number', 'number'); if ('0' == n && e.eat(/b/i)) return e.eatWhile(/[01]/i), ret('number', 'number'); if (/\d/.test(n)) return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/), ret( 'number', 'number' ); if ('/' == n) return e.eat('*') ? ((t.tokenize = tokenComment), tokenComment(e, t)) : e.eat('/') ? (e.skipToEnd(), ret('comment', 'comment')) : expressionAllowed(e, t, 1) ? (readRegexp(e), e.match( /^\b(([gimyu])(?![gimyu]*\2))+\b/ ), ret('regexp', 'string-2')) : (e.eatWhile(p), ret( 'operator', 'operator', e.current() )); if ('`' == n) return (t.tokenize = tokenQuasi), tokenQuasi(e, t); if ('#' == n) return e.skipToEnd(), ret('error', 'error'); if (p.test(n)) return ('>' == n && t.lexical && '>' == t.lexical.type) || e.eatWhile(p), ret('operator', 'operator', e.current()); if (u.test(n)) { e.eatWhile(u); var r = e.current(), i = d.propertyIsEnumerable(r) && d[r]; return i && '.' != t.lastType ? ret(i.type, i.style, r) : ret('variable', 'variable', r); } } function tokenString(e) { return function(t, n) { var r, i = !1; if (s && '@' == t.peek() && t.match(f)) return (n.tokenize = tokenBase), ret('jsonld-keyword', 'meta'); for ( ; null != (r = t.next()) && (r != e || i); ) i = !i && '\\' == r; return i || (n.tokenize = tokenBase), ret('string', 'string'); }; } function tokenComment(e, t) { for (var n, r = !1; (n = e.next()); ) { if ('/' == n && r) { t.tokenize = tokenBase; break; } r = '*' == n; } return ret('comment', 'comment'); } function tokenQuasi(e, t) { for (var n, r = !1; null != (n = e.next()); ) { if (!r && ('`' == n || ('$' == n && e.eat('{')))) { t.tokenize = tokenBase; break; } r = !r && '\\' == n; } return ret('quasi', 'string-2', e.current()); } function findFatArrow(e, t) { t.fatArrowAt && (t.fatArrowAt = null); var n = e.string.indexOf('=>', e.start); if (!(n < 0)) { if (c) { var r = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec( e.string.slice(e.start, n) ); r && (n = r.index); } for (var i = 0, o = !1, a = n - 1; a >= 0; --a) { var s = e.string.charAt(a), l = h.indexOf(s); if (l >= 0 && l < 3) { if (!i) { ++a; break; } if (0 == --i) { '(' == s && (o = !0); break; } } else if (l >= 3 && l < 6) ++i; else if (u.test(s)) o = !0; else { if (/["'\/]/.test(s)) return; if (o && !i) { ++a; break; } } } o && !i && (t.fatArrowAt = a); } } function JSLexical(e, t, n, r, i, o) { (this.indented = e), (this.column = t), (this.type = n), (this.prev = i), (this.info = o), null != r && (this.align = r); } function inScope(e, t) { for (var n = e.localVars; n; n = n.next) if (n.name == t) return !0; for ( var r = e.context; r; r = r.prev ) for (var n = r.vars; n; n = n.next) if (n.name == t) return !0; } function parseJS(e, t, n, r, i) { var o = e.cc; for ( (m.state = e), (m.stream = i), (m.marked = null), (m.cc = o), (m.style = t), e.lexical.hasOwnProperty( 'align' ) || (e.lexical.align = !0); ; ) { if ((o.length ? o.pop() : l ? expression : statement)(n, r)) { for (; o.length && o[o.length - 1].lex; ) o.pop()(); return m.marked ? m.marked : 'variable' == n && inScope(e, r) ? 'variable-2' : t; } } } function pass() { for ( var e = arguments.length - 1; e >= 0; e-- ) m.cc.push(arguments[e]); } function cont() { return pass.apply(null, arguments), !0; } function register(e) { function inList(t) { for (var n = t; n; n = n.next) if (n.name == e) return !0; return !1; } var t = m.state; if (((m.marked = 'def'), t.context)) { if (inList(t.localVars)) return; t.localVars = { name: e, next: t.localVars }; } else { if (inList(t.globalVars)) return; n.globalVars && (t.globalVars = { name: e, next: t.globalVars }); } } function pushcontext() { (m.state.context = { prev: m.state.context, vars: m.state.localVars }), (m.state.localVars = v); } function popcontext() { (m.state.localVars = m.state.context.vars), (m.state.context = m.state.context.prev); } function pushlex(e, t) { var n = function() { var n = m.state, r = n.indented; if ('stat' == n.lexical.type) r = n.lexical.indented; else for (var i = n.lexical; i && ')' == i.type && i.align; i = i.prev) r = i.indented; n.lexical = new JSLexical( r, m.stream.column(), e, null, n.lexical, t ); }; return (n.lex = !0), n; } function poplex() { var e = m.state; e.lexical.prev && (')' == e.lexical.type && (e.indented = e.lexical.indented), (e.lexical = e.lexical.prev)); } function expect(e) { function exp(t) { return t == e ? cont() : ';' == e ? pass() : cont(exp); } return exp; } function statement(e, t) { return 'var' == e ? cont(pushlex('vardef', t.length), vardef, expect(';'), poplex) : 'keyword a' == e ? cont(pushlex('form'), parenExpr, statement, poplex) : 'keyword b' == e ? cont(pushlex('form'), statement, poplex) : '{' == e ? cont(pushlex('}'), block, poplex) : ';' == e ? cont() : 'if' == e ? ('else' == m.state.lexical.info && m.state.cc[m.state.cc.length - 1] == poplex && m.state.cc.pop()(), cont( pushlex('form'), parenExpr, statement, poplex, maybeelse )) : 'function' == e ? cont(functiondef) : 'for' == e ? cont( pushlex('form'), forspec, statement, poplex ) : 'variable' == e ? c && 'type' == t ? ((m.marked = 'keyword'), cont( typeexpr, expect('operator'), typeexpr, expect(';') )) : cont( pushlex('stat'), maybelabel ) : 'switch' == e ? cont( pushlex('form'), parenExpr, expect('{'), pushlex('}', 'switch'), block, poplex, poplex ) : 'case' == e ? cont( expression, expect(':') ) : 'default' == e ? cont(expect(':')) : 'catch' == e ? cont( pushlex('form'), pushcontext, expect('('), funarg, expect(')'), statement, poplex, popcontext ) : 'class' == e ? cont( pushlex( 'form' ), className, poplex ) : 'export' == e ? cont( pushlex( 'stat' ), afterExport, poplex ) : 'import' == e ? cont( pushlex( 'stat' ), afterImport, poplex ) : 'module' == e ? cont( pushlex( 'form' ), pattern, expect( '{' ), pushlex( '}' ), block, poplex, poplex ) : 'async' == e ? cont( statement ) : '@' == t ? cont( expression, statement ) : pass( pushlex( 'stat' ), expression, expect( ';' ), poplex ); } function expression(e) { return expressionInner(e, !1); } function expressionNoComma(e) { return expressionInner(e, !0); } function parenExpr(e) { return '(' != e ? pass() : cont(pushlex(')'), expression, expect(')'), poplex); } function expressionInner(e, t) { if (m.state.fatArrowAt == m.stream.start) { var n = t ? arrowBodyNoComma : arrowBody; if ('(' == e) return cont( pushcontext, pushlex(')'), commasep(pattern, ')'), poplex, expect('=>'), n, popcontext ); if ('variable' == e) return pass(pushcontext, pattern, expect('=>'), n, popcontext); } var r = t ? maybeoperatorNoComma : maybeoperatorComma; return g.hasOwnProperty(e) ? cont(r) : 'function' == e ? cont(functiondef, r) : 'class' == e ? cont(pushlex('form'), classExpression, poplex) : 'keyword c' == e || 'async' == e ? cont(t ? maybeexpressionNoComma : maybeexpression) : '(' == e ? cont( pushlex(')'), maybeexpression, expect(')'), poplex, r ) : 'operator' == e || 'spread' == e ? cont(t ? expressionNoComma : expression) : '[' == e ? cont( pushlex(']'), arrayLiteral, poplex, r ) : '{' == e ? contCommasep(objprop, '}', null, r) : 'quasi' == e ? pass(quasi, r) : 'new' == e ? cont(maybeTarget(t)) : cont(); } function maybeexpression(e) { return e.match(/[;\}\)\],]/) ? pass() : pass(expression); } function maybeexpressionNoComma(e) { return e.match(/[;\}\)\],]/) ? pass() : pass(expressionNoComma); } function maybeoperatorComma(e, t) { return ',' == e ? cont(expression) : maybeoperatorNoComma(e, t, !1); } function maybeoperatorNoComma(e, t, n) { var r = 0 == n ? maybeoperatorComma : maybeoperatorNoComma, i = 0 == n ? expression : expressionNoComma; return '=>' == e ? cont(pushcontext, n ? arrowBodyNoComma : arrowBody, popcontext) : 'operator' == e ? /\+\+|--/.test(t) ? cont(r) : '?' == t ? cont(expression, expect(':'), i) : cont(i) : 'quasi' == e ? pass(quasi, r) : ';' != e ? '(' == e ? contCommasep(expressionNoComma, ')', 'call', r) : '.' == e ? cont(property, r) : '[' == e ? cont( pushlex(']'), maybeexpression, expect(']'), poplex, r ) : void 0 : void 0; } function quasi(e, t) { return 'quasi' != e ? pass() : '${' != t.slice(t.length - 2) ? cont(quasi) : cont(expression, continueQuasi); } function continueQuasi(e) { if ('}' == e) return (m.marked = 'string-2'), (m.state.tokenize = tokenQuasi), cont(quasi); } function arrowBody(e) { return findFatArrow( m.stream, m.state ), pass('{' == e ? statement : expression); } function arrowBodyNoComma(e) { return findFatArrow( m.stream, m.state ), pass('{' == e ? statement : expressionNoComma); } function maybeTarget(e) { return function(t) { return '.' == t ? cont(e ? targetNoComma : target) : pass(e ? expressionNoComma : expression); }; } function target(e, t) { if ('target' == t) return (m.marked = 'keyword'), cont(maybeoperatorComma); } function targetNoComma(e, t) { if ('target' == t) return (m.marked = 'keyword'), cont(maybeoperatorNoComma); } function maybelabel(e) { return ':' == e ? cont(poplex, statement) : pass(maybeoperatorComma, expect(';'), poplex); } function property(e) { if ('variable' == e) return (m.marked = 'property'), cont(); } function objprop(e, t) { return 'async' == e ? ((m.marked = 'property'), cont(objprop)) : 'variable' == e || 'keyword' == m.style ? ((m.marked = 'property'), cont( 'get' == t || 'set' == t ? getterSetter : afterprop )) : 'number' == e || 'string' == e ? ((m.marked = s ? 'property' : m.style + ' property'), cont(afterprop)) : 'jsonld-keyword' == e ? cont(afterprop) : 'modifier' == e ? cont(objprop) : '[' == e ? cont(expression, expect(']'), afterprop) : 'spread' == e ? cont(expression) : ':' == e ? pass(afterprop) : void 0; } function getterSetter(e) { return 'variable' != e ? pass(afterprop) : ((m.marked = 'property'), cont(functiondef)); } function afterprop(e) { return ':' == e ? cont(expressionNoComma) : '(' == e ? pass(functiondef) : void 0; } function commasep(e, t, n) { function proceed(r, i) { if (n ? n.indexOf(r) > -1 : ',' == r) { var o = m.state.lexical; return 'call' == o.info && (o.pos = (o.pos || 0) + 1), cont(function(n, r) { return n == t || r == t ? pass() : pass(e); }, proceed); } return r == t || i == t ? cont() : cont(expect(t)); } return function(n, r) { return n == t || r == t ? cont() : pass(e, proceed); }; } function contCommasep(e, t, n) { for (var r = 3; r < arguments.length; r++) m.cc.push(arguments[r]); return cont(pushlex(t, n), commasep(e, t), poplex); } function block(e) { return '}' == e ? cont() : pass(statement, block); } function maybetype(e, t) { if (c) { if (':' == e) return cont(typeexpr); if ('?' == t) return cont(maybetype); } } function typeexpr(e) { return 'variable' == e ? ((m.marked = 'variable-3'), cont(afterType)) : 'string' == e || 'number' == e || 'atom' == e ? cont(afterType) : '{' == e ? cont( pushlex('}'), commasep(typeprop, '}', ',;'), poplex, afterType ) : '(' == e ? cont(commasep(typearg, ')'), maybeReturnType) : void 0; } function maybeReturnType(e) { if ('=>' == e) return cont(typeexpr); } function typeprop(e, t) { return 'variable' == e || 'keyword' == m.style ? ((m.marked = 'property'), cont(typeprop)) : '?' == t ? cont(typeprop) : ':' == e ? cont(typeexpr) : '[' == e ? cont(expression, maybetype, expect(']'), typeprop) : void 0; } function typearg(e) { return 'variable' == e ? cont(typearg) : ':' == e ? cont(typeexpr) : void 0; } function afterType(e, t) { return '<' == t ? cont(pushlex('>'), commasep(typeexpr, '>'), poplex, afterType) : '|' == t || '.' == e ? cont(typeexpr) : '[' == e ? cont(expect(']'), afterType) : 'extends' == t ? cont(typeexpr) : void 0; } function vardef() { return pass(pattern, maybetype, maybeAssign, vardefCont); } function pattern(e, t) { return 'modifier' == e ? cont(pattern) : 'variable' == e ? (register(t), cont()) : 'spread' == e ? cont(pattern) : '[' == e ? contCommasep(pattern, ']') : '{' == e ? contCommasep(proppattern, '}') : void 0; } function proppattern(e, t) { return 'variable' != e || m.stream.match(/^\s*:/, !1) ? ('variable' == e && (m.marked = 'property'), 'spread' == e ? cont(pattern) : '}' == e ? pass() : cont(expect(':'), pattern, maybeAssign)) : (register(t), cont(maybeAssign)); } function maybeAssign(e, t) { if ('=' == t) return cont(expressionNoComma); } function vardefCont(e) { if (',' == e) return cont(vardef); } function maybeelse(e, t) { if ('keyword b' == e && 'else' == t) return cont(pushlex('form', 'else'), statement, poplex); } function forspec(e) { if ('(' == e) return cont(pushlex(')'), forspec1, expect(')'), poplex); } function forspec1(e) { return 'var' == e ? cont(vardef, expect(';'), forspec2) : ';' == e ? cont(forspec2) : 'variable' == e ? cont(formaybeinof) : pass(expression, expect(';'), forspec2); } function formaybeinof(e, t) { return 'in' == t || 'of' == t ? ((m.marked = 'keyword'), cont(expression)) : cont(maybeoperatorComma, forspec2); } function forspec2(e, t) { return ';' == e ? cont(forspec3) : 'in' == t || 'of' == t ? ((m.marked = 'keyword'), cont(expression)) : pass(expression, expect(';'), forspec3); } function forspec3(e) { ')' != e && cont(expression); } function functiondef(e, t) { return '*' == t ? ((m.marked = 'keyword'), cont(functiondef)) : 'variable' == e ? (register(t), cont(functiondef)) : '(' == e ? cont( pushcontext, pushlex(')'), commasep(funarg, ')'), poplex, maybetype, statement, popcontext ) : c && '<' == t ? cont( pushlex('>'), commasep(typeexpr, '>'), poplex, functiondef ) : void 0; } function funarg(e) { return 'spread' == e ? cont(funarg) : pass(pattern, maybetype, maybeAssign); } function classExpression(e, t) { return 'variable' == e ? className(e, t) : classNameAfter(e, t); } function className(e, t) { if ('variable' == e) return register(t), cont(classNameAfter); } function classNameAfter(e, t) { return '<' == t ? cont( pushlex('>'), commasep(typeexpr, '>'), poplex, classNameAfter ) : 'extends' == t || 'implements' == t || (c && ',' == e) ? cont(c ? typeexpr : expression, classNameAfter) : '{' == e ? cont(pushlex('}'), classBody, poplex) : void 0; } function classBody(e, t) { return 'variable' == e || 'keyword' == m.style ? ('async' == t || 'static' == t || 'get' == t || 'set' == t || (c && ('public' == t || 'private' == t || 'protected' == t || 'readonly' == t || 'abstract' == t))) && m.stream.match(/^\s+[\w$\xa1-\uffff]/, !1) ? ((m.marked = 'keyword'), cont(classBody)) : ((m.marked = 'property'), cont( c ? classfield : functiondef, classBody )) : '[' == e ? cont( expression, expect(']'), c ? classfield : functiondef, classBody ) : '*' == t ? ((m.marked = 'keyword'), cont(classBody)) : ';' == e ? cont(classBody) : '}' == e ? cont() : '@' == t ? cont(expression, classBody) : void 0; } function classfield(e, t) { return '?' == t ? cont(classfield) : ':' == e ? cont(typeexpr, maybeAssign) : '=' == t ? cont(expressionNoComma) : pass(functiondef); } function afterExport(e, t) { return '*' == t ? ((m.marked = 'keyword'), cont(maybeFrom, expect(';'))) : 'default' == t ? ((m.marked = 'keyword'), cont(expression, expect(';'))) : '{' == e ? cont(commasep(exportField, '}'), maybeFrom, expect(';')) : pass(statement); } function exportField(e, t) { return 'as' == t ? ((m.marked = 'keyword'), cont(expect('variable'))) : 'variable' == e ? pass(expressionNoComma, exportField) : void 0; } function afterImport(e) { return 'string' == e ? cont() : pass(importSpec, maybeMoreImports, maybeFrom); } function importSpec(e, t) { return '{' == e ? contCommasep(importSpec, '}') : ('variable' == e && register(t), '*' == t && (m.marked = 'keyword'), cont(maybeAs)); } function maybeMoreImports(e) { if (',' == e) return cont(importSpec, maybeMoreImports); } function maybeAs(e, t) { if ('as' == t) return (m.marked = 'keyword'), cont(importSpec); } function maybeFrom(e, t) { if ('from' == t) return (m.marked = 'keyword'), cont(expression); } function arrayLiteral(e) { return ']' == e ? cont() : pass(commasep(expressionNoComma, ']')); } function isContinuedStatement(e, t) { return ( 'operator' == e.lastType || ',' == e.lastType || p.test(t.charAt(0)) || /[,.]/.test(t.charAt(0)) ); } var r, i, o = t.indentUnit, a = n.statementIndent, s = n.jsonld, l = n.json || s, c = n.typescript, u = n.wordCharacters || /[\w$\xa1-\uffff]/, d = (function() { function kw(e) { return { type: e, style: 'keyword' }; } var e = kw('keyword a'), t = kw('keyword b'), n = kw('keyword c'), r = kw('operator'), i = { type: 'atom', style: 'atom' }, o = { if: kw('if'), while: e, with: e, else: t, do: t, try: t, finally: t, return: n, break: n, continue: n, new: kw('new'), delete: n, throw: n, debugger: n, var: kw('var'), const: kw('var'), let: kw('var'), function: kw('function'), catch: kw('catch'), for: kw('for'), switch: kw('switch'), case: kw('case'), default: kw('default'), in: r, typeof: r, instanceof: r, true: i, false: i, null: i, undefined: i, NaN: i, Infinity: i, this: kw('this'), class: kw('class'), super: kw('atom'), yield: n, export: kw('export'), import: kw('import'), extends: n, await: n, async: kw('async') }; if (c) { var a = { type: 'variable', style: 'variable-3' }, s = { interface: kw('class'), implements: n, namespace: n, module: kw('module'), enum: kw('module'), public: kw('modifier'), private: kw('modifier'), protected: kw('modifier'), abstract: kw('modifier'), as: r, string: a, number: a, boolean: a, any: a }; for (var l in s) o[l] = s[l]; } return o; })(), p = /[+\-*&%=<>!?|~^@]/, f = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/, h = '([{}])', g = { atom: !0, number: !0, variable: !0, string: !0, regexp: !0, this: !0, 'jsonld-keyword': !0 }, m = { state: null, column: null, marked: null, cc: null }, v = { name: 'this', next: { name: 'arguments' } }; return (poplex.lex = !0), { startState: function(e) { var t = { tokenize: tokenBase, lastType: 'sof', cc: [], lexical: new JSLexical((e || 0) - o, 0, 'block', !1), localVars: n.localVars, context: n.localVars && { vars: n.localVars }, indented: e || 0 }; return n.globalVars && 'object' == typeof n.globalVars && (t.globalVars = n.globalVars), t; }, token: function(e, t) { if ( (e.sol() && (t.lexical.hasOwnProperty('align') || (t.lexical.align = !1), (t.indented = e.indentation()), findFatArrow( e, t )), t.tokenize != tokenComment && e.eatSpace()) ) return null; var n = t.tokenize(e, t); return 'comment' == r ? n : ((t.lastType = 'operator' != r || ('++' != i && '--' != i) ? r : 'incdec'), parseJS(t, n, r, i, e)); }, indent: function(t, r) { if (t.tokenize == tokenComment) return e.Pass; if (t.tokenize != tokenBase) return 0; var i, s = r && r.charAt(0), l = t.lexical; if (!/^\s*else\b/.test(r)) for (var c = t.cc.length - 1; c >= 0; --c) { var u = t.cc[c]; if (u == poplex) l = l.prev; else if (u != maybeelse) break; } for ( ; ('stat' == l.type || 'form' == l.type) && ('}' == s || ((i = t.cc[t.cc.length - 1]) && (i == maybeoperatorComma || i == maybeoperatorNoComma) && !/^[,\.=+\-*:?[\(]/.test(r))); ) l = l.prev; a && ')' == l.type && 'stat' == l.prev.type && (l = l.prev); var d = l.type, p = s == d; return 'vardef' == d ? l.indented + ('operator' == t.lastType || ',' == t.lastType ? l.info + 1 : 0) : 'form' == d && '{' == s ? l.indented : 'form' == d ? l.indented + o : 'stat' == d ? l.indented + (isContinuedStatement(t, r) ? a || o : 0) : 'switch' != l.info || p || 0 == n.doubleIndentSwitch ? l.align ? l.column + (p ? 0 : 1) : l.indented + (p ? 0 : o) : l.indented + (/^(?:case|default)\b/.test(r) ? o : 2 * o); }, electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, blockCommentStart: l ? null : '/*', blockCommentEnd: l ? null : '*/', lineComment: l ? null : '//', fold: 'brace', closeBrackets: '()[]{}\'\'""``', helperType: l ? 'json' : 'javascript', jsonldMode: s, jsonMode: l, expressionAllowed: expressionAllowed, skipExpression: function(e) { var t = e.cc[e.cc.length - 1]; (t != expression && t != expressionNoComma) || e.cc.pop(); } }; }), e.registerHelper( 'wordChars', 'javascript', /[\w$]/ ), e.defineMIME('text/javascript', 'javascript'), e.defineMIME('text/ecmascript', 'javascript'), e.defineMIME('application/javascript', 'javascript'), e.defineMIME('application/x-javascript', 'javascript'), e.defineMIME('application/ecmascript', 'javascript'), e.defineMIME('application/json', { name: 'javascript', json: !0 }), e.defineMIME('application/x-json', { name: 'javascript', json: !0 }), e.defineMIME('application/ld+json', { name: 'javascript', jsonld: !0 }), e.defineMIME('text/typescript', { name: 'javascript', typescript: !0 }), e.defineMIME('application/typescript', { name: 'javascript', typescript: !0 }); }); }, 1038: function(e, t, n) { !(function(e) { e(n(1036), n(1039), n(1037)); })(function(e) { 'use strict'; function Context(e, t, n, r) { (this.state = e), (this.mode = t), (this.depth = n), (this.prev = r); } function copyContext(t) { return new Context( e.copyState(t.mode, t.state), t.mode, t.depth, t.prev && copyContext(t.prev) ); } e.defineMode( 'jsx', function(t, n) { function flatXMLIndent(e) { var t = e.tagName; e.tagName = null; var n = r.indent(e, ''); return (e.tagName = t), n; } function token(e, t) { return t.context.mode == r ? xmlToken(e, t, t.context) : jsToken(e, t, t.context); } function xmlToken(n, o, a) { if (2 == a.depth) return n.match(/^.*?\*\//) ? (a.depth = 1) : n.skipToEnd(), 'comment'; if ('{' == n.peek()) { r.skipAttribute(a.state); var s = flatXMLIndent(a.state), l = a.state.context; if (l && n.match(/^[^>]*>\s*$/, !1)) { for (; l.prev && !l.startOfLine; ) l = l.prev; l.startOfLine ? (s -= t.indentUnit) : a.prev.state.lexical && (s = a.prev.state.lexical.indented); } else 1 == a.depth && (s += t.indentUnit); return (o.context = new Context( e.startState(i, s), i, 0, o.context )), null; } if (1 == a.depth) { if ('<' == n.peek()) return r.skipAttribute(a.state), (o.context = new Context( e.startState(r, flatXMLIndent(a.state)), r, 0, o.context )), null; if (n.match('//')) return n.skipToEnd(), 'comment'; if (n.match('/*')) return (a.depth = 2), token(n, o); } var c, u = r.token(n, a.state), d = n.current(); return /\btag\b/.test(u) ? />$/.test(d) ? a.state.context ? (a.depth = 0) : (o.context = o.context.prev) : /^ -1 && n.backUp(d.length - c), u; } function jsToken(t, n, o) { if ('<' == t.peek() && i.expressionAllowed(t, o.state)) return i.skipExpression(o.state), (n.context = new Context( e.startState(r, i.indent(o.state, '')), r, 0, n.context )), null; var a = i.token(t, o.state); if (!a && null != o.depth) { var s = t.current(); '{' == s ? o.depth++ : '}' == s && 0 == --o.depth && (n.context = n.context.prev); } return a; } var r = e.getMode(t, { name: 'xml', allowMissing: !0, multilineTagIndentPastTag: !1 }), i = e.getMode(t, (n && n.base) || 'javascript'); return { startState: function() { return { context: new Context(e.startState(i), i) }; }, copyState: function(e) { return { context: copyContext(e.context) }; }, token: token, indent: function(e, t, n) { return e.context.mode.indent(e.context.state, t, n); }, innerMode: function(e) { return e.context; } }; }, 'xml', 'javascript' ), e.defineMIME('text/jsx', 'jsx'), e.defineMIME('text/typescript-jsx', { name: 'jsx', base: { name: 'javascript', typescript: !0 } }); }); }, 1039: function(e, t, n) { !(function(e) { e(n(1036)); })(function(e) { 'use strict'; var t = { autoSelfClosers: { area: !0, base: !0, br: !0, col: !0, command: !0, embed: !0, frame: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0, menuitem: !0 }, implicitlyClosed: { dd: !0, li: !0, optgroup: !0, option: !0, p: !0, rp: !0, rt: !0, tbody: !0, td: !0, tfoot: !0, th: !0, tr: !0 }, contextGrabbers: { dd: { dd: !0, dt: !0 }, dt: { dd: !0, dt: !0 }, li: { li: !0 }, option: { option: !0, optgroup: !0 }, optgroup: { optgroup: !0 }, p: { address: !0, article: !0, aside: !0, blockquote: !0, dir: !0, div: !0, dl: !0, fieldset: !0, footer: !0, form: !0, h1: !0, h2: !0, h3: !0, h4: !0, h5: !0, h6: !0, header: !0, hgroup: !0, hr: !0, menu: !0, nav: !0, ol: !0, p: !0, pre: !0, section: !0, table: !0, ul: !0 }, rp: { rp: !0, rt: !0 }, rt: { rp: !0, rt: !0 }, tbody: { tbody: !0, tfoot: !0 }, td: { td: !0, th: !0 }, tfoot: { tbody: !0 }, th: { td: !0, th: !0 }, thead: { tbody: !0, tfoot: !0 }, tr: { tr: !0 } }, doNotIndent: { pre: !0 }, allowUnquoted: !0, allowMissing: !0, caseFold: !0 }, n = { autoSelfClosers: {}, implicitlyClosed: {}, contextGrabbers: {}, doNotIndent: {}, allowUnquoted: !1, allowMissing: !1, caseFold: !1 }; e.defineMode('xml', function(r, i) { function inText(e, t) { function chain(n) { return (t.tokenize = n), n(e, t); } var n = e.next(); if ('<' == n) return e.eat('!') ? e.eat('[') ? e.match('CDATA[') ? chain(inBlock('atom', ']]>')) : null : e.match('--') ? chain(inBlock('comment', '--\x3e')) : e.match('DOCTYPE', !0, !0) ? (e.eatWhile(/[\w\._\-]/), chain(doctype(1))) : null : e.eat('?') ? (e.eatWhile(/[\w\._\-]/), (t.tokenize = inBlock( 'meta', '?>' )), 'meta') : ((c = e.eat('/') ? 'closeTag' : 'openTag'), (t.tokenize = inTag), 'tag bracket'); if ('&' == n) { var r; return (r = e.eat('#') ? e.eat('x') ? e.eatWhile(/[a-fA-F\d]/) && e.eat(';') : e.eatWhile(/[\d]/) && e.eat(';') : e.eatWhile(/[\w\.\-:]/) && e.eat(';')), r ? 'atom' : 'error'; } return e.eatWhile(/[^&<]/), null; } function inTag(e, t) { var n = e.next(); if ('>' == n || ('/' == n && e.eat('>'))) return (t.tokenize = inText), (c = '>' == n ? 'endTag' : 'selfcloseTag'), 'tag bracket'; if ('=' == n) return (c = 'equals'), null; if ('<' == n) { (t.tokenize = inText), (t.state = baseState), (t.tagName = t.tagStart = null); var r = t.tokenize(e, t); return r ? r + ' tag error' : 'tag error'; } return /[\'\"]/.test(n) ? ((t.tokenize = inAttribute( n )), (t.stringStartCol = e.column()), t.tokenize(e, t)) : (e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/), 'word'); } function inAttribute(e) { var t = function(t, n) { for (; !t.eol(); ) if (t.next() == e) { n.tokenize = inTag; break; } return 'string'; }; return (t.isInAttribute = !0), t; } function inBlock(e, t) { return function(n, r) { for (; !n.eol(); ) { if (n.match(t)) { r.tokenize = inText; break; } n.next(); } return e; }; } function doctype(e) { return function(t, n) { for (var r; null != (r = t.next()); ) { if ('<' == r) return (n.tokenize = doctype(e + 1)), n.tokenize(t, n); if ('>' == r) { if (1 == e) { n.tokenize = inText; break; } return (n.tokenize = doctype(e - 1)), n.tokenize(t, n); } } return 'meta'; }; } function Context(e, t, n) { (this.prev = e.context), (this.tagName = t), (this.indent = e.indented), (this.startOfLine = n), (a.doNotIndent.hasOwnProperty(t) || (e.context && e.context.noIndent)) && (this.noIndent = !0); } function popContext(e) { e.context && (e.context = e.context.prev); } function maybePopContext(e, t) { for (var n; ; ) { if (!e.context) return; if ( ((n = e.context.tagName), !a.contextGrabbers.hasOwnProperty(n) || !a.contextGrabbers[n].hasOwnProperty(t)) ) return; popContext(e); } } function baseState(e, t, n) { return 'openTag' == e ? ((n.tagStart = t.column()), tagNameState) : 'closeTag' == e ? closeTagNameState : baseState; } function tagNameState(e, t, n) { return 'word' == e ? ((n.tagName = t.current()), (u = 'tag'), attrState) : ((u = 'error'), tagNameState); } function closeTagNameState(e, t, n) { if ('word' == e) { var r = t.current(); return n.context && n.context.tagName != r && a.implicitlyClosed.hasOwnProperty(n.context.tagName) && popContext(n), (n.context && n.context.tagName == r) || !1 === a.matchClosing ? ((u = 'tag'), closeState) : ((u = 'tag error'), closeStateErr); } return (u = 'error'), closeStateErr; } function closeState(e, t, n) { return 'endTag' != e ? ((u = 'error'), closeState) : (popContext(n), baseState); } function closeStateErr(e, t, n) { return (u = 'error'), closeState(e, t, n); } function attrState(e, t, n) { if ('word' == e) return (u = 'attribute'), attrEqState; if ('endTag' == e || 'selfcloseTag' == e) { var r = n.tagName, i = n.tagStart; return (n.tagName = n.tagStart = null), 'selfcloseTag' == e || a.autoSelfClosers.hasOwnProperty(r) ? maybePopContext(n, r) : (maybePopContext(n, r), (n.context = new Context( n, r, i == n.indented ))), baseState; } return (u = 'error'), attrState; } function attrEqState(e, t, n) { return 'equals' == e ? attrValueState : (a.allowMissing || (u = 'error'), attrState(e, t, n)); } function attrValueState(e, t, n) { return 'string' == e ? attrContinuedState : 'word' == e && a.allowUnquoted ? ((u = 'string'), attrState) : ((u = 'error'), attrState(e, t, n)); } function attrContinuedState(e, t, n) { return 'string' == e ? attrContinuedState : attrState(e, t, n); } var o = r.indentUnit, a = {}, s = i.htmlMode ? t : n; for (var l in s) a[l] = s[l]; for (var l in i) a[l] = i[l]; var c, u; return (inText.isInText = !0), { startState: function(e) { var t = { tokenize: inText, state: baseState, indented: e || 0, tagName: null, tagStart: null, context: null }; return null != e && (t.baseIndent = e), t; }, token: function(e, t) { if ( (!t.tagName && e.sol() && (t.indented = e.indentation()), e.eatSpace()) ) return null; c = null; var n = t.tokenize(e, t); return (n || c) && 'comment' != n && ((u = null), (t.state = t.state(c || n, e, t)), u && (n = 'error' == u ? n + ' error' : u)), n; }, indent: function(t, n, r) { var i = t.context; if (t.tokenize.isInAttribute) return t.tagStart == t.indented ? t.stringStartCol + 1 : t.indented + o; if (i && i.noIndent) return e.Pass; if (t.tokenize != inTag && t.tokenize != inText) return r ? r.match(/^(\s*)/)[0].length : 0; if (t.tagName) return !1 !== a.multilineTagIndentPastTag ? t.tagStart + t.tagName.length + 2 : t.tagStart + o * (a.multilineTagIndentFactor || 1); if (a.alignCDATA && /$/, blockCommentStart: '\x3c!--', blockCommentEnd: '--\x3e', configuration: a.htmlMode ? 'html' : 'xml', helperType: a.htmlMode ? 'html' : 'xml', skipAttribute: function(e) { e.state == attrValueState && (e.state = attrState); } }; }), e.defineMIME( 'text/xml', 'xml' ), e.defineMIME('application/xml', 'xml'), e.mimeModes.hasOwnProperty('text/html') || e.defineMIME('text/html', { name: 'xml', htmlMode: !0 }); }); }, 1040: function(e, t, n) { (function(t) { function debounce(e, t, r) { function invokeFunc(t) { var n = i, r = o; return (i = o = void 0), (u = t), (s = e.apply(r, n)); } function leadingEdge(e) { return (u = e), (l = setTimeout(timerExpired, t)), d ? invokeFunc(e) : s; } function remainingWait(e) { var n = e - c, r = e - u, i = t - n; return p ? m(i, a - r) : i; } function shouldInvoke(e) { var n = e - c, r = e - u; return void 0 === c || n >= t || n < 0 || (p && r >= a); } function timerExpired() { var e = v(); if (shouldInvoke(e)) return trailingEdge(e); l = setTimeout(timerExpired, remainingWait(e)); } function trailingEdge(e) { return (l = void 0), f && i ? invokeFunc(e) : ((i = o = void 0), s); } function cancel() { void 0 !== l && clearTimeout(l), (u = 0), (i = c = o = l = void 0); } function flush() { return void 0 === l ? s : trailingEdge(v()); } function debounced() { var e = v(), n = shouldInvoke(e); if (((i = arguments), (o = this), (c = e), n)) { if (void 0 === l) return leadingEdge(c); if (p) return (l = setTimeout(timerExpired, t)), invokeFunc(c); } return void 0 === l && (l = setTimeout(timerExpired, t)), s; } var i, o, a, s, l, c, u = 0, d = !1, p = !1, f = !0; if ('function' != typeof e) throw new TypeError(n); return (t = toNumber(t) || 0), isObject(r) && ((d = !!r.leading), (p = 'maxWait' in r), (a = p ? g(toNumber(r.maxWait) || 0, t) : a), (f = 'trailing' in r ? !!r.trailing : f)), (debounced.cancel = cancel), (debounced.flush = flush), debounced; } function isObject(e) { var t = typeof e; return !!e && ('object' == t || 'function' == t); } function isObjectLike(e) { return !!e && 'object' == typeof e; } function isSymbol(e) { return 'symbol' == typeof e || (isObjectLike(e) && h.call(e) == i); } function toNumber(e) { if ('number' == typeof e) return e; if (isSymbol(e)) return r; if (isObject(e)) { var t = 'function' == typeof e.valueOf ? e.valueOf() : e; e = isObject(t) ? t + '' : t; } if ('string' != typeof e) return 0 === e ? e : +e; e = e.replace(o, ''); var n = s.test(e); return n || l.test(e) ? c(e.slice(2), n ? 2 : 8) : a.test(e) ? r : +e; } var n = 'Expected a function', r = NaN, i = '[object Symbol]', o = /^\s+|\s+$/g, a = /^[-+]0x[0-9a-f]+$/i, s = /^0b[01]+$/i, l = /^0o[0-7]+$/i, c = parseInt, u = 'object' == typeof t && t && t.Object === Object && t, d = 'object' == typeof self && self && self.Object === Object && self, p = u || d || Function('return this')(), f = Object.prototype, h = f.toString, g = Math.max, m = Math.min, v = function() { return p.Date.now(); }; e.exports = debounce; }.call(t, n(16))); }, 1041: function(e, t, n) { 'use strict'; function normalizeLineEndings(e) { return e ? e.replace(/\r\n|\r/g, '\n') : e; } var r = n(0), i = n(194), o = i.findDOMNode, a = n(37), s = n(1040), l = r.createClass({ displayName: 'CodeMirror', propTypes: { className: r.PropTypes.any, codeMirrorInstance: r.PropTypes.func, defaultValue: r.PropTypes.string, onChange: r.PropTypes.func, onFocusChange: r.PropTypes.func, onScroll: r.PropTypes.func, options: r.PropTypes.object, path: r.PropTypes.string, value: r.PropTypes.string, preserveScrollPosition: r.PropTypes.bool }, getDefaultProps: function getDefaultProps() { return { preserveScrollPosition: !1 }; }, getCodeMirrorInstance: function getCodeMirrorInstance() { return this.props.codeMirrorInstance || n(1036); }, getInitialState: function getInitialState() { return { isFocused: !1 }; }, componentWillMount: function componentWillMount() { this.componentWillReceiveProps = s(this.componentWillReceiveProps, 0); }, componentDidMount: function componentDidMount() { var e = o(this.refs.textarea), t = this.getCodeMirrorInstance(); (this.codeMirror = t.fromTextArea( e, this.props.options )), this.codeMirror.on( 'change', this.codemirrorValueChanged ), this.codeMirror.on( 'focus', this.focusChanged.bind(this, !0) ), this.codeMirror.on( 'blur', this.focusChanged.bind(this, !1) ), this.codeMirror.on( 'scroll', this.scrollChanged ), this.codeMirror.setValue( this.props.defaultValue || this.props.value || '' ); }, componentWillUnmount: function componentWillUnmount() { this.codeMirror && this.codeMirror.toTextArea(); }, componentWillReceiveProps: function componentWillReceiveProps(e) { if ( this.codeMirror && void 0 !== e.value && normalizeLineEndings(this.codeMirror.getValue()) !== normalizeLineEndings(e.value) ) if (this.props.preserveScrollPosition) { var t = this.codeMirror.getScrollInfo(); this.codeMirror.setValue(e.value), this.codeMirror.scrollTo( t.left, t.top ); } else this.codeMirror.setValue(e.value); if ('object' == typeof e.options) for (var n in e.options) e.options.hasOwnProperty(n) && this.codeMirror.setOption(n, e.options[n]); }, getCodeMirror: function getCodeMirror() { return this.codeMirror; }, focus: function focus() { this.codeMirror && this.codeMirror.focus(); }, focusChanged: function focusChanged(e) { this.setState({ isFocused: e }), this.props.onFocusChange && this.props.onFocusChange(e); }, scrollChanged: function scrollChanged(e) { this.props.onScroll && this.props.onScroll(e.getScrollInfo()); }, codemirrorValueChanged: function codemirrorValueChanged(e, t) { this.props.onChange && 'setValue' !== t.origin && this.props.onChange(e.getValue(), t); }, render: function render() { var e = a( 'ReactCodeMirror', this.state.isFocused ? 'ReactCodeMirror--focused' : null, this.props.className ); return r.createElement( 'div', { className: e }, r.createElement('textarea', { ref: 'textarea', name: this.props.path, defaultValue: this.props.value, autoComplete: 'off' }) ); } }); e.exports = l; }, 1042: function(e, t, n) { (t = e.exports = n(330)(void 0)), t.push([ e.i, "/* BASICS */\n\n.CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-family: monospace;\n height: 300px;\n color: black;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre {\n padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n}\n.cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n}\n.cm-fat-cursor div.CodeMirror-cursors {\n z-index: 1;\n}\n\n.cm-animate-fat-cursor {\n width: auto;\n border: 0;\n -webkit-animation: blink 1.06s steps(1) infinite;\n -moz-animation: blink 1.06s steps(1) infinite;\n animation: blink 1.06s steps(1) infinite;\n background-color: #7e7;\n}\n@-moz-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@-webkit-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\n.CodeMirror-overwrite .CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-rulers {\n position: absolute;\n left: 0; right: 0; top: -50px; bottom: -20px;\n overflow: hidden;\n}\n.CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0; bottom: 0;\n position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3 {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n.CodeMirror-composing { border-bottom: 2px solid; }\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n position: relative;\n overflow: hidden;\n background: white;\n}\n\n.CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 30px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -30px; margin-right: -30px;\n padding-bottom: 30px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n}\n.CodeMirror-sizer {\n position: relative;\n border-right: 30px solid transparent;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 6;\n display: none;\n}\n.CodeMirror-vscrollbar {\n right: 0; top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n bottom: 0; left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n position: absolute; left: 0; top: 0;\n min-height: 100%;\n z-index: 3;\n}\n.CodeMirror-gutter {\n white-space: normal;\n height: 100%;\n display: inline-block;\n vertical-align: top;\n margin-bottom: -30px;\n}\n.CodeMirror-gutter-wrapper {\n position: absolute;\n z-index: 4;\n background: none !important;\n border: none !important;\n}\n.CodeMirror-gutter-background {\n position: absolute;\n top: 0; bottom: 0;\n z-index: 4;\n}\n.CodeMirror-gutter-elt {\n position: absolute;\n cursor: default;\n z-index: 4;\n}\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\n\n.CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre {\n /* Reset some styles that the rest of the page might have set */\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: inherit;\n color: inherit;\n z-index: 2;\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n}\n.CodeMirror-wrap pre {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n}\n\n.CodeMirror-linebackground {\n position: absolute;\n left: 0; right: 0; top: 0; bottom: 0;\n z-index: 0;\n}\n\n.CodeMirror-linewidget {\n position: relative;\n z-index: 2;\n overflow: auto;\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-rtl pre { direction: rtl; }\n\n.CodeMirror-code {\n outline: none;\n}\n\n/* Force content-box sizing for the elements where we expect it */\n.CodeMirror-scroll,\n.CodeMirror-sizer,\n.CodeMirror-gutter,\n.CodeMirror-gutters,\n.CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n\n.CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n}\n.CodeMirror-measure pre { position: static; }\n\ndiv.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n z-index: 3;\n}\ndiv.CodeMirror-dragcursors {\n visibility: visible;\n}\n\n.CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n background: #ffa;\n background: rgba(255, 255, 0, .4);\n}\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n /* Hide the cursor when printing */\n .CodeMirror div.CodeMirror-cursors {\n visibility: hidden;\n }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n", '' ]); }, 1043: function(e, t, n) { (t = e.exports = n(330)(void 0)), t.push([ e.i, '/*\n\n Name: Base16 Default Light\n Author: Chris Kempson (http://chriskempson.com)\n\n CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)\n Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; }\n.cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right: 0px; }\n.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; }\n.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; }\n.cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; }\n.cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; }\n\n.cm-s-base16-light span.cm-comment { color: #8f5536; }\n.cm-s-base16-light span.cm-atom { color: #aa759f; }\n.cm-s-base16-light span.cm-number { color: #aa759f; }\n\n.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute { color: #90a959; }\n.cm-s-base16-light span.cm-keyword { color: #ac4142; }\n.cm-s-base16-light span.cm-string { color: #f4bf75; }\n\n.cm-s-base16-light span.cm-variable { color: #90a959; }\n.cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; }\n.cm-s-base16-light span.cm-def { color: #d28445; }\n.cm-s-base16-light span.cm-bracket { color: #202020; }\n.cm-s-base16-light span.cm-tag { color: #ac4142; }\n.cm-s-base16-light span.cm-link { color: #aa759f; }\n.cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; }\n\n.cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC; }\n.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n', '' ]); }, 1044: function(e, t, n) { var r = n(1042); 'string' == typeof r && (r = [[e.i, r, '']]); var i = {}; i.transform = void 0; n(331)(r, i); r.locals && (e.exports = r.locals); }, 1045: function(e, t, n) { var r = n(1043); 'string' == typeof r && (r = [[e.i, r, '']]); var i = {}; i.transform = void 0; n(331)(r, i); r.locals && (e.exports = r.locals); }, 333: function(e, t, n) { 'use strict'; function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _classCallCheck(e, t) { if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function'); } function _possibleConstructorReturn(e, t) { if (!e) throw new ReferenceError( "this hasn't been initialised - super() hasn't been called" ); return !t || ('object' != typeof t && 'function' != typeof t) ? e : t; } function _inherits(e, t) { if ('function' != typeof t && null !== t) throw new TypeError( 'Super expression must either be null or a function, not ' + typeof t ); (e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } })), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : (e.__proto__ = t)); } Object.defineProperty(t, '__esModule', { value: !0 }); var r = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]); } return e; }, i = (function() { function defineProperties(e, t) { for (var n = 0; n < t.length; n++) { var r = t[n]; (r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(e, r.key, r); } } return function(e, t, n) { return t && defineProperties(e.prototype, t), n && defineProperties(e, n), e; }; })(), o = n(0), a = _interopRequireDefault(o), s = n(1), l = _interopRequireDefault(s), c = n(332), u = _interopRequireDefault(c), d = n(1041), p = _interopRequireDefault(d); n(1038), n(1044), n(1045); var f = { mode: 'jsx', lineNumbers: !1, lineWrapping: !0, smartIndent: !1, matchBrackets: !0, viewportMargin: 1 / 0 }, h = 10, g = (function(e) { function Editor() { _classCallCheck(this, Editor); var e = _possibleConstructorReturn( this, (Editor.__proto__ || Object.getPrototypeOf(Editor)).call(this) ); return (e.handleChange = (0, u.default)( e.handleChange.bind(e), h )), e; } return _inherits(Editor, e), i(Editor, [ { key: 'shouldComponentUpdate', value: function shouldComponentUpdate() { return !1; } }, { key: 'handleChange', value: function handleChange(e) { this.props.onChange(e); } }, { key: 'render', value: function render() { var e = this.props.code, t = this.context.config.highlightTheme, n = r({}, f, { theme: t }); return a.default.createElement(p.default, { value: e, onChange: this.handleChange, options: n }); } } ]), Editor; })(o.Component); (g.propTypes = { code: l.default.string.isRequired, onChange: l.default.func.isRequired }), (g.contextTypes = { config: l.default.object.isRequired }), (t.default = g); } });